From 1125710fca16cacf8b9d088f33053d7e2caca028 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Andr=C3=A9=20Santoni?= Date: Mon, 24 Jun 2019 17:14:29 +0200 Subject: [PATCH] Add LudOS --- README.md | 20 +- build_all.sh | 12 + config/path | 4 + distributions/LudOS/LudOS.png | Bin 0 -> 1074 bytes distributions/LudOS/LudOS_40x40.png | Bin 0 -> 703 bytes distributions/LudOS/addons/fanart.png | 0 distributions/LudOS/options | 227 ++++++++++++++++++ distributions/LudOS/splash/boot-logo.bmp.gz | Bin 0 -> 10303 bytes distributions/LudOS/splash/splash-1080.png | Bin 0 -> 17194 bytes distributions/LudOS/splash/splash-1200.png | Bin 0 -> 18266 bytes distributions/LudOS/splash/splash-2160.png | Bin 0 -> 50214 bytes distributions/LudOS/splash/splash-720.png | Bin 0 -> 10320 bytes distributions/LudOS/splash/splash-768.png | Bin 0 -> 9892 bytes distributions/LudOS/splash/splash-900.png | Bin 0 -> 12217 bytes distributions/LudOS/version | 8 + .../chrome-depends/libXcursor/package.mk | 3 - .../applespi/modules-load.d/applespi.conf | 1 + packages/linux-drivers/applespi/package.mk | 46 ++++ .../system.d/brcmfmac-firmware.service | 2 +- packages/mediacenter/ludo/package.mk | 57 +++++ .../mediacenter/ludo/system.d/ludo.service | 22 ++ .../mediacenter/ludo/system.d/ludo.target | 10 + .../ludo/tmpfiles.d/ludo-userdirs.conf | 11 + .../mediacenter/ludo/tmpfiles.d/ludo.conf | 4 + .../mediacenter/ludo/udev.d/99-8bitdo.rules | 41 ++++ packages/network/connman/package.mk | 2 + packages/network/samba/config/smb.conf | 88 ++----- packages/security/libgpg-error/package.mk | 1 - packages/sysutils/busybox/package.mk | 2 +- packages/sysutils/systemd/package.mk | 2 +- packages/sysutils/udevil/config/udevil.conf | 2 +- .../3rdparty/bootloader/distroconfig.txt | 5 + packages/x11/lib/libXinerama/package.mk | 2 +- .../fluxbox/system.d/windowmanager.service | 2 +- .../xserver/xorg-server/system.d/xorg.service | 2 +- .../xserver/xorg-server/udev.d/97-xorg.rules | 1 + projects/Generic/linux/linux.x86_64.conf | 5 +- projects/Generic/options | 7 +- .../RPi/devices/RPi4/config/distroconfig.txt | 1 + projects/RPi/options | 12 +- scripts/mkimage | 4 +- 41 files changed, 503 insertions(+), 103 deletions(-) create mode 100755 build_all.sh create mode 100644 distributions/LudOS/LudOS.png create mode 100644 distributions/LudOS/LudOS_40x40.png create mode 100644 distributions/LudOS/addons/fanart.png create mode 100644 distributions/LudOS/options create mode 100644 distributions/LudOS/splash/boot-logo.bmp.gz create mode 100644 distributions/LudOS/splash/splash-1080.png create mode 100644 distributions/LudOS/splash/splash-1200.png create mode 100644 distributions/LudOS/splash/splash-2160.png create mode 100644 distributions/LudOS/splash/splash-720.png create mode 100644 distributions/LudOS/splash/splash-768.png create mode 100644 distributions/LudOS/splash/splash-900.png create mode 100644 distributions/LudOS/version create mode 100644 packages/linux-drivers/applespi/modules-load.d/applespi.conf create mode 100644 packages/linux-drivers/applespi/package.mk create mode 100644 packages/mediacenter/ludo/package.mk create mode 100644 packages/mediacenter/ludo/system.d/ludo.service create mode 100644 packages/mediacenter/ludo/system.d/ludo.target create mode 100644 packages/mediacenter/ludo/tmpfiles.d/ludo-userdirs.conf create mode 100644 packages/mediacenter/ludo/tmpfiles.d/ludo.conf create mode 100644 packages/mediacenter/ludo/udev.d/99-8bitdo.rules diff --git a/README.md b/README.md index 478ebb3172..6f7325778c 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,15 @@ -# LibreELEC +# LudOS -LibreELEC is a 'Just enough OS' Linux distribution for running the award-winning [Kodi](https://kodi.tv) software on popular mediacentre hardware. LibreELEC is a conservative fork of the popular [OpenELEC](http://openelec.tv) project with a stronger focus on pre-release testing and post-release change management. Further information on the project can be found on the [LibreELEC website](https://libreelec.tv). +LudOS is a 'Just enough OS' Linux distribution for running [Ludo](https://ludo.libretro.com) on hardware like PC or the Raspberry Pi. LudOS is based on [LibreELEC](https://libreelec.tv) 9.0 with a few minor changes. -**Issues & Support** +## Installation -Please report issues via the [LibreELEC forum: Bug Reports](https://forum.libreelec.tv/forum-35.html). Please ask support questions in the [LibreELEC forum: Help & Support](https://forum.libreelec.tv/forum-3.html) or ask a member of project staff in the #libreelec IRC channel on Freenode. +To install LudOS, you can download the latest release and flash it on a bootable media like a USB drive or an SD card. Flashing can be done using `dd` or [Etcher](https://www.balena.io/etcher/). Just like you would install LibreELEC or Lakka. Installing LudOS will wipe all previous data on your disk. -**Donations** +## Support -Contributions towards current project funding goals can be sent via PayPal to donations@libreelec.tv +LudOS is not ready for production and contains bugs. However, you can get some help on our [Discord](https://discordapp.com/invite/YXYSEQD). -**License** +## License -LibreELEC original code is released under [GPLv2](https://www.gnu.org/licenses/gpl-2.0.html). - -**Copyright** - -As LibreELEC includes code from many upstream projects it includes many copyright owners. LibreELEC makes NO claim of copyright on any upstream code. However all original LibreELEC authored code is copyright LibreELEC.tv. Patches to upstream code have the same license as the upstream project, unless specified otherwise. For a complete copyright list please checkout the source code to examine license headers. Unless expressly stated otherwise all code submitted to the LibreELEC project (in any form) is licensed under [GPLv2](https://www.gnu.org/licenses/gpl-2.0.html) and copyright is donated to LibreELEC.tv. This approach allows the project to stay manageable in the long term by giving us freedom to maintain the code as part of the whole without the management overhead of preserving contact with every submitter, e.g. GPLv3. You are absolutely free to retain copyright. To retain copyright simply add a copyright header to each submitted code page. If you submit code that is not your own work it is your responsibility to place a header stating the copyright. +The license of LudOS is the same as the one of LibreELEC, but adds some packages like Snes9x or Genesis Plus GX that are protected by a Non-Commercial license. Thus, you can't sell LudOS or a derivative without removing these packages. diff --git a/build_all.sh b/build_all.sh new file mode 100755 index 0000000000..2e15230513 --- /dev/null +++ b/build_all.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +rm -rf target/ + +export IGNORE_VERSION=1 +export OFFICIAL=yes +export DISTRO=LudOS +export THREADCOUNT=8 + +PROJECT=Generic ARCH=x86_64 make image +PROJECT=RPi DEVICE=RPi2 ARCH=arm make noobs +PROJECT=RPi DEVICE=RPi4 ARCH=arm make noobs diff --git a/config/path b/config/path index f6b781428c..fe12f46296 100644 --- a/config/path +++ b/config/path @@ -25,6 +25,10 @@ if [ "$LIBREELEC_VERSION" = "devel" ] ; then BUILD=$ROOT/$BUILD_BASE.$DISTRONAME-${DEVICE:-$PROJECT}.$TARGET_ARCH-$OS_VERSION-$LIBREELEC_VERSION fi +if [ "$IGNORE_VERSION" = "1" ]; then + BUILD=$ROOT/$BUILD_BASE.$DISTRONAME-${DEVICE:-$PROJECT}.$TARGET_ARCH +fi + if [ -n "$BUILD_SUFFIX" ]; then BUILD=$BUILD-$BUILD_SUFFIX fi diff --git a/distributions/LudOS/LudOS.png b/distributions/LudOS/LudOS.png new file mode 100644 index 0000000000000000000000000000000000000000..5d2860bfc1c78386764f180b522d5800d1e3b876 GIT binary patch literal 1074 zcmV-21kL-2P)vNTOCTCmt!s*#_IGZ(M% zgAzo~nAt)(ZZ+tst`g}u_S zs$C7Kmjj!Dq4?;#5W+%}YBvJ2A%v4n+8zd`fIi?9a43Xue1(#M6?T9+3EU5C1x8DL z{|T4@4gzz)Ja7~^37i2g1CFYLzyNRoumRW<%hMr*KY$~^;F7kF0q+7Yh7e{}5=Uj? z+M6|RieLkYIG zQcTB6w9)~)Td3126Y)BmXn${22bDU&;*fGxRVOQ8DqcTMw7=Sl2dS!Wz*KXSwz5TC z1AGnql31sb#&f*`27%i{2!8@E0iOZ;fnOWcxv67n)K5FO;xEVhB{~MxeaqN?UL~gF zH$Ytl+|a~qdo1nbuR0CW>U0Ra|pxM;?gu{7hfx>vm=mc8*=8NaLBqK!70FU$U#cwPjACc%??@SogZnJ1y2&2Y+^)~fQ zbzZ%rEy2geALw12O_{gQw`Pgv^HO3<-3K&U(RAK&Ej3nS zXFHt_sD~4res4@)&{UJfeVRfM0&L`D{22Q_KN80MNT*rudpn;ABi*$WQoR6um zT71o^aYlVkUDpw(&qv=i&PHvO7VM;*V2OZ1;98&`m}~ZBr&CybQk$U28O+8! sK_-*QWHOmdCX>lzGMP*!lUbg>0V)>yT-1Cnp#T5?07*qoM6N<$g5?kH9RL6T literal 0 HcmV?d00001 diff --git a/distributions/LudOS/LudOS_40x40.png b/distributions/LudOS/LudOS_40x40.png new file mode 100644 index 0000000000000000000000000000000000000000..fdde71f8f928842f872552bfa13284c20d0ccd88 GIT binary patch literal 703 zcmV;w0zmzVP)PW(Eoh3JU%|)OK}Dz0hi|w#^W#M%@lP0=j`Go1MR9)Jb*hUwhOBS0CWJafF58kP>#i>tL7~M_khU|!dfGuX>#rAb6aCVJ&_WdQQNZ|>h0poz;M%7 z7%>361*{P}16<0QTu<;^lTy_T17C>BUW@Ztlk07gp=OK{l!!J+nW$%v0()9sL+w(3 z*65pZ6Mc9)&UsPoRHv(A>*~&C1kWZGSy3OW`{HpWhhV?jryh#OfkgatnnzX-9#4G# z20ToR)x1mj4DbUO3?VEK-78lU@go@?wNdY<{2NzNejitl#m9Ieb~Da75s$-0rTs&> z8NoLV7w|93@sVU*ol-~DJL)d=q|tp)buO=5P}iCeY?LMSs?md>q>iS!)O^&by+qH< zt)>Dz0GzaJQw`qbO$waD%Aii$FPq lP-!J+K|w)5K|#UR@f+1!PR6ikN}~V(002ovPDHLkV1nUzG>8BI literal 0 HcmV?d00001 diff --git a/distributions/LudOS/addons/fanart.png b/distributions/LudOS/addons/fanart.png new file mode 100644 index 0000000000..e69de29bb2 diff --git a/distributions/LudOS/options b/distributions/LudOS/options new file mode 100644 index 0000000000..82343c89b1 --- /dev/null +++ b/distributions/LudOS/options @@ -0,0 +1,227 @@ +# LTO (Link Time Optimization) support + LTO_SUPPORT="yes" + +# GOLD (Google Linker) support + GOLD_SUPPORT="yes" + +# HARDENING (security relevant linker and compiler flags) support + HARDENING_SUPPORT="no" + +# Name of the Distro to build (full name, without special characters) + DISTRONAME="LudOS" + +# short project description + DESCRIPTION="LudOS is a user friendly retro gaming OS." + +# Welcome Message for e.g. SSH Server (up to 5 Lines) + GREETING0="##############################################" + GREETING1="# LudOS #" + GREETING2="# https://github.com/libretro/LudOS #" + GREETING3="##############################################" + GREETING4="" + +# Root password to integrate in the target system + ROOT_PASSWORD="ludos" + +# Install glibc locales to the build (yes / no) + GLIBC_LOCALES="no" + +# Mediacenter to use (kodi / no) + MEDIACENTER="ludo" + +# Skins to install (Estuary) +# Space separated list is supported, +# e.g. SKINS="Estuary" + SKINS="Estuary" + +# Default Skin (Estuary) + SKIN_DEFAULT="Estuary" + +# Select whether to use default (upstream xbmc/xbmc) repo, or specific vendor repo + KODI_VENDOR="default" + +# install extra subtitle Fonts for KODI (yes / no) + KODI_EXTRA_FONTS="no" + +# build and install PulseAudio support (yes / no) + PULSEAUDIO_SUPPORT="no" + +# build and install espeak support (yes / no) + ESPEAK_SUPPORT="no" + +# build and install with BluRay support (yes / no) + KODI_BLURAY_SUPPORT="no" + +# build and install with BD+ support +# (BD+ decryption support in KODI) (yes / no) + BLURAY_BDPLUS_SUPPORT="no" + +# build and install with AACS support +# (BD decryption support in KODI) (yes / no) + BLURAY_AACS_SUPPORT="no" + +# build and install with DVDCSS support +# (DVD decryption support in KODI) (yes / no) + KODI_DVDCSS_SUPPORT="no" + +# additional drivers to install: +# for a list of additional drivers see packages/linux-drivers +# Space separated list is supported, +# e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2" + ADDITIONAL_DRIVERS="RTL8192CU RTL8192DU RTL8192EU RTL8188EU RTL8812AU" + +# build and install bluetooth support (yes / no) + BLUETOOTH_SUPPORT="yes" + +# build and install with KODI webfrontend (yes / no) + KODI_WEBSERVER_SUPPORT="no" + +# build and install Avahi (Zeroconf) daemon (yes / no) + AVAHI_DAEMON="no" + +# build with UPnP support (yes / no) + KODI_UPNP_SUPPORT="no" + +# build with MySQL support (mysql / mariadb / none) + KODI_MYSQL_SUPPORT="none" + +# build xbmc with optical drive support (yes / no) + KODI_OPTICAL_SUPPORT="no" + +# build with AirPlay support (stream videos from iDevices to KODI) (yes / no) + KODI_AIRPLAY_SUPPORT="no" + +# build with AirTunes support (stream music from iDevices to KODI) (yes / no) + KODI_AIRTUNES_SUPPORT="no" + +# build with libnfs support (mounting nfs shares with KODI) (yes / no) + KODI_NFS_SUPPORT="no" + +# build with Samba Client support (mounting SAMBA shares with KODI) (yes / no) + KODI_SAMBA_SUPPORT="no" + +# build with NFS support (mounting nfs shares via the OS) (yes / no) + NFS_SUPPORT="no" + +# build with Samba Client support (mounting samba shares via the OS) (yes / no) + SAMBA_SUPPORT="no" + +# build and install Samba Server (yes / no) + SAMBA_SERVER="yes" + +# build and install SFTP Server (yes / no) + SFTP_SERVER="yes" + +# build and install OpenVPN support (yes / no) + OPENVPN_SUPPORT="no" + +# build and install diskmounter support (udevil) +# this service provide auto mounting support for external drives in the +# mediacenter also automount internally drives at boottime via udev (yes / no) + UDEVIL="yes" + +# build and install exFAT fuse support (yes / no) + EXFAT="yes" + +# build and install NTFS-3G fuse support (yes / no) + NTFS3G="yes" + +# build and install hfs filesystem utilities (yes / no) + HFSTOOLS="yes" + +# Windowmanager to use (fluxbox / none) + WINDOWMANAGER="none" + +# Xorg Graphic drivers to use (all / i915,i965,r200,r300,r600,nvidia) +# Space separated list is supported, +# e.g. GRAPHIC_DRIVERS="i915 i965 r300 r600 radeonsi nvidia" + GRAPHIC_DRIVERS="r300 r600 radeonsi i915 i965 nvidia nvidia-legacy vmware virtio" + +# build and install remote support (yes / no) + REMOTE_SUPPORT="no" + +# build and install ATV IR remote support (yes / no) + ATVCLIENT_SUPPORT="no" + +# build and install Joystick support (yes / no) + JOYSTICK_SUPPORT="no" + +# build and install CEC adapter support (yes / no) + CEC_SUPPORT="no" + +# build and install CEC framework support (yes / no) + CEC_FRAMEWORK_SUPPORT="no" + +# build and install iSCSI support - iscsistart (yes / no) + ISCSI_SUPPORT="no" + +# Support for partitioning and formating disks in initramfs (yes / no) +# This adds support for parted and mkfs.ext3/4 to initramfs for OEM usage + INITRAMFS_PARTED_SUPPORT="no" + +# build with swap support (yes / no) + SWAP_SUPPORT="no" + +# swap support enabled per default (yes / no) + SWAP_ENABLED_DEFAULT="no" + +# swapfile size if SWAP_SUPPORT=yes in MB + SWAPFILESIZE="128" + +# additional packages to install: +# Space separated list is supported, +# e.g. ADDITIONAL_PACKAGES="PACKAGE1 PACKAGE2" + ADDITIONAL_PACKAGES="" + +# build with installer (yes / no) + INSTALLER_SUPPORT="yes" + +# Testpackages for development (yes / no) + TESTING="no" + +# OEM packages for OEM's (yes / no) + OEM_SUPPORT="no" + +# build and install nano text editor (yes / no) + NANO_EDITOR="yes" + +# cron support (yes / no) + CRON_SUPPORT="no" + +# Distribution Specific source location + DISTRO_MIRROR="http://sources.libreelec.tv/mirror" + DISTRO_SRC="http://sources.libreelec.tv/$LIBREELEC_VERSION" + +# Addon Server Url + ADDON_SERVER_URL="https://addons.libreelec.tv" + +# set the addon dirs + ADDON_PATH="$ADDON_VERSION/${DEVICE:-$PROJECT}/$TARGET_ARCH" + ADDON_URL="$ADDON_SERVER_URL/$ADDON_PATH" + +# Default size of system partition, in MB, eg. 512 + SYSTEM_SIZE=512 +# Default system partition offset, in sectors, eg. 2048 + SYSTEM_PART_START=8192 + +# Configure debug groups (space delimited key=value pairs, with each value comma-delimited) and default group when DEBUG=yes +# Use ! or - prefix to prevent a dependent package from being built with debug. Add + suffix to build dependenencies with debug. + DEBUG_GROUPS="kodi+=kodi+,kodi-platform+,p8-platform+,!mesa" + DEBUG_GROUP_YES="kodi+" + +# Default supported get handlers (archive, git, file etc.) + GET_HANDLER_SUPPORT="archive" + +# Partition labels for USB/SD installation media + DISTRO_BOOTLABEL="LUDOS" + DISTRO_DISKLABEL="STORAGE" + +# Settings package name - blank if not required + DISTRO_PKG_SETTINGS="" + +# IR remote protocols supported in default config + IR_REMOTE_PROTOCOLS="RC6 NEC" + +# IR remote keymaps supported in default config + IR_REMOTE_KEYMAPS="rc6_mce xbox_360 xbox_one" + diff --git a/distributions/LudOS/splash/boot-logo.bmp.gz b/distributions/LudOS/splash/boot-logo.bmp.gz new file mode 100644 index 0000000000000000000000000000000000000000..18885867c527a9786382b2bd10f05e381285ad4d GIT binary patch literal 10303 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%0ABSqFYj_YtqGsIFv5F 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 literal 0 HcmV?d00001 diff --git a/distributions/LudOS/splash/splash-1080.png b/distributions/LudOS/splash/splash-1080.png new file mode 100644 index 0000000000000000000000000000000000000000..22170c59ea934d0b6ad561b8cfcae658fce4fe8c GIT binary patch literal 17194 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 WyZ*X5v9A?D_o(4XgN)zL{rz9}a?&CI literal 0 HcmV?d00001 diff --git a/distributions/LudOS/splash/splash-2160.png b/distributions/LudOS/splash/splash-2160.png new file mode 100644 index 0000000000000000000000000000000000000000..c6cfe623fa3f5eb986b195ec6f7023e974bd868d GIT binary patch literal 50214 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 literal 0 HcmV?d00001 diff --git a/distributions/LudOS/splash/splash-768.png b/distributions/LudOS/splash/splash-768.png new file mode 100644 index 0000000000000000000000000000000000000000..702cc1365f94e35e7ca891682fab47bb01f06894 GIT binary patch literal 9892 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

