GitLab's annual major release is around the corner. Along with a lot of new and exciting features, there will be a few breaking changes. Learn more here.

Commit 982872e7 authored by David Barbion's avatar David Barbion Committed by Bkg2k
Browse files

feat: add rpi4 support

parent 0d3416e3
......@@ -96,6 +96,13 @@ build rpi3:
- tags
variables:
ARCH: 'rpi3'
build rpi4:
<<: *build_definition
only:
- master
- tags
variables:
ARCH: 'rpi4'
build x86_64:
<<: *build_definition
when: manual
......@@ -148,6 +155,15 @@ build rpi3 for test:
- master
variables:
ARCH: 'rpi3'
build rpi4 for test:
<<: *build_definition
when: manual
only:
- branches
except:
- master
variables:
ARCH: 'rpi4'
build x86_64 for test:
<<: *build_definition
when: manual
......
......@@ -13,6 +13,11 @@ All notable changes to this project will be documented in this file.
- Major system upgrade. See https://github.com/buildroot/buildroot/blob/2020.02/CHANGES#L1-L1427 for the full log
- Bump virtualgamepads to v1.4.0 and added fixes for nodejs 12
- Bump rpi-firmware to v1.20200212
## [6.2]
- Major system upgrade. See https://github.com/buildroot/buildroot/blob/2020.02/CHANGES#L1-L1427 for the full log
- Bump virtualgamepads to v1.4.0 and added fixes for nodejs 12
- Bump rpi-firmware to v1.20200212
- Bump megatools to 1.10.2
- Fix Omxplayer after Ffmpeg bump
- Fix Kodi after Ffmpeg bump
- Add WiringPi progs abd libs
......
......@@ -213,6 +213,7 @@ menu "Utils"
source "$BR2_EXTERNAL_RECALBOX_PATH/package/nanoarch/Config.in"
source "$BR2_EXTERNAL_RECALBOX_PATH/package/raspi2png/Config.in"
source "$BR2_EXTERNAL_RECALBOX_PATH/package/rgbds/Config.in"
source "$BR2_EXTERNAL_RECALBOX_PATH/package/rpi-userland-tools/Config.in"
endmenu
menu "Small TFT Screen"
source "$BR2_EXTERNAL_RECALBOX_PATH/package/rpi-fbcp/Config.in"
......
......@@ -64,11 +64,10 @@ RECALBOX_IMG="${RECALBOX_BINARIES_DIR}/recalbox-${RECALBOX_TARGET_LOWER}.img"
echo -e "\n----- Generating images/recalbox files -----\n"
case "${RECALBOX_TARGET}" in
RPI0|RPI1|RPI2|RPI3)
# /boot
RPI0|RPI1|RPI2|RPI3|RPI4)
# /boot
echo "generating boot"
cp -f "${BINARIES_DIR}/"*.dtb "${BINARIES_DIR}/rpi-firmware"
cp -f "${BINARIES_DIR}/"*.dtb "${BINARIES_DIR}/rpi-firmware"
rm -rf "${BINARIES_DIR}/rpi-firmware/boot" || exit 1
mkdir -p "${BINARIES_DIR}/rpi-firmware/boot" || exit 1
"${BUILD_DIR}/linux-custom/scripts/mkknlimg" "${BINARIES_DIR}/zImage" "${BINARIES_DIR}/rpi-firmware/boot/linux"
......
......@@ -21,7 +21,11 @@ case "$1" in
[ $? = "0" ] && tvservice -e "$videoMode"
settings_lang="`$systemsetting -command load -key system.language`"
recallog "starting emulationstation with lang = $settings_lang"
HOME=/recalbox/share/system LANG="${settings_lang}.UTF-8" SDL_VIDEO_GL_DRIVER=/usr/lib/libGLESv2.so SDL_VIDEO_EGL_DRIVER=/usr/lib/libGLESv2.so SDL_NOMOUSE=1 start-stop-daemon -S -q -m -p /var/run/emulationstation.pid --exec /usr/bin/emulationstation &
if grep -q rpi4 /recalbox/recalbox.arch; then
HOME=/recalbox/share/system LANG="${settings_lang}.UTF-8" SDL_VIDEO_GL_DRIVER=/usr/lib/libGLESv2.so SDL_VIDEO_EGL_DRIVER=/usr/lib/libEGL.so SDL_NOMOUSE=1 start-stop-daemon -S -q -m -p /var/run/emulationstation.pid --exec /usr/bin/emulationstation &
else
HOME=/recalbox/share/system LANG="${settings_lang}.UTF-8" SDL_VIDEO_GL_DRIVER=/usr/lib/libGLESv2.so SDL_VIDEO_EGL_DRIVER=/usr/lib/libGLESv2.so SDL_NOMOUSE=1 start-stop-daemon -S -q -m -p /var/run/emulationstation.pid --exec /usr/bin/emulationstation &
fi
fi
;;
stop)
......
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
CONFIG_USB_HID=y
CONFIG_NLS_ISO8859_1=y
CONFIG_NLS_UTF8=y
CONFIG_SQUASHFS=y
CONFIG_OVERLAY_FS=y
--- a/drivers/hid/hid-input.c 2015-04-14 01:05:54.000000000 +0200
+++ b/drivers/hid/hid-input.c 2015-06-29 16:06:50.546064561 +0200
@@ -602,11 +602,11 @@
/* These usage IDs map directly to the usage codes. */
case HID_GD_X: case HID_GD_Y: case HID_GD_Z:
case HID_GD_RX: case HID_GD_RY: case HID_GD_RZ:
- if (field->flags & HID_MAIN_ITEM_RELATIVE)
- map_rel(usage->hid & 0xf);
- else
- map_abs_clear(usage->hid & 0xf);
- break;
+// if (field->flags & HID_MAIN_ITEM_RELATIVE)
+// map_rel(usage->hid & 0xf);
+// else
+// map_abs_clear(usage->hid & 0xf);
+// break;
case HID_GD_SLIDER: case HID_GD_DIAL: case HID_GD_WHEEL:
if (field->flags & HID_MAIN_ITEM_RELATIVE)
diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
index 16f0188d9..60986898f 100644
--- a/drivers/hid/hid-quirks.c
+++ b/drivers/hid/hid-quirks.c
@@ -177,6 +177,7 @@ static const struct hid_device_id hid_quirks[] = {
{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD2, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
{ HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_XIN_MO_DUAL_ARCADE), HID_QUIRK_MULTI_INPUT },
+ { HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_THT_2P_ARCADE), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
{ HID_USB_DEVICE(USB_VENDOR_ID_XENTA, USB_DEVICE_ID_AIRMOUSE_MX3), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE },
{ 0 }
diff --git a/drivers/hid/hid-wiimote-modules.c b/drivers/hid/hid-wiimote-modules.c
index 4390eee..76ed60b 100644
--- a/drivers/hid/hid-wiimote-modules.c
+++ b/drivers/hid/hid-wiimote-modules.c
@@ -1113,12 +1113,12 @@ static void wiimod_classic_in_ext(struct wiimote_data *wdata, const __u8 *ext)
rt <<= 1;
lt <<= 1;
- input_report_abs(wdata->extension.input, ABS_HAT1X, lx - 0x20);
- input_report_abs(wdata->extension.input, ABS_HAT1Y, ly - 0x20);
- input_report_abs(wdata->extension.input, ABS_HAT2X, rx - 0x20);
- input_report_abs(wdata->extension.input, ABS_HAT2Y, ry - 0x20);
- input_report_abs(wdata->extension.input, ABS_HAT3X, rt);
- input_report_abs(wdata->extension.input, ABS_HAT3Y, lt);
+ input_report_abs(wdata->extension.input, ABS_HAT0X, lx - 0x20);
+ input_report_abs(wdata->extension.input, ABS_HAT0Y, ly - 0x20);
+ input_report_abs(wdata->extension.input, ABS_HAT1X, rx - 0x20);
+ input_report_abs(wdata->extension.input, ABS_HAT1Y, ry - 0x20);
+ input_report_abs(wdata->extension.input, ABS_HAT2X, rt);
+ input_report_abs(wdata->extension.input, ABS_HAT2Y, lt);
input_report_key(wdata->extension.input,
wiimod_classic_map[WIIMOD_CLASSIC_KEY_RIGHT],
@@ -1228,12 +1228,16 @@ static int wiimod_classic_probe(const struct wiimod_ops *ops,
wdata->extension.input->keybit);
set_bit(EV_ABS, wdata->extension.input->evbit);
+ set_bit(ABS_HAT0X, wdata->extension.input->absbit);
+ set_bit(ABS_HAT0Y, wdata->extension.input->absbit);
set_bit(ABS_HAT1X, wdata->extension.input->absbit);
set_bit(ABS_HAT1Y, wdata->extension.input->absbit);
set_bit(ABS_HAT2X, wdata->extension.input->absbit);
set_bit(ABS_HAT2Y, wdata->extension.input->absbit);
- set_bit(ABS_HAT3X, wdata->extension.input->absbit);
- set_bit(ABS_HAT3Y, wdata->extension.input->absbit);
+ input_set_abs_params(wdata->extension.input,
+ ABS_HAT0X, -30, 30, 1, 1);
+ input_set_abs_params(wdata->extension.input,
+ ABS_HAT0Y, -30, 30, 1, 1);
input_set_abs_params(wdata->extension.input,
ABS_HAT1X, -30, 30, 1, 1);
input_set_abs_params(wdata->extension.input,
@@ -1242,10 +1246,6 @@ static int wiimod_classic_probe(const struct wiimod_ops *ops,
ABS_HAT2X, -30, 30, 1, 1);
input_set_abs_params(wdata->extension.input,
ABS_HAT2Y, -30, 30, 1, 1);
- input_set_abs_params(wdata->extension.input,
- ABS_HAT3X, -30, 30, 1, 1);
- input_set_abs_params(wdata->extension.input,
- ABS_HAT3Y, -30, 30, 1, 1);
ret = input_register_device(wdata->extension.input);
if (ret)
diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
index aa4e431cb..e532c3d52 100644
--- a/drivers/input/joystick/xpad.c
+++ b/drivers/input/joystick/xpad.c
@@ -86,6 +86,8 @@
#define XPAD_PKT_LEN 64
+#define CONFIG_JOYSTICK_XPAD_LEDS 1
+
/*
* xbox d-pads should map to buttons, as is required for DDR pads
* but we map them to axes when possible to simplify things
@@ -1769,12 +1771,13 @@ static int xpad_probe(struct usb_interface *intf, const struct usb_device_id *id
if (dpad_to_buttons)
xpad->mapping |= MAP_DPAD_TO_BUTTONS;
- if (triggers_to_buttons)
- xpad->mapping |= MAP_TRIGGERS_TO_BUTTONS;
if (sticks_to_null)
xpad->mapping |= MAP_STICKS_TO_NULL;
}
+ if (triggers_to_buttons)
+ xpad->mapping |= MAP_TRIGGERS_TO_BUTTONS;
+
if (xpad->xtype == XTYPE_XBOXONE &&
intf->cur_altsetting->desc.bInterfaceNumber != 0) {
/*
diff --git a/include/linux/hid.h b/include/linux/hid.h
index 251a1d3..e15f38f 100644
--- a/include/linux/hid.h
+++ b/include/linux/hid.h
@@ -305,7 +305,7 @@ struct hid_item {
/*
* Increase this if you need to configure more HID quirks at module load time
*/
-#define MAX_USBHID_BOOT_QUIRKS 4
+#define MAX_USBHID_BOOT_QUIRKS 40
#define HID_QUIRK_INVERT 0x00000001
#define HID_QUIRK_NOTOUCH 0x00000002
......@@ -161,6 +161,7 @@ BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y
BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SIXAXIS=y
BR2_PACKAGE_BLUEZ5_UTILS_TEST=y
BR2_PACKAGE_CRDA=y
BR2_PACKAGE_DHCPCD=y
BR2_PACKAGE_DROPBEAR=y
BR2_PACKAGE_GESFTPSERVER=y
BR2_PACKAGE_IW=y
......@@ -177,6 +178,7 @@ BR2_PACKAGE_HTOP=y
BR2_PACKAGE_PROCPS_NG=y
BR2_PACKAGE_TAR=y
BR2_PACKAGE_UTIL_LINUX_SETTERM=y
BR2_PACKAGE_UTIL_LINUX_RFKILL=y
BR2_PACKAGE_NANO=y
BR2_PACKAGE_VIM=y
BR2_PACKAGE_UBOOT_XU4=y
......
......@@ -135,6 +135,8 @@ BR2_PACKAGE_PYTHON_PYGAME=y
BR2_PACKAGE_PYTHON_PYGAME_IMAGE=y
BR2_PACKAGE_PYTHON_PYGAME_FONT=y
BR2_PACKAGE_LIBVPX=y
BR2_PACKAGE_TCL=y
BR2_PACKAGE_EXPECT=y
BR2_PACKAGE_CA_CERTIFICATES=y
BR2_PACKAGE_JPEG_TURBO=y
BR2_PACKAGE_LIBOPENSSL_BIN=y
......@@ -149,6 +151,7 @@ BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y
BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SIXAXIS=y
BR2_PACKAGE_BLUEZ5_UTILS_TEST=y
BR2_PACKAGE_CRDA=y
BR2_PACKAGE_DHCPCD=y
BR2_PACKAGE_DROPBEAR=y
BR2_PACKAGE_GESFTPSERVER=y
BR2_PACKAGE_IW=y
......@@ -219,7 +222,6 @@ BR2_PACKAGE_RETROARCH=y
BR2_PACKAGE_SCUMMVM=y
BR2_PACKAGE_LIBRETRO_ATARI800=y
BR2_PACKAGE_LIBRETRO_FREEINTV=y
BR2_PACKAGE_LIBRETRO_81=y
BR2_PACKAGE_LIBRETRO_BEETLE_LYNX=y
BR2_PACKAGE_LIBRETRO_BEETLE_NGP=y
BR2_PACKAGE_LIBRETRO_BEETLE_PCE_FAST=y
......
......@@ -156,6 +156,7 @@ BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y
BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SIXAXIS=y
BR2_PACKAGE_BLUEZ5_UTILS_TEST=y
BR2_PACKAGE_CRDA=y
BR2_PACKAGE_DHCPCD=y
BR2_PACKAGE_DROPBEAR=y
BR2_PACKAGE_GESFTPSERVER=y
BR2_PACKAGE_IW=y
......@@ -232,7 +233,6 @@ BR2_PACKAGE_RETROARCH=y
BR2_PACKAGE_SCUMMVM=y
BR2_PACKAGE_LIBRETRO_ATARI800=y
BR2_PACKAGE_LIBRETRO_FREEINTV=y
BR2_PACKAGE_LIBRETRO_81=y
BR2_PACKAGE_LIBRETRO_BEETLE_LYNX=y
BR2_PACKAGE_LIBRETRO_BEETLE_NGP=y
BR2_PACKAGE_LIBRETRO_BEETLE_PCE_FAST=y
......
......@@ -141,6 +141,7 @@ BR2_PACKAGE_SNAPPY=y
BR2_PACKAGE_LIBVPX=y
BR2_PACKAGE_CA_CERTIFICATES=y
BR2_PACKAGE_LIBOPENSSL_BIN=y
BR2_PACKAGE_WIRINGPI=y
BR2_PACKAGE_X264=y
BR2_PACKAGE_LIBCURL_CURL=y
BR2_PACKAGE_BOOST_ATOMIC=y
......@@ -155,6 +156,7 @@ BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y
BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SIXAXIS=y
BR2_PACKAGE_BLUEZ5_UTILS_TEST=y
BR2_PACKAGE_CRDA=y
BR2_PACKAGE_DHCPCD=y
BR2_PACKAGE_DROPBEAR=y
BR2_PACKAGE_GESFTPSERVER=y
BR2_PACKAGE_IW=y
......@@ -234,7 +236,6 @@ BR2_PACKAGE_RETROARCH=y
BR2_PACKAGE_SCUMMVM=y
BR2_PACKAGE_LIBRETRO_ATARI800=y
BR2_PACKAGE_LIBRETRO_FREEINTV=y
BR2_PACKAGE_LIBRETRO_81=y
BR2_PACKAGE_LIBRETRO_BEETLE_LYNX=y
BR2_PACKAGE_LIBRETRO_BEETLE_NGP=y
BR2_PACKAGE_LIBRETRO_BEETLE_PCE_FAST=y
......
BR2_arm=y
BR2_cortex_a72=y
BR2_ARM_FPU_NEON_VFPV4=y
BR2_OPTIMIZE_3=y
BR2_SHARED_STATIC_LIBS=y
BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/patches $(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/patches"
BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
BR2_GCC_VERSION_7_X=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_GCC_ENABLE_LTO=y
BR2_GCC_ENABLE_OPENMP=y
BR2_TARGET_OPTIMIZATION="-pipe -fsigned-char"
BR2_TARGET_GENERIC_HOSTNAME="RECALBOX"
BR2_TARGET_GENERIC_ISSUE="PLAY AGAIN"
BR2_INIT_SYSV=y
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
BR2_TARGET_GENERIC_ROOT_PASSWD="recalboxroot"
BR2_SYSTEM_BIN_SH_BASH=y
BR2_TARGET_GENERIC_GETTY_PORT="tty1"
BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y
# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
BR2_ENABLE_LOCALE_WHITELIST="C ar ca cs de el en_US es eu_ES fr hu it ja_JP ko lb_LU lv_LV nb nn_NO nl no pl pt ru_RU sv_SE tr zh_CN zh_TW"
BR2_GENERATE_LOCALE="en_US.UTF-8 ar_YE.UTF-8 ca_ES.UTF-8 cs_CZ.UTF-8 de_DE.UTF-8 el_GR.UTF-8 es_ES.UTF-8 eu_ES.UTF-8 fr_FR.UTF-8 hu_HU.UTF-8 it_IT.UTF-8 ja_JP.UTF-8 ko_KR.UTF-8 lb_LU.UTF-8 lv_LV.UTF-8 nb_NO.UTF-8 nn_NO.UTF-8 nl_NL.UTF-8 pl_PL.UTF-8 pt_BR.UTF-8 ru_RU.UTF-8 sv_SE.UTF-8 tr_TR.UTF-8 zh_CN.UTF-8 zh_TW.UTF-8"
BR2_TARGET_TZ_INFO=y
BR2_TARGET_LOCALTIME="Europe/Paris"
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/fsoverlay $(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/fsoverlay"
BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/recalbox-patch-target.sh"
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/copy-recalbox-archives.sh"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,748d8384cef4427e26bada774aa153568acefb21)/linux-748d8384cef4427e26bada774aa153568acefb21.tar.gz"
BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel_patches_4.19"
BR2_LINUX_KERNEL_DEFCONFIG="bcm2711"
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/rpi/kernel-4.19-defconfig-fragment.config"
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2711-rpi-4-b"
BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_RECALBOX_PATH)/board/recalbox/busybox.custom.config"
BR2_PACKAGE_ALSA_UTILS=y
BR2_PACKAGE_ALSA_UTILS_AMIXER=y
BR2_PACKAGE_BLUEZ_ALSA=y
BR2_PACKAGE_FLUIDSYNTH_DBUS=y
BR2_PACKAGE_KODI=y
BR2_PACKAGE_KODI_ALSA_LIB=y
BR2_PACKAGE_KODI_AVAHI=y
BR2_PACKAGE_KODI_BLUEZ=y
BR2_PACKAGE_KODI_DBUS=y
BR2_PACKAGE_KODI_EVENTCLIENTS=y
BR2_PACKAGE_KODI_LIBCEC=y
BR2_PACKAGE_KODI_LCMS2=y
BR2_PACKAGE_KODI_LIBMICROHTTPD=y
BR2_PACKAGE_KODI_LIBNFS=y
BR2_PACKAGE_KODI_MYSQL=y
BR2_PACKAGE_KODI_LIBSHAIRPLAY=y
BR2_PACKAGE_KODI_LIBSMBCLIENT=y
BR2_PACKAGE_KODI_LIBTHEORA=y
BR2_PACKAGE_KODI_UPNP=y
BR2_PACKAGE_KODI_AUDIODECODER_MODPLUG=y
BR2_PACKAGE_KODI_AUDIODECODER_NOSEFART=y
BR2_PACKAGE_KODI_AUDIODECODER_SIDPLAY=y
BR2_PACKAGE_KODI_AUDIODECODER_SNESAPU=y
BR2_PACKAGE_KODI_AUDIODECODER_STSOUND=y
BR2_PACKAGE_KODI_AUDIODECODER_TIMIDITY=y
BR2_PACKAGE_KODI_AUDIODECODER_VGMSTREAM=y
BR2_PACKAGE_KODI_AUDIOENCODER_FLAC=y
BR2_PACKAGE_KODI_AUDIOENCODER_LAME=y
BR2_PACKAGE_KODI_AUDIOENCODER_VORBIS=y
BR2_PACKAGE_KODI_AUDIOENCODER_WAV=y
BR2_PACKAGE_KODI_PERIPHERAL_JOYSTICK=y
BR2_PACKAGE_KODI_PERIPHERAL_STEAMCONTROLLER=y
BR2_PACKAGE_KODI_PERIPHERAL_XARCADE=y
BR2_PACKAGE_KODI_INPUTSTREAM_ADAPTIVE=y
BR2_PACKAGE_KODI_INPUTSTREAM_RTMP=y
BR2_PACKAGE_KODI_PVR_ARGUSTV=y
BR2_PACKAGE_KODI_PVR_DVBLINK=y
BR2_PACKAGE_KODI_PVR_DVBVIEWER=y
BR2_PACKAGE_KODI_PVR_FILMON=y
BR2_PACKAGE_KODI_PVR_HDHOMERUN=y
BR2_PACKAGE_KODI_PVR_HTS=y
BR2_PACKAGE_KODI_PVR_IPTVSIMPLE=y
BR2_PACKAGE_KODI_PVR_MEDIAPORTAL_TVSERVER=y
BR2_PACKAGE_KODI_PVR_MYTHTV=y
BR2_PACKAGE_KODI_PVR_NEXTPVR=y
BR2_PACKAGE_KODI_PVR_NJOY=y
BR2_PACKAGE_KODI_PVR_PCTV=y
BR2_PACKAGE_KODI_PVR_STALKER=y
BR2_PACKAGE_KODI_PVR_VBOX=y
BR2_PACKAGE_KODI_PVR_VDR_VNSI=y
BR2_PACKAGE_KODI_PVR_VUPLUS=y
BR2_PACKAGE_KODI_PVR_WMC=y
BR2_PACKAGE_P7ZIP=y
BR2_PACKAGE_UNZIP=y
BR2_PACKAGE_XZ=y
BR2_PACKAGE_ZIP=y
BR2_PACKAGE_BINUTILS=y
BR2_PACKAGE_DIFFUTILS=y
BR2_PACKAGE_CIFS_UTILS=y
BR2_PACKAGE_DOSFSTOOLS=y
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y
BR2_PACKAGE_EXFAT=y
BR2_PACKAGE_EXFAT_UTILS=y
BR2_PACKAGE_NTFS_3G=y
BR2_PACKAGE_NTFS_3G_NTFSPROGS=y
BR2_PACKAGE_FBDUMP=y
BR2_PACKAGE_FBGRAB=y
BR2_PACKAGE_FBV=y
BR2_PACKAGE_MESA3D=y
BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_KMSRO=y
BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D=y
BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4=y
BR2_PACKAGE_MESA3D_OPENGL_ES=y
BR2_PACKAGE_SDL_IMAGE_XPM=y
BR2_PACKAGE_SDL_MIXER=y
BR2_PACKAGE_SDL_NET=y
BR2_PACKAGE_SDL2_KMSDRM=y
BR2_PACKAGE_SDL2_OPENGLES=y
BR2_PACKAGE_QT5=y
BR2_PACKAGE_QT5BASE_GUI=y
BR2_PACKAGE_QT5BASE_WIDGETS=y
BR2_PACKAGE_XKEYBOARD_CONFIG=y
BR2_PACKAGE_B43_FIRMWARE=y
BR2_PACKAGE_RPI_FIRMWARE=y
BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4=y
BR2_PACKAGE_RPI_FIRMWARE_X=y
BR2_PACKAGE_UX500_FIRMWARE=y
BR2_PACKAGE_WILC1000_FIRMWARE=y
BR2_PACKAGE_ZD1211_FIRMWARE=y
BR2_PACKAGE_DBUS_CPP=y
BR2_PACKAGE_DBUS_GLIB=y
BR2_PACKAGE_DBUS_PYTHON=y
BR2_PACKAGE_DBUS_TRIGGERD=y
BR2_PACKAGE_EUDEV_RULES_GEN=y
BR2_PACKAGE_EVTEST=y
BR2_PACKAGE_I2C_TOOLS=y
BR2_PACKAGE_KBD=y
BR2_PACKAGE_LINUXCONSOLETOOLS=y
BR2_PACKAGE_LIRC_TOOLS=y
BR2_PACKAGE_PARTED=y
BR2_PACKAGE_USBMOUNT=y
BR2_PACKAGE_USBUTILS=y
BR2_PACKAGE_NODEJS=y
BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL="request"
BR2_PACKAGE_PYTHON_PY_PYC=y
BR2_PACKAGE_PYTHON_GOBJECT=y
BR2_PACKAGE_PYTHON_PAHO_MQTT=y
BR2_PACKAGE_PYTHON_PYGAME=y
BR2_PACKAGE_PYTHON_PYGAME_IMAGE=y
BR2_PACKAGE_PYTHON_PYGAME_FONT=y
BR2_PACKAGE_SNAPPY=y
BR2_PACKAGE_CA_CERTIFICATES=y
BR2_PACKAGE_LIBOPENSSL_BIN=y
BR2_PACKAGE_X264=y
BR2_PACKAGE_LIBCURL_CURL=y
BR2_PACKAGE_LIBIDN=y
BR2_PACKAGE_BOOST=y
BR2_PACKAGE_BOOST_ATOMIC=y
BR2_PACKAGE_PROTOBUF=y
BR2_PACKAGE_LIBUNISTRING=y
BR2_PACKAGE_NCURSES_WCHAR=y
BR2_PACKAGE_NCURSES_TARGET_PROGS=y
# BR2_PACKAGE_AVAHI_AUTOIPD is not set
BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED=y
BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y
BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SIXAXIS=y
BR2_PACKAGE_BLUEZ5_UTILS_TEST=y
BR2_PACKAGE_CRDA=y
BR2_PACKAGE_DROPBEAR=y
BR2_PACKAGE_GESFTPSERVER=y
BR2_PACKAGE_IW=y
BR2_PACKAGE_MOSQUITTO=y
BR2_PACKAGE_NTP=y
BR2_PACKAGE_RSYNC=y
BR2_PACKAGE_SAMBA4=y
BR2_PACKAGE_WGET=y
BR2_PACKAGE_WPA_SUPPLICANT=y
BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
BR2_PACKAGE_WPA_SUPPLICANT_DBUS=y
BR2_PACKAGE_WPA_SUPPLICANT_DBUS_INTROSPECTION=y
BR2_PACKAGE_HTOP=y
BR2_PACKAGE_PROCPS_NG=y
BR2_PACKAGE_TAR=y
BR2_PACKAGE_UTIL_LINUX_LIBMOUNT=y
BR2_PACKAGE_NANO=y
BR2_PACKAGE_VIM=y
# BR2_TARGET_ROOTFS_TAR is not set
BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_GUICHAN=y
BR2_PACKAGE_MOONLIGHT_EMBEDDED=y
BR2_PACKAGE_PYTHON_RPIGPIO=y
BR2_PACKAGE_RECALBOX_CONFIGGEN=y
BR2_PACKAGE_RECALBOX_MANAGER2=y
BR2_PACKAGE_RECALBOX_SYSTEM=y
BR2_PACKAGE_RECALBOX_TARGET_RPI4=y
BR2_PACKAGE_RECALBOX_THEMES=y
BR2_PACKAGE_RGB_PI=y
BR2_PACKAGE_RECALBOX_HARDWARE=y
BR2_PACKAGE_RECALBOX_SETTINGS=y
BR2_PACKAGE_PYTHON_ES_SCRAPER=y
BR2_PACKAGE_RECALBOX_EMULATIONSTATION2=y
BR2_PACKAGE_DB9_GPIO_RPI=y
BR2_PACKAGE_GAMECON_GPIO_RPI=y
BR2_PACKAGE_MK_ARCADE_JOYSTICK_RPI=y
BR2_PACKAGE_RECALBOX_RETROGAME=y
BR2_PACKAGE_STEAMCONTROLLER=y
BR2_PACKAGE_VIRTUALGAMEPADS=y
BR2_PACKAGE_XARCADE2JSTICK=y
BR2_PACKAGE_LINAPPLE_PIE=y
BR2_PACKAGE_MUPEN64PLUS_AUDIO_SDL=y
BR2_PACKAGE_MUPEN64PLUS_CORE=y
BR2_PACKAGE_MUPEN64PLUS_INPUT_SDL=y
BR2_PACKAGE_MUPEN64PLUS_RSPHLE=y
BR2_PACKAGE_MUPEN64PLUS_GLIDEN64=y
BR2_PACKAGE_MUPEN64PLUS_VIDEO_RICE=y
BR2_PACKAGE_ADVANCEMAME=y
BR2_PACKAGE_AMIBERRY=y
BR2_PACKAGE_MUPEN64PLUS_UICONSOLE=y
BR2_PACKAGE_ORICUTRON=y
BR2_PACKAGE_PPSSPP=y
BR2_PACKAGE_SIMCOUPE=y
BR2_PACKAGE_DOSBOX=y
BR2_PACKAGE_GSPLUS=y
BR2_PACKAGE_HYPSEUS=y
BR2_PACKAGE_REICAST=y
BR2_PACKAGE_OPENBOR=y
BR2_PACKAGE_LIBRETRO_81=y
BR2_PACKAGE_LIBRETRO_2048=y
BR2_PACKAGE_RESIDUALVM=y
BR2_PACKAGE_RETROARCH=y
BR2_PACKAGE_SCUMMVM=y
BR2_PACKAGE_SOLARUS_RECALBOX=y
BR2_PACKAGE_LIBRETRO_ATARI800=y
BR2_PACKAGE_LIBRETRO_FREEINTV=y
BR2_PACKAGE_LIBRETRO_BEETLE_LYNX=y
BR2_PACKAGE_LIBRETRO_BEETLE_NGP=y
BR2_PACKAGE_LIBRETRO_BEETLE_PCE_FAST=y
BR2_PACKAGE_LIBRETRO_BEETLE_SUPERGRAFX=y
BR2_PACKAGE_LIBRETRO_BEETLE_VB=y
BR2_PACKAGE_LIBRETRO_BEETLE_WSWAN=y
BR2_PACKAGE_LIBRETRO_BLUEMSX=y
BR2_PACKAGE_LIBRETRO_CAP32=y
BR2_PACKAGE_LIBRETRO_CROCODS=y
BR2_PACKAGE_LIBRETRO_DINOTHAWR=y
BR2_PACKAGE_LIBRETRO_ECWOLF=y
BR2_PACKAGE_LIBRETRO_FBNEO=y
BR2_PACKAGE_LIBRETRO_FCEUMM=y
BR2_PACKAGE_LIBRETRO_FCEUNEXT=y
BR2_PACKAGE_LIBRETRO_FLYCAST=y
BR2_PACKAGE_LIBRETRO_FMSX=y
BR2_PACKAGE_LIBRETRO_FREECHAF=y
BR2_PACKAGE_LIBRETRO_FUSE=y
BR2_PACKAGE_LIBRETRO_GAMBATTE=y
BR2_PACKAGE_LIBRETRO_GEARSYSTEM=y
BR2_PACKAGE_LIBRETRO_GENESISPLUSGX=y
BR2_PACKAGE_LIBRETRO_GPSP=y
BR2_PACKAGE_LIBRETRO_GW=y
BR2_PACKAGE_LIBRETRO_HANDY=y
BR2_PACKAGE_LIBRETRO_HATARI=y
BR2_PACKAGE_LIBRETRO_IMAGEVIEWER=y
BR2_PACKAGE_LIBRETRO_LUTRO=y
BR2_PACKAGE_LIBRETRO_MAME2000=y
BR2_PACKAGE_LIBRETRO_MAME2003_PLUS=y
BR2_PACKAGE_LIBRETRO_MAME2003=y
BR2_PACKAGE_LIBRETRO_MAME2010=y
BR2_PACKAGE_LIBRETRO_MAME2015=y
BR2_PACKAGE_LIBRETRO_METEOR=y
BR2_PACKAGE_LIBRETRO_MGBA=y
BR2_PACKAGE_LIBRETRO_MRBOOM=y
BR2_PACKAGE_LIBRETRO_MU=y
BR2_PACKAGE_LIBRETRO_MUPEN64PLUS_NX=y
BR2_PACKAGE_LIBRETRO_NESTOPIA=y
BR2_PACKAGE_LIBRETRO_NP2KAI=y
BR2_PACKAGE_LIBRETRO_NXENGINE=y
BR2_PACKAGE_LIBRETRO_O2EM=y
BR2_PACKAGE_LIBRETRO_OPERA=y
BR2_PACKAGE_LIBRETRO_PARALLEL_N64=y
BR2_PACKAGE_LIBRETRO_PCSX_REARMED=y
BR2_PACKAGE_LIBRETRO_PICODRIVE=y
BR2_PACKAGE_LIBRETRO_POKEMINI=y
BR2_PACKAGE_LIBRETRO_PRBOOM=y
BR2_PACKAGE_LIBRETRO_PROSYSTEM=y
BR2_PACKAGE_LIBRETRO_PX68K=y
BR2_PACKAGE_LIBRETRO_QUASI88=y
BR2_PACKAGE_LIBRETRO_QUICKNES=y
BR2_PACKAGE_LIBRETRO_RACE=y
BR2_PACKAGE_LIBRETRO_REMINISCENCE=y
BR2_PACKAGE_LIBRETRO_SAMEBOY=y
BR2_PACKAGE_LIBRETRO_SNES9X=y
BR2_PACKAGE_LIBRETRO_SNES9X2002=y
BR2_PACKAGE_LIBRETRO_SNES9X2005=y
BR2_PACKAGE_LIBRETRO_SNES9X2010=y
BR2_PACKAGE_LIBRETRO_STELLA=y
BR2_PACKAGE_LIBRETRO_STELLA2014=y
BR2_PACKAGE_LIBRETRO_TGBDUAL=y
BR2_PACKAGE_LIBRETRO_THEODORE=y
BR2_PACKAGE_LIBRETRO_TIC80=y
BR2_PACKAGE_LIBRETRO_TYRQUAKE=y
BR2_PACKAGE_LIBRETRO_UAE=y
BR2_PACKAGE_LIBRETRO_UZEM=y
BR2_PACKAGE_LIBRETRO_VECX=y
BR2_PACKAGE_LIBRETRO_VICE=y
BR2_PACKAGE_LIBRETRO_XMIL=y