L50byph?0J*IX|ku-cN(&qGWW5#$v^ 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 LXS6d0zYL5nDE literal 0 HcmV?d00001 diff --git a/distributions/LudOS/version b/distributions/LudOS/version new file mode 100644 index 0000000000..460a50292d --- /dev/null +++ b/distributions/LudOS/version @@ -0,0 +1,8 @@ +# VERSION: set full version, use "devel" for development version + LIBREELEC_VERSION="1.0-alpha42" + +# OS_VERSION: OS Version + OS_VERSION="1.0" + +# ADDON_VERSION: Addon version + ADDON_VERSION="1.0" diff --git a/packages/addons/addon-depends/chrome-depends/libXcursor/package.mk b/packages/addons/addon-depends/chrome-depends/libXcursor/package.mk index 2c3323ed1a..1fa003ad35 100644 --- a/packages/addons/addon-depends/chrome-depends/libXcursor/package.mk +++ b/packages/addons/addon-depends/chrome-depends/libXcursor/package.mk @@ -12,6 +12,3 @@ PKG_DEPENDS_TARGET="toolchain libX11 libXfixes libXrender" PKG_LONGDESC="X11 Cursor management library.s" PKG_BUILD_FLAGS="+pic" -makeinstall_target() { - : -} diff --git a/packages/linux-drivers/applespi/modules-load.d/applespi.conf b/packages/linux-drivers/applespi/modules-load.d/applespi.conf new file mode 100644 index 0000000000..c14e970f7e --- /dev/null +++ b/packages/linux-drivers/applespi/modules-load.d/applespi.conf @@ -0,0 +1 @@ +applespi diff --git a/packages/linux-drivers/applespi/package.mk b/packages/linux-drivers/applespi/package.mk new file mode 100644 index 0000000000..85dbb4e5cc --- /dev/null +++ b/packages/linux-drivers/applespi/package.mk @@ -0,0 +1,46 @@ +################################################################################ +# This file is part of LibreELEC - https://libreelec.tv +# Copyright (C) 2016-present Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +PKG_NAME="applespi" +PKG_VERSION="0369050" +PKG_ARCH="x86_64" +PKG_LICENSE="GPLv2" +PKG_SITE="https://github.com/roadrunner2/macbook12-spi-driver" +PKG_URL="https://github.com/roadrunner2/macbook12-spi-driver/archive/$PKG_VERSION.tar.gz" +PKG_DEPENDS_TARGET="toolchain linux" +PKG_NEED_UNPACK="$LINUX_DEPENDS" +PKG_SECTION="driver" +PKG_SHORTDESC="Macbook keyboard, touchpad and touchbar driver" +PKG_LONGDESC="Macbook keyboard, touchpad and touchbar driver" + +PKG_IS_ADDON="no" +PKG_AUTORECONF="no" + +pre_make_target() { + unset LDFLAGS +} + +make_target() { + make KDIR=$(kernel_path) +} + +makeinstall_target() { + mkdir -p $INSTALL/$(get_full_module_dir)/$PKG_NAME + cp *.ko $INSTALL/$(get_full_module_dir)/$PKG_NAME + ls -la $INSTALL/$(get_full_module_dir)/$PKG_NAME +} diff --git a/packages/linux-firmware/brcmfmac_sdio-firmware/system.d/brcmfmac-firmware.service b/packages/linux-firmware/brcmfmac_sdio-firmware/system.d/brcmfmac-firmware.service index 062207fd0c..8a4935ac40 100644 --- a/packages/linux-firmware/brcmfmac_sdio-firmware/system.d/brcmfmac-firmware.service +++ b/packages/linux-firmware/brcmfmac_sdio-firmware/system.d/brcmfmac-firmware.service @@ -1,7 +1,7 @@ [Unit] Description=Broadcom SDIO Firmware Symlink Service After=kernel-overlays.service -Before=kodi.service +Before=ludo.service [Service] Type=oneshot diff --git a/packages/mediacenter/ludo/package.mk b/packages/mediacenter/ludo/package.mk new file mode 100644 index 0000000000..911ef67eec --- /dev/null +++ b/packages/mediacenter/ludo/package.mk @@ -0,0 +1,57 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv) +# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="ludo" +PKG_LICENSE="GPL" +PKG_SITE="https://github.com/libretro/ludo" +PKG_DEPENDS_TARGET="toolchain openal-soft" +PKG_LONGDESC="A libretro frontend written in golang." +PKG_VERSION="0.14.6" +PKG_URL="https://github.com/libretro/ludo/releases/download/v$PKG_VERSION/Ludo-Linux-$ARCH-$PKG_VERSION.tar.gz" +PKG_SOURCE_NAME="Ludo-Linux-$ARCH-$PKG_VERSION.tar.gz" +PKG_TOOLCHAIN="manual" + +if [ "$DISPLAYSERVER" = "x11" ]; then + PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libX11 libXext libdrm libXrandr libXcursor" +elif [ "$DISPLAYSERVER" = "weston" ]; then + PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET wayland waylandpp" + CFLAGS="$CFLAGS -DMESA_EGL_NO_X11_HEADERS" + CXXFLAGS="$CXXFLAGS -DMESA_EGL_NO_X11_HEADERS" +fi + +if [ ! "$OPENGL" = "no" ]; then + PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET $OPENGL" +fi + +makeinstall_target() { + mkdir -p $INSTALL/usr/bin + cp ./ludo $INSTALL/usr/bin/ludo + mkdir -p $INSTALL/usr/share/ludo + cp -r ./assets $INSTALL/usr/share/ludo/assets + cp -r ./database $INSTALL/usr/share/ludo/database + mkdir -p $INSTALL/usr/lib/libretro + cp -r ./cores/* $INSTALL/usr/lib/libretro + + mkdir -p $INSTALL/etc + echo ' +video_fullscreen = true +cores_dir = "/usr/lib/libretro" +assets_dir = "/usr/share/ludo/assets" +database_dir = "/usr/share/ludo/database" +playlists_dir = "/storage/playlists" +savefiles_dir = "/storage/savefiles" +savestates_dir = "/storage/savestates" +screenshots_dir = "/storage/screenshots" +system_dir = "/storage/system" +thumbnail_dir = "/storage/thumbnails" +bluetooth_service = false +samba_service = false +ssh_service = false +' > $INSTALL/etc/ludo.toml +} + +post_install() { + enable_service ludo.target + enable_service ludo.service +} diff --git a/packages/mediacenter/ludo/system.d/ludo.service b/packages/mediacenter/ludo/system.d/ludo.service new file mode 100644 index 0000000000..89e679af72 --- /dev/null +++ b/packages/mediacenter/ludo/system.d/ludo.service @@ -0,0 +1,22 @@ +[Unit] +Description=Ludo +After=network-online.target graphical.target +Requires=graphical.target +Wants=network-online.target + +[Service] +Environment=__GL_YIELD=USLEEP +Environment=DISPLAY=:0.0 +Environment=WAYLAND_DISPLAY=wayland-0 +Environment=SDL_MOUSE_RELATIVE=0 +Environment=HOME=/storage +EnvironmentFile=/etc/os-release +ExecStart=/usr/bin/ludo -ludos +KillMode=process +TimeoutStopSec=5 +Restart=always +RestartSec=2 +StartLimitInterval=0 + +[Install] +WantedBy=ludo.target diff --git a/packages/mediacenter/ludo/system.d/ludo.target b/packages/mediacenter/ludo/system.d/ludo.target new file mode 100644 index 0000000000..eedeffb1da --- /dev/null +++ b/packages/mediacenter/ludo/system.d/ludo.target @@ -0,0 +1,10 @@ +[Unit] +Description=Ludo +Requires=multi-user.target graphical.target network-online.target +After=network-online.target graphical.target +Wants=network-online.target +Conflicts=rescue.target +AllowIsolate=yes + +[Install] +Alias=default.target diff --git a/packages/mediacenter/ludo/tmpfiles.d/ludo-userdirs.conf b/packages/mediacenter/ludo/tmpfiles.d/ludo-userdirs.conf new file mode 100644 index 0000000000..fbffd7b9dc --- /dev/null +++ b/packages/mediacenter/ludo/tmpfiles.d/ludo-userdirs.conf @@ -0,0 +1,11 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv) + +d /storage/.ludo 0755 root root - - +d /storage/roms 0755 root root - - +d /storage/savestates 0755 root root - - +d /storage/savefiles 0755 root root - - +d /storage/screenshots 0755 root root - - +d /storage/system 0755 root root - - +d /storage/playlists 0755 root root - - +d /storage/thumbnails 0755 root root - - diff --git a/packages/mediacenter/ludo/tmpfiles.d/ludo.conf b/packages/mediacenter/ludo/tmpfiles.d/ludo.conf new file mode 100644 index 0000000000..9c971667f6 --- /dev/null +++ b/packages/mediacenter/ludo/tmpfiles.d/ludo.conf @@ -0,0 +1,4 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv) + +d /run/ludo 0755 root root - - diff --git a/packages/mediacenter/ludo/udev.d/99-8bitdo.rules b/packages/mediacenter/ludo/udev.d/99-8bitdo.rules new file mode 100644 index 0000000000..6ecbc43932 --- /dev/null +++ b/packages/mediacenter/ludo/udev.d/99-8bitdo.rules @@ -0,0 +1,41 @@ +# 8Bitdo FC30 1P GamePad Bluetooth mode(START) mode(START+R) +SUBSYSTEM=="input", ATTRS{name}=="8Bitdo FC30 GamePad", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1" + +# 8Bitdo FC30 2P GamePad Bluetooth mode(START) +SUBSYSTEM=="input", ATTRS{name}=="8Bitdo FC30 II", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1" + +# 8Bitdo FC30 2P GamePad Bluetooth mode(START+R) +SUBSYSTEM=="input", ATTRS{name}=="8Bitdo FC30 II Joystick", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1" + +# 8Bitdo SFC30 GamePad Bluetooth mode(START) +SUBSYSTEM=="input", ATTRS{name}=="8Bitdo SFC30 GamePad", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1" + +# 8Bitdo SFC30 GamePad Bluetooth mode(START+R) +SUBSYSTEM=="input", ATTRS{name}=="8Bitdo SFC30 GamePad Joystick", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1" + +# 8Bitdo NES30 GamePad Bluetooth mode(START) +SUBSYSTEM=="input", ATTRS{name}=="8Bitdo NES30 GamePad", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1" + +# 8Bitdo NES30 GamePad Bluetooth mode(START+R) +SUBSYSTEM=="input", ATTRS{name}=="8Bitdo NES30 GamePad Joystick", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1" + +# 8Bitdo SNES30 GamePad Bluetooth mode(START) +SUBSYSTEM=="input", ATTRS{name}=="8Bitdo SNES30 GamePad", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1" + +# 8Bitdo SNES30 GamePad Bluetooth mode(START+R) +SUBSYSTEM=="input", ATTRS{name}=="8Bitdo SNES30 GamePad Joystick", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1" + +# 8Bitdo FC30 Pro GamePad Bluetooth mode(POWER) mode(POWER+R1) +SUBSYSTEM=="input", ATTRS{name}=="8Bitdo FC30 Pro", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1" + +# 8Bitdo NES30 Pro GamePad Bluetooth mode(POWER) +SUBSYSTEM=="input", ATTRS{name}=="8Bitdo NES30 Pro", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1" + +# 8Bitdo NES30 Pro GamePad Bluetooth mode(POWER+R1) +SUBSYSTEM=="input", ATTRS{name}=="8Bitdo NES30 Pro Joystick", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1" + +# 8Bitdo FC30 Arcade Joystick Bluetooth mode(HOME) +SUBSYSTEM=="input", ATTRS{name}=="8Bitdo Joy", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1" + +# 8Bitdo Zero GamePad Bluetooth mode(START) mode(START+R) +SUBSYSTEM=="input", ATTRS{name}=="8Bitdo Zero GamePad", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1" diff --git a/packages/network/connman/package.mk b/packages/network/connman/package.mk index 1be8c2481e..d374d90613 100644 --- a/packages/network/connman/package.mk +++ b/packages/network/connman/package.mk @@ -78,6 +78,8 @@ post_makeinstall_target() { -e "s|^# AllowHostnameUpdates.*|AllowHostnameUpdates = false|g" \ -e "s|^# PersistentTetheringMode.*|PersistentTetheringMode = true|g" \ -e "s|^# NetworkInterfaceBlacklist = vmnet,vboxnet,virbr,ifb|NetworkInterfaceBlacklist = vmnet,vboxnet,virbr,ifb,docker,veth,zt|g" + echo "TimeUpdates=manual" >> $INSTALL/etc/connman/main.conf + echo "TimezoneUpdates=manual" >> $INSTALL/etc/connman/main.conf mkdir -p $INSTALL/usr/share/connman/ cp $PKG_DIR/config/settings $INSTALL/usr/share/connman/ diff --git a/packages/network/samba/config/smb.conf b/packages/network/samba/config/smb.conf index d7548865d8..96eea7b268 100644 --- a/packages/network/samba/config/smb.conf +++ b/packages/network/samba/config/smb.conf @@ -8,7 +8,7 @@ # available from your machine [global] - server string = LibreELEC + server string = LudOS browseable = yes writeable = yes printable = no @@ -58,77 +58,29 @@ writeable = yes root preexec = mkdir -p /storage/.update -[Videos] - path = /storage/videos +[ROMs] + path = /storage/roms available = yes browseable = yes public = yes writeable = yes - root preexec = mkdir -p /storage/videos + root preexec = mkdir -p /storage/roms -[Music] - path = /storage/music +[Savestates] + path = /storage/savestates available = yes browseable = yes public = yes writeable = yes - root preexec = mkdir -p /storage/music + root preexec = mkdir -p /storage/savestates -[TV Shows] - path = /storage/tvshows +[Savefiles] + path = /storage/savefiles available = yes browseable = yes public = yes writeable = yes - root preexec = mkdir -p /storage/tvshows - -[Recordings] - path = /storage/recordings - available = yes - browseable = yes - public = yes - writeable = yes - root preexec = mkdir -p /storage/recordings - -[Downloads] - path = /storage/downloads - available = yes - browseable = yes - public = yes - writeable = yes - root preexec = mkdir -p /storage/downloads - -[Pictures] - path = /storage/pictures - available = yes - browseable = yes - public = yes - writeable = yes - root preexec = mkdir -p /storage/pictures - -[Emulators] - path = /storage/emulators - available = yes - browseable = yes - public = yes - writeable = yes - root preexec = mkdir -p /storage/emulators - -[Configfiles] - path = /storage/.config - available = yes - browseable = yes - public = yes - writeable = yes - root preexec = mkdir -p /storage/.config - -[Userdata] - path = /storage/.kodi/userdata - available = yes - browseable = yes - public = yes - writeable = yes - root preexec = mkdir -p /storage/.kodi/userdata + root preexec = mkdir -p /storage/savefiles [Screenshots] path = /storage/screenshots @@ -138,27 +90,27 @@ writeable = yes root preexec = mkdir -p /storage/screenshots -[Logfiles] - path = /storage/logfiles +[System] + path = /storage/system available = yes browseable = yes public = yes writeable = yes - root preexec = mkdir -p /storage/logfiles - root preexec = createlog + root preexec = mkdir -p /storage/system -[Backup] - path = /storage/backup +[Playlists] + path = /storage/playlists available = yes browseable = yes public = yes writeable = yes - root preexec = mkdir -p /storage/backup + root preexec = mkdir -p /storage/playlists -[Picons] - path = /storage/picons +[Thumbnails] + path = /storage/thumbnails available = yes browseable = yes public = yes writeable = yes - root preexec = mkdir -p /storage/picons/tvh /storage/picons/vdr + root preexec = mkdir -p /storage/thumbnails + diff --git a/packages/security/libgpg-error/package.mk b/packages/security/libgpg-error/package.mk index 6bb6d7b3a1..8e6a54cbc8 100644 --- a/packages/security/libgpg-error/package.mk +++ b/packages/security/libgpg-error/package.mk @@ -4,7 +4,6 @@ PKG_NAME="libgpg-error" PKG_VERSION="1.37" -PKG_SHA256="b32d6ff72a73cf79797f7f2d039e95e9c6f92f0c1450215410840ab62aea9763" PKG_LICENSE="GPLv2" PKG_SITE="https://www.gnupg.org" PKG_URL="https://www.gnupg.org/ftp/gcrypt/libgpg-error/$PKG_NAME-$PKG_VERSION.tar.bz2" diff --git a/packages/sysutils/busybox/package.mk b/packages/sysutils/busybox/package.mk index af3176de9e..0df73af549 100644 --- a/packages/sysutils/busybox/package.mk +++ b/packages/sysutils/busybox/package.mk @@ -185,7 +185,7 @@ post_install() { add_group nogroup 65534 enable_service shell.service - enable_service show-version.service + #enable_service show-version.service enable_service var.mount enable_service fs-resize.service listcontains "${FIRMWARE}" "rpi-eeprom" && enable_service rpi-flash-firmware.service diff --git a/packages/sysutils/systemd/package.mk b/packages/sysutils/systemd/package.mk index a0a146a599..d05e7a298a 100644 --- a/packages/sysutils/systemd/package.mk +++ b/packages/sysutils/systemd/package.mk @@ -8,7 +8,7 @@ PKG_SHA256="ec22be9a5dd94c9640e6348ed8391d1499af8ca2c2f01109198a414cff6c6cba" PKG_LICENSE="LGPL2.1+" PKG_SITE="http://www.freedesktop.org/wiki/Software/systemd" PKG_URL="https://github.com/systemd/systemd/archive/v$PKG_VERSION.tar.gz" -PKG_DEPENDS_TARGET="toolchain libcap kmod util-linux entropy libidn2 wait-time-sync" +PKG_DEPENDS_TARGET="toolchain libcap kmod util-linux libidn2 wait-time-sync" PKG_LONGDESC="A system and session manager for Linux, compatible with SysV and LSB init scripts." PKG_MESON_OPTS_TARGET="--libdir=/usr/lib \ diff --git a/packages/sysutils/udevil/config/udevil.conf b/packages/sysutils/udevil/config/udevil.conf index d2f653a235..54426e8664 100644 --- a/packages/sysutils/udevil/config/udevil.conf +++ b/packages/sysutils/udevil/config/udevil.conf @@ -101,7 +101,7 @@ allowed_groups = * # be permitted to unmount its associated loop device even though internal. # INCLUDING /MNT HERE IS NOT RECOMMENDED. ALL ALLOWED MEDIA DIRECTORIES # SHOULD BE OWNED AND WRITABLE ONLY BY ROOT. -allowed_media_dirs = /media, /var/media, /run/media/$USER +allowed_media_dirs = /storage # allowed_devices is the first criteria for what block devices users may mount diff --git a/packages/tools/bcm2835-bootloader/files/3rdparty/bootloader/distroconfig.txt b/packages/tools/bcm2835-bootloader/files/3rdparty/bootloader/distroconfig.txt index 5ff97b5bef..1436562caa 100644 --- a/packages/tools/bcm2835-bootloader/files/3rdparty/bootloader/distroconfig.txt +++ b/packages/tools/bcm2835-bootloader/files/3rdparty/bootloader/distroconfig.txt @@ -2,3 +2,8 @@ # Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) # WARNING: DO NOT EDIT THIS FILE - IT WILL BE OVERWRITTEN WHEN UPGRADING! + +disable_splash=1 +disable_overscan=1 +dtparam=audio=on +dtoverlay=vc4-fkms-v3d diff --git a/packages/x11/lib/libXinerama/package.mk b/packages/x11/lib/libXinerama/package.mk index 05cec4a5a9..5e561531c9 100644 --- a/packages/x11/lib/libXinerama/package.mk +++ b/packages/x11/lib/libXinerama/package.mk @@ -11,4 +11,4 @@ PKG_URL="http://xorg.freedesktop.org/archive/individual/lib/$PKG_NAME-$PKG_VERSI PKG_DEPENDS_TARGET="toolchain util-macros libXext" PKG_LONGDESC="libXinerama is the Xinerama library." -PKG_CONFIGURE_OPTS_TARGET="--enable-static --disable-shared --enable-malloc0returnsnull" +PKG_CONFIGURE_OPTS_TARGET="--enable-static --enable-shared --enable-malloc0returnsnull" diff --git a/packages/x11/other/fluxbox/system.d/windowmanager.service b/packages/x11/other/fluxbox/system.d/windowmanager.service index d97081e2b8..652019fe8e 100644 --- a/packages/x11/other/fluxbox/system.d/windowmanager.service +++ b/packages/x11/other/fluxbox/system.d/windowmanager.service @@ -2,7 +2,7 @@ Description=Fluxbox Window Manager Requires=xorg.service After=xorg.service -Before=kodi.service +Before=ludo.service [Service] Environment=DISPLAY=:0 diff --git a/packages/x11/xserver/xorg-server/system.d/xorg.service b/packages/x11/xserver/xorg-server/system.d/xorg.service index a9dbde6893..1bba515e8a 100644 --- a/packages/x11/xserver/xorg-server/system.d/xorg.service +++ b/packages/x11/xserver/xorg-server/system.d/xorg.service @@ -1,6 +1,6 @@ [Unit] Description=Xorg Server -Before=graphical.target kodi.service +Before=graphical.target ludo.service After=multi-user.target ConditionKernelCommandLine=!installer diff --git a/packages/x11/xserver/xorg-server/udev.d/97-xorg.rules b/packages/x11/xserver/xorg-server/udev.d/97-xorg.rules index 5a63260232..3de14be33d 100644 --- a/packages/x11/xserver/xorg-server/udev.d/97-xorg.rules +++ b/packages/x11/xserver/xorg-server/udev.d/97-xorg.rules @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-or-later # Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv) +DRIVER=="vc4-drm", ENV{xorg_driver}="modesetting", TAG+="systemd", ENV{SYSTEMD_WANTS}+="xorg-configure@modesetting.service" ACTION!="add|change", GOTO="end_video" # xorg_start only does something for subsystem "pci" and "video" class. diff --git a/projects/Generic/linux/linux.x86_64.conf b/projects/Generic/linux/linux.x86_64.conf index 84d95dd8ad..08de6cd314 100644 --- a/projects/Generic/linux/linux.x86_64.conf +++ b/projects/Generic/linux/linux.x86_64.conf @@ -2662,7 +2662,10 @@ CONFIG_I2C_DESIGNWARE_BAYTRAIL=y # CONFIG_I2C_DEBUG_ALGO is not set # CONFIG_I2C_DEBUG_BUS is not set # CONFIG_I3C is not set -# CONFIG_SPI is not set +CONFIG_SPI=y +CONFIG_SPI_MASTER=y +CONFIG_SPI_PXA2XX=m + # CONFIG_SPMI is not set # CONFIG_HSI is not set CONFIG_PPS=y diff --git a/projects/Generic/options b/projects/Generic/options index 8b667ac1cc..aa0ef66594 100644 --- a/projects/Generic/options +++ b/projects/Generic/options @@ -74,13 +74,13 @@ # additional Firmware to use (dvb-firmware, misc-firmware, wlan-firmware) # Space separated list is supported, # e.g. FIRMWARE="dvb-firmware misc-firmware wlan-firmware" - FIRMWARE="misc-firmware wlan-firmware dvb-firmware iwlwifi-firmware" + FIRMWARE="misc-firmware wlan-firmware iwlwifi-firmware" # additional drivers to install: # for a list of additional drivers see packages/linux-drivers # Space separated list is supported, # e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2" - ADDITIONAL_DRIVERS="$ADDITIONAL_DRIVERS bcm_sta intel_nuc_led" + ADDITIONAL_DRIVERS="$ADDITIONAL_DRIVERS bcm_sta intel_nuc_led applespi" # build and install driver addons (yes / no) DRIVER_ADDONS_SUPPORT="yes" @@ -88,7 +88,8 @@ # driver addons to install: # for a list of additional drivers see packages/linux-driver-addons # Space separated list is supported, - DRIVER_ADDONS="crazycat digital_devices dvb-latest" + DRIVER_ADDONS="" # Default size of the ova image, in MB, eg. 4096 OVA_SIZE="4096" + diff --git a/projects/RPi/devices/RPi4/config/distroconfig.txt b/projects/RPi/devices/RPi4/config/distroconfig.txt index a5670d0691..bede6238b7 100644 --- a/projects/RPi/devices/RPi4/config/distroconfig.txt +++ b/projects/RPi/devices/RPi4/config/distroconfig.txt @@ -3,4 +3,5 @@ # WARNING: DO NOT EDIT THIS FILE - IT WILL BE OVERWRITTEN WHEN UPGRADING! dtoverlay=vc4-fkms-v3d +dtparam=audio=on disable_overscan=1 diff --git a/projects/RPi/options b/projects/RPi/options index 0927b0cbc6..95e9d7183b 100644 --- a/projects/RPi/options +++ b/projects/RPi/options @@ -74,16 +74,16 @@ ALSA_SUPPORT="yes" # OpenGL(X) implementation to use (no / mesa) - OPENGL="no" + OPENGL="mesa" # OpenGL-ES implementation to use (no / bcm2835-driver / mesa) - OPENGLES="bcm2835-driver" + OPENGLES="no" # include uvesafb support (yes / no) UVESAFB_SUPPORT="no" # Displayserver to use (x11 / no) - DISPLAYSERVER="no" + DISPLAYSERVER="x11" # Windowmanager to use (fluxbox / none) WINDOWMANAGER="none" @@ -91,7 +91,7 @@ # Xorg Graphic drivers to use (all / vc4 / none) # Space separated list is supported, # e.g. GRAPHIC_DRIVERS="vc4" - GRAPHIC_DRIVERS="" + GRAPHIC_DRIVERS="vc4" # Use a vendor specific KODI repo KODI_VENDOR="raspberrypi" @@ -105,7 +105,7 @@ # additional Firmware to use (dvb-firmware, misc-firmware, wlan-firmware) # Space separated list is supported, # e.g. FIRMWARE="dvb-firmware misc-firmware wlan-firmware" - FIRMWARE="misc-firmware wlan-firmware dvb-firmware brcmfmac_sdio-firmware-rpi" + FIRMWARE="misc-firmware wlan-firmware brcmfmac_sdio-firmware-rpi" # build with installer (yes / no) INSTALLER_SUPPORT="no" @@ -129,7 +129,7 @@ # driver addons to install: # for a list of additional drivers see packages/linux-driver-addons # Space separated list is supported, - DRIVER_ADDONS="crazycat dvb-latest" + DRIVER_ADDONS="" # debug tty path DEBUG_TTY="/dev/console" diff --git a/scripts/mkimage b/scripts/mkimage index fb2282d2cd..a8b2313d2c 100755 --- a/scripts/mkimage +++ b/scripts/mkimage @@ -123,7 +123,7 @@ SAY installer: permanently install ${DISTRO} to HDD/SSD SAY live: boot ${DISTRO} using RAM for temporary storage SAY run: boot ${DISTRO} using this USB memory device for storage SAY -DEFAULT installer +DEFAULT run TIMEOUT 50 PROMPT 1 @@ -142,7 +142,7 @@ EOF cat << EOF > "${LE_TMP}/grub.cfg" set timeout="25" -set default="Installer" +set default="Run" menuentry "Installer" { search --set -f /KERNEL linux /KERNEL boot=UUID=${UUID_SYSTEM} installer quiet systemd.debug_shell vga=current