Merge branch 'dev' of https://github.com/rishooty/distribution into RG552-M64-FIX
This commit is contained in:
commit
8b93cdf0ad
101 changed files with 1747 additions and 658 deletions
2
.github/workflows/build-dev.yaml
vendored
2
.github/workflows/build-dev.yaml
vendored
|
@ -111,7 +111,7 @@ jobs:
|
|||
* Copy the update to your device over the network to your device's update share.
|
||||
* Reboot the device, and the update will begin automatically.
|
||||
|
||||
Download: [[Win600/x86_64](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-handheld.x86_64-${{ steps.version.outputs.version }}.tar)] [[RG353P/RG353M/RG353V](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-RG353P.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG503](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-RG503.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG552](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-RG552.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG351P](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351P.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG351V](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351V.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG351MP](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351MP.aarch64-${{ steps.version.outputs.version }}.tar)]
|
||||
Download: [[Win600/Atari VCS/x86_64](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-handheld.x86_64-${{ steps.version.outputs.version }}.tar)] [[RG353P/RG353M/RG353V](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-RG353P.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG503](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-RG503.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG552](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-RG552.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG351P](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351P.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG351V](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351V.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG351MP](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351MP.aarch64-${{ steps.version.outputs.version }}.tar)]
|
||||
|
||||
## Documentation
|
||||
* [Home](https://github.com/JustEnoughLinuxOS/distribution/wiki)
|
||||
|
|
2
.github/workflows/build-main.yaml
vendored
2
.github/workflows/build-main.yaml
vendored
|
@ -110,7 +110,7 @@ jobs:
|
|||
* Copy the update to your device over the network to your device's update share.
|
||||
* Reboot the device, and the update will begin automatically.
|
||||
|
||||
Download: [[Win600/x86_64](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-handheld.x86_64-${{ steps.version.outputs.version }}.tar)] [[RG353P/RG353M/RG353P](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG353P.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG503](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG503.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG552](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG552.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG351P/RG353M](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351P.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG351V](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351V.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG351MP](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351MP.aarch64-${{ steps.version.outputs.version }}.tar)]
|
||||
Download: [[Win600/Atari VCS/x86_64](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-handheld.x86_64-${{ steps.version.outputs.version }}.tar)] [[RG353P/RG353M/RG353P](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG353P.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG503](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG503.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG552](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG552.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG351P/RG353M](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351P.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG351V](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351V.aarch64-${{ steps.version.outputs.version }}.tar)] [[RG351MP](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RG351MP.aarch64-${{ steps.version.outputs.version }}.tar)]
|
||||
|
||||
## Documentation
|
||||
* [Home](https://github.com/JustEnoughLinuxOS/distribution/wiki)
|
||||
|
|
2
.github/workflows/release-dev.yaml
vendored
2
.github/workflows/release-dev.yaml
vendored
|
@ -7,7 +7,7 @@
|
|||
name: release-dev
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 21 * * *'
|
||||
- cron: '0 3 * * *'
|
||||
workflow_dispatch:
|
||||
env:
|
||||
BRANCH: dev
|
||||
|
|
|
@ -76,7 +76,7 @@ As the distribution is being built, package source are fetched and hosted in thi
|
|||
The tools directory contains utility scripts that can be used during the development process, including a simple tool to burn an image to a usb drive or sdcard.
|
||||
|
||||
## Building JELOS
|
||||
Building JELOS requires an Ubuntu 20.04 host with approximately 800GB of free space for a full world build. Other Linux distributions may be used when building using Docker.
|
||||
Building JELOS requires an Ubuntu 20.04 host with approximately 200GB of free space for a single device, or 800GB of free space for a full world build. Other Linux distributions may be used when building using Docker, however this is untested and unsupported. We recommend building with no more than 8 cores.
|
||||
|
||||
### Building with Docker
|
||||
Building JELOS is easy, the fastest and most recommended method is to use Docker. At this time building the distribution using Docker is only known to work on a Linux system. To build JELOS use the table below.
|
||||
|
|
28
README.md
28
README.md
|
@ -2,16 +2,6 @@
|
|||
#
|
||||
Just Enough Linux Operating System (JELOS) is a community developed Linux distribution for handheld gaming devices. Our goal is to produce an operating system that has the features and capabilities that we need, and to have fun as we develop it.
|
||||
|
||||
## Features
|
||||
* A 64bit Linux Operating System.
|
||||
* An easy to use interface using EmulationStation
|
||||
* Provides RetroArch, a variety of cores, Stand Alone Emulators, PortMaster, and ThemeMaster.
|
||||
* Supports FAT32, ExFAT, and EXT4 file systems on removable storage (slot/device #2).
|
||||
* 2.4GHz and 5GHz 802.11 A/B/G/N/AC WIFI support.
|
||||
* Online update capability for easy access to stable or development builds.
|
||||
* Support for the Anbernic WIN600, RG552, RG503, RG353P, RG353M, RG353V, RG351P, RG351M, RG351MP, RG351V, and Atari VCS.
|
||||
* Developed by a small, friendly community.
|
||||
|
||||
## Licenses
|
||||
JELOS is a Linux distribution that is made up of many open-source components. Components are provided under their respective licenses. This distribution includes components licensed for non-commercial use only.
|
||||
|
||||
|
@ -42,22 +32,8 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
## Flashing
|
||||
* Download the latest [version of JELOS](https://github.com/JustEnoughLinuxOS/distribution/releases) (.img.gz) for your device.
|
||||
* Decompress the image.
|
||||
* Write the image to an SDCARD using an imaging tool. Common imaging tools include [Balena Etcher](https://www.balena.io/etcher/), [Raspberry Pi Imager](https://www.raspberrypi.com/software/), and [Win32 Disk Imager](https://sourceforge.net/projects/win32diskimager/). If you're skilled with the command line, dd works fine too.
|
||||
|
||||
> This repository hosts stable versions of JELOS. If you would like to install the unstable development version, please visit the [development build repository](https://github.com/JustEnoughLinuxOS/distribution-dev).
|
||||
|
||||
## Installation
|
||||
* x86_64 versions of JELOS include an installation tool. This tool may be run from the boot menu or from within JELOS by switching to desktop mode and running "installer" in a terminal.
|
||||
* RG353V users should use the RG353P image, and select "DEVICE IS RG353V" from the system settings menu in EmulationStation.
|
||||
|
||||
## Upgrading
|
||||
* Download and install the update online via the System Settings menu.
|
||||
* Download the latest [version of JELOS](https://github.com/JustEnoughLinuxOS/distribution/releases) (.tar) for your device.
|
||||
* Copy the update to your device over the network to your device's update share.
|
||||
* Reboot the device, and the update will begin automatically.
|
||||
* JELOS is a source based Linux distribution. To install, follow BUILDING.md and then write the resulting image to your micro sd card using your favorite image writing tool.
|
||||
|
||||
## Network Access
|
||||
* External services are disabled by default in stable builds. When enabled, the username for ssh and samba access is "root". The root password is generated during every boot, it can be found in the System Settings menu.
|
||||
|
@ -86,5 +62,5 @@ limitations under the License.
|
|||
* [Developing and Building JELOS](https://github.com/JustEnoughLinuxOS/distribution/blob/dev/BUILDING.md)
|
||||
|
||||
## Credits
|
||||
Like any Linux distribution, this project is not the work of one person. It is the work of many persons all over the world who have developed the open source bits without which this project could not exist. Special thanks to CoreELEC, LibreELEC, Anbernic, and to developers and contributors across the ARM handheld community.
|
||||
Like any Linux distribution, this project is not the work of one person. It is the work of many persons all over the world who have developed the open source bits without which this project could not exist. Special thanks to CoreELEC, LibreELEC, and to developers and contributors across the ARM handheld community.
|
||||
|
||||
|
|
92
licenses/FDK-AAC.txt
Normal file
92
licenses/FDK-AAC.txt
Normal file
|
@ -0,0 +1,92 @@
|
|||
Software License for The Fraunhofer FDK AAC Codec Library for Android
|
||||
|
||||
© Copyright 1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten
|
||||
Forschung e.V. All rights reserved.
|
||||
|
||||
1. INTRODUCTION
|
||||
The Fraunhofer FDK AAC Codec Library for Android ("FDK AAC Codec") is software
|
||||
that implements the MPEG Advanced Audio Coding ("AAC") encoding and decoding
|
||||
scheme for digital audio. This FDK AAC Codec software is intended to be used on
|
||||
a wide variety of Android devices.
|
||||
|
||||
AAC's HE-AAC and HE-AAC v2 versions are regarded as today's most efficient
|
||||
general perceptual audio codecs. AAC-ELD is considered the best-performing
|
||||
full-bandwidth communications codec by independent studies and is widely
|
||||
deployed. AAC has been standardized by ISO and IEC as part of the MPEG
|
||||
specifications.
|
||||
|
||||
Patent licenses for necessary patent claims for the FDK AAC Codec (including
|
||||
those of Fraunhofer) may be obtained through Via Licensing
|
||||
(www.vialicensing.com) or through the respective patent owners individually for
|
||||
the purpose of encoding or decoding bit streams in products that are compliant
|
||||
with the ISO/IEC MPEG audio standards. Please note that most manufacturers of
|
||||
Android devices already license these patent claims through Via Licensing or
|
||||
directly from the patent owners, and therefore FDK AAC Codec software may
|
||||
already be covered under those patent licenses when it is used for those
|
||||
licensed purposes only.
|
||||
|
||||
Commercially-licensed AAC software libraries, including floating-point versions
|
||||
with enhanced sound quality, are also available from Fraunhofer. Users are
|
||||
encouraged to check the Fraunhofer website for additional applications
|
||||
information and documentation.
|
||||
|
||||
2. COPYRIGHT LICENSE
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted without payment of copyright license fees provided that you
|
||||
satisfy the following conditions:
|
||||
|
||||
You must retain the complete text of this software license in redistributions of
|
||||
the FDK AAC Codec or your modifications thereto in source code form.
|
||||
|
||||
You must retain the complete text of this software license in the documentation
|
||||
and/or other materials provided with redistributions of the FDK AAC Codec or
|
||||
your modifications thereto in binary form. You must make available free of
|
||||
charge copies of the complete source code of the FDK AAC Codec and your
|
||||
modifications thereto to recipients of copies in binary form.
|
||||
|
||||
The name of Fraunhofer may not be used to endorse or promote products derived
|
||||
from this library without prior written permission.
|
||||
|
||||
You may not charge copyright license fees for anyone to use, copy or distribute
|
||||
the FDK AAC Codec software or your modifications thereto.
|
||||
|
||||
Your modified versions of the FDK AAC Codec must carry prominent notices stating
|
||||
that you changed the software and the date of any change. For modified versions
|
||||
of the FDK AAC Codec, the term "Fraunhofer FDK AAC Codec Library for Android"
|
||||
must be replaced by the term "Third-Party Modified Version of the Fraunhofer FDK
|
||||
AAC Codec Library for Android."
|
||||
|
||||
3. NO PATENT LICENSE
|
||||
|
||||
NO EXPRESS OR IMPLIED LICENSES TO ANY PATENT CLAIMS, including without
|
||||
limitation the patents of Fraunhofer, ARE GRANTED BY THIS SOFTWARE LICENSE.
|
||||
Fraunhofer provides no warranty of patent non-infringement with respect to this
|
||||
software.
|
||||
|
||||
You may use this FDK AAC Codec software or modifications thereto only for
|
||||
purposes that are authorized by appropriate patent licenses.
|
||||
|
||||
4. DISCLAIMER
|
||||
|
||||
This FDK AAC Codec software is provided by Fraunhofer on behalf of the copyright
|
||||
holders and contributors "AS IS" and WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
including but not limited to the implied warranties of merchantability and
|
||||
fitness for a particular purpose. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
||||
CONTRIBUTORS BE LIABLE for any direct, indirect, incidental, special, exemplary,
|
||||
or consequential damages, including but not limited to procurement of substitute
|
||||
goods or services; loss of use, data, or profits, or business interruption,
|
||||
however caused and on any theory of liability, whether in contract, strict
|
||||
liability, or tort (including negligence), arising in any way out of the use of
|
||||
this software, even if advised of the possibility of such damage.
|
||||
|
||||
5. CONTACT INFORMATION
|
||||
|
||||
Fraunhofer Institute for Integrated Circuits IIS
|
||||
Attention: Audio and Multimedia Departments - FDK AAC LL
|
||||
Am Wolfsmantel 33
|
||||
91058 Erlangen, Germany
|
||||
|
||||
www.iis.fraunhofer.de/amm
|
||||
amm-info@iis.fraunhofer.de
|
||||
|
1
packages/audio/bluez-alsa/default.d/bluealsa.conf
Normal file
1
packages/audio/bluez-alsa/default.d/bluealsa.conf
Normal file
|
@ -0,0 +1 @@
|
|||
BLUEALSA_ARGS="-p a2dp-source -p a2dp-sink -c aptx -c aac -c ldac --ldac-quality=standard --ldac-abr"
|
42
packages/audio/bluez-alsa/package.mk
Normal file
42
packages/audio/bluez-alsa/package.mk
Normal file
|
@ -0,0 +1,42 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2022-present Marek Moeckel (wansti@discarded-ideas.org)
|
||||
|
||||
PKG_NAME="bluez-alsa"
|
||||
PKG_VERSION="4.0.0"
|
||||
PKG_SHA256="ce5e060e61669d61d44f5f9bad34a7b88378376e9d49d31482406a68127a6b29"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/Arkq/bluez-alsa"
|
||||
PKG_URL="https://github.com/Arkq/bluez-alsa/archive/refs/tags/v${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain alsa-lib bluez sbc dbus libopenaptx fdk-aac libldac"
|
||||
PKG_LONGDESC="Bluetooth audio ALSA backend"
|
||||
PKG_TOOLCHAIN="autotools"
|
||||
|
||||
if build_with_debug; then
|
||||
PKG_BLUEALSA_DEBUG=--with-debug
|
||||
fi
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="${PKG_BLUEALSA_DEBUG} \
|
||||
--enable-aptx \
|
||||
--with-libopenaptx \
|
||||
--enable-aac \
|
||||
--enable-ldac \
|
||||
--enable-upower \
|
||||
--enable-a2dpconf \
|
||||
--enable-cli \
|
||||
--enable-systemd"
|
||||
|
||||
post_makeinstall_target() {
|
||||
mkdir -p ${INSTALL}/usr/share/services
|
||||
cp -P ${PKG_DIR}/default.d/*.conf ${INSTALL}/usr/share/services/
|
||||
cp -P ${PKG_DIR}/system.d/*.service ${INSTALL}/usr/lib/systemd/system/
|
||||
# workaround until I figure out how to query this directory
|
||||
mkdir -p ${INSTALL}/usr/lib/alsa-lib
|
||||
cp -P ${PKG_BUILD}/.*/src/asound/.libs/*.so ${INSTALL}/usr/lib/alsa-lib/
|
||||
sed -i ${INSTALL}/etc/dbus-1/system.d/bluealsa.conf -e "s|audio|root|g"
|
||||
rm -rf ${INSTALL}/home
|
||||
}
|
||||
|
||||
post_install() {
|
||||
enable_service bluealsa.service
|
||||
enable_service bluealsa-defaults.service
|
||||
}
|
11
packages/audio/bluez-alsa/system.d/bluealsa-defaults.service
Normal file
11
packages/audio/bluez-alsa/system.d/bluealsa-defaults.service
Normal file
|
@ -0,0 +1,11 @@
|
|||
[Unit]
|
||||
Description=Bluealsa defaults
|
||||
After=local-fs.target
|
||||
|
||||
ConditionPathExists=!/storage/.cache/services/bluealsa.conf
|
||||
ConditionPathExists=!/storage/.cache/services/bluealsa.disabled
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/bin/sh -c 'cp /usr/share/services/bluealsa.conf /storage/.cache/services/'
|
||||
RemainAfterExit=yes
|
53
packages/audio/bluez-alsa/system.d/bluealsa.service
Normal file
53
packages/audio/bluez-alsa/system.d/bluealsa.service
Normal file
|
@ -0,0 +1,53 @@
|
|||
[Unit]
|
||||
Description=BlueALSA service
|
||||
Documentation=man:bluealsa(8)
|
||||
Requisite=dbus.service
|
||||
After=bluetooth.service bluealsa-defaults.service
|
||||
Requires=bluealsa-defaults.service
|
||||
ConditionPathExists=/storage/.cache/services/bluealsa.conf
|
||||
|
||||
# In order to customize BlueALSA D-Bus service one should create an override
|
||||
# for this systemd unit file. Please note, that in the override file one will
|
||||
# have to explicitly clear the ExecStart before setting it again. See the
|
||||
# bluez-alsa wiki for more options.
|
||||
#
|
||||
# $ sudo systemctl edit bluealsa
|
||||
# [Service]
|
||||
# ExecStart=
|
||||
# ExecStart=/usr/bin/bluealsa -p a2dp-source -p a2dp-sink -c aptx -c aac -c ldac
|
||||
|
||||
[Service]
|
||||
Type=dbus
|
||||
BusName=org.bluealsa
|
||||
EnvironmentFile=/storage/.cache/services/bluealsa.conf
|
||||
ExecStart=/usr/bin/bluealsa $BLUEALSA_ARGS
|
||||
Restart=on-failure
|
||||
|
||||
# Sandboxing
|
||||
CapabilityBoundingSet=
|
||||
IPAddressDeny=any
|
||||
LockPersonality=true
|
||||
MemoryDenyWriteExecute=true
|
||||
NoNewPrivileges=true
|
||||
PrivateDevices=true
|
||||
PrivateTmp=true
|
||||
PrivateUsers=true
|
||||
ProtectControlGroups=true
|
||||
ProtectHome=true
|
||||
ProtectHostname=true
|
||||
ProtectKernelLogs=true
|
||||
ProtectKernelModules=true
|
||||
ProtectKernelTunables=true
|
||||
ProtectSystem=strict
|
||||
RestrictAddressFamilies=AF_UNIX AF_BLUETOOTH
|
||||
RestrictNamespaces=true
|
||||
RestrictRealtime=true
|
||||
RestrictSUIDSGID=true
|
||||
SystemCallArchitectures=native
|
||||
SystemCallErrorNumber=EPERM
|
||||
SystemCallFilter=@system-service
|
||||
SystemCallFilter=~@resources @privileged
|
||||
UMask=0077
|
||||
|
||||
[Install]
|
||||
WantedBy=bluetooth.target
|
20
packages/audio/fdk-aac/package.mk
Normal file
20
packages/audio/fdk-aac/package.mk
Normal file
|
@ -0,0 +1,20 @@
|
|||
# SPDX-License-Identifier: FDK-AAC
|
||||
# Copyright (C) 2022-present Marek Moeckel (wansti@discarded-ideas.org)
|
||||
|
||||
PKG_NAME="fdk-aac"
|
||||
PKG_VERSION="2.0.2"
|
||||
PKG_SHA256="7812b4f0cf66acda0d0fe4302545339517e702af7674dd04e5fe22a5ade16a90"
|
||||
PKG_LICENSE="Software License for The Fraunhofer FDK AAC Codec Library for Android"
|
||||
PKG_SITE="https://github.com/mstorsjo/fdk-aac"
|
||||
PKG_URL="https://github.com/mstorsjo/fdk-aac/archive/refs/tags/v${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_LONGDESC="AAC bluetooth audio codec"
|
||||
PKG_TOOLCHAIN="autotools"
|
||||
|
||||
#PKG_CONFIGURE_OPTS_TARGET=""
|
||||
|
||||
post_makeinstall_target() {
|
||||
cp -P -r ${INSTALL}/usr/lib/* ${SYSROOT_PREFIX}/usr/lib/
|
||||
cp -P -r ${INSTALL}/usr/include/* ${SYSROOT_PREFIX}/usr/include/
|
||||
rm -rf ${INSTALL}/usr/lib/pkgconfig
|
||||
}
|
18
packages/audio/libldac/package.mk
Normal file
18
packages/audio/libldac/package.mk
Normal file
|
@ -0,0 +1,18 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
# Copyright (C) 2022-present Marek Moeckel (wansti@discarded-ideas.org)
|
||||
|
||||
PKG_NAME="libldac"
|
||||
PKG_VERSION="fbffba45d15d959da6ee04eafe14c0d4721f6030"
|
||||
PKG_LICENSE="Apache2"
|
||||
PKG_SITE="https://github.com/EHfive/ldacBT"
|
||||
PKG_URL="${PKG_SITE}.git"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_LONGDESC="LDAC bluetooth audio codec"
|
||||
PKG_TOOLCHAIN="cmake-make"
|
||||
GET_HANDLER_SUPPORT="git"
|
||||
|
||||
post_makeinstall_target() {
|
||||
cp -P -r ${INSTALL}/usr/lib/* ${SYSROOT_PREFIX}/usr/lib/
|
||||
cp -P -r ${INSTALL}/usr/include/* ${SYSROOT_PREFIX}/usr/include/
|
||||
rm -rf ${INSTALL}/usr/lib/pkgconfig
|
||||
}
|
18
packages/audio/libopenaptx/package.mk
Normal file
18
packages/audio/libopenaptx/package.mk
Normal file
|
@ -0,0 +1,18 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# Copyright (C) 2022-present Marek Moeckel (wansti@discarded-ideas.org)
|
||||
|
||||
PKG_NAME="libopenaptx"
|
||||
PKG_VERSION="0.2.1"
|
||||
PKG_SHA256="f13eac1ebfe31a563943cd47819eece1109960e10a1e85c111975bcfd37d5361"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/pali/libopenaptx"
|
||||
PKG_URL="https://github.com/pali/libopenaptx/releases/download/${PKG_VERSION}/libopenaptx-${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_LONGDESC="AptX bluetooth audio codec"
|
||||
PKG_TOOLCHAIN="make"
|
||||
|
||||
post_makeinstall_target() {
|
||||
cp -P -r ${INSTALL}/usr/local/lib/* ${SYSROOT_PREFIX}/usr/lib/
|
||||
cp -P -r ${INSTALL}/usr/local/include/* ${SYSROOT_PREFIX}/usr/include/
|
||||
rm -rf ${INSTALL}/usr/local/lib/pkgconfig
|
||||
}
|
|
@ -2,16 +2,18 @@
|
|||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="valgrind"
|
||||
PKG_VERSION="3.15.0"
|
||||
PKG_SHA256="417c7a9da8f60dd05698b3a7bc6002e4ef996f14c13f0ff96679a16873e78ab1"
|
||||
PKG_VERSION="3.20.0"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://valgrind.org/"
|
||||
PKG_URL="ftp://sourceware.org/pub/valgrind/$PKG_NAME-$PKG_VERSION.tar.bz2"
|
||||
PKG_URL="https://sourceware.org/pub/valgrind/${PKG_NAME}-${PKG_VERSION}.tar.bz2"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_LONGDESC="A tool to help find memory-management problems in programs"
|
||||
|
||||
if [ "$TARGET_ARCH" = "arm" ]; then
|
||||
PKG_CONFIGURE_OPTS_TARGET="--enable-only32bit"
|
||||
elif [ "$TARGET_ARCH" = "aarch64" -o "$TARGET_ARCH" = "x86_64" ]; then
|
||||
PKG_CONFIGURE_OPTS_TARGET="--enable-only64bit"
|
||||
fi
|
||||
case ${TARGET_ARCH} in
|
||||
arm)
|
||||
PKG_CONFIGURE_OPTS_TARGET="--enable-only32bit"
|
||||
;;
|
||||
*)
|
||||
PKG_CONFIGURE_OPTS_TARGET="--enable-only64bit"
|
||||
;;
|
||||
esac
|
||||
|
|
|
@ -7,6 +7,6 @@ diff -Naur a/configure b/configure
|
|||
|
||||
- armv7*)
|
||||
+ armv7*|armv8*)
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5
|
||||
$as_echo "ok (${host_cpu})" >&6; }
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (${host_cpu})" >&5
|
||||
printf "%s\n" "ok (${host_cpu})" >&6; }
|
||||
ARCH_MAX="arm"
|
||||
|
|
|
@ -1,67 +0,0 @@
|
|||
From a3262243ca01f7cfe3ae86b168d5b3a7e5d1cbc0 Mon Sep 17 00:00:00 2001
|
||||
From: Balint Reczey <balint.reczey@canonical.com>
|
||||
Date: Thu, 28 Nov 2019 19:31:12 +0100
|
||||
Subject: [PATCH] Drop MPI 1 support
|
||||
|
||||
Signed-off-by: Balint Reczey <balint.reczey@canonical.com>
|
||||
---
|
||||
mpi/libmpiwrap.c | 16 ++--------------
|
||||
1 file changed, 2 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/mpi/libmpiwrap.c b/mpi/libmpiwrap.c
|
||||
index 488bb13fd..a740ea562 100644
|
||||
--- a/mpi/libmpiwrap.c
|
||||
+++ b/mpi/libmpiwrap.c
|
||||
@@ -278,8 +278,6 @@ static void showTy ( FILE* f, MPI_Datatype ty )
|
||||
else if (ty == MPI_LONG_INT) fprintf(f,"LONG_INT");
|
||||
else if (ty == MPI_SHORT_INT) fprintf(f,"SHORT_INT");
|
||||
else if (ty == MPI_2INT) fprintf(f,"2INT");
|
||||
- else if (ty == MPI_UB) fprintf(f,"UB");
|
||||
- else if (ty == MPI_LB) fprintf(f,"LB");
|
||||
# if defined(MPI_WCHAR)
|
||||
else if (ty == MPI_WCHAR) fprintf(f,"WCHAR");
|
||||
# endif
|
||||
@@ -350,20 +348,11 @@ static void showCombiner ( FILE* f, int combiner )
|
||||
# endif
|
||||
case MPI_COMBINER_CONTIGUOUS: fprintf(f, "CONTIGUOUS"); break;
|
||||
case MPI_COMBINER_VECTOR: fprintf(f, "VECTOR"); break;
|
||||
-#if defined(MPI_COMBINER_HVECTOR_INTEGER)
|
||||
- case MPI_COMBINER_HVECTOR_INTEGER: fprintf(f, "HVECTOR_INTEGER"); break;
|
||||
-# endif
|
||||
case MPI_COMBINER_HVECTOR: fprintf(f, "HVECTOR"); break;
|
||||
case MPI_COMBINER_INDEXED: fprintf(f, "INDEXED"); break;
|
||||
-#if defined(MPI_COMBINER_HINDEXED_INTEGER)
|
||||
- case MPI_COMBINER_HINDEXED_INTEGER: fprintf(f, "HINDEXED_INTEGER"); break;
|
||||
-# endif
|
||||
case MPI_COMBINER_HINDEXED: fprintf(f, "HINDEXED"); break;
|
||||
#if defined(MPI_COMBINER_INDEXED_BLOCK)
|
||||
case MPI_COMBINER_INDEXED_BLOCK: fprintf(f, "INDEXED_BLOCK"); break;
|
||||
-# endif
|
||||
-#if defined(MPI_COMBINER_STRUCT_INTEGER)
|
||||
- case MPI_COMBINER_STRUCT_INTEGER: fprintf(f, "STRUCT_INTEGER"); break;
|
||||
# endif
|
||||
case MPI_COMBINER_STRUCT: fprintf(f, "STRUCT"); break;
|
||||
#if defined(MPI_COMBINER_SUBARRAY)
|
||||
@@ -458,8 +447,9 @@ Bool isMSI ( MPI_Status* status )
|
||||
static long extentOfTy ( MPI_Datatype ty )
|
||||
{
|
||||
int r;
|
||||
+ MPI_Aint lb;
|
||||
MPI_Aint n;
|
||||
- r = PMPI_Type_extent(ty, &n);
|
||||
+ r = MPI_Type_get_extent(ty, &lb, &n);
|
||||
assert(r == MPI_SUCCESS);
|
||||
return (long)n;
|
||||
}
|
||||
@@ -733,8 +723,6 @@ void walk_type ( void(*f)(void*,long), char* base, MPI_Datatype ty )
|
||||
f(base + offsetof(Ty,loc), sizeof(int));
|
||||
return;
|
||||
}
|
||||
- if (ty == MPI_LB || ty == MPI_UB)
|
||||
- return; /* have zero size, so nothing needs to be done */
|
||||
goto unhandled;
|
||||
/*NOTREACHED*/
|
||||
}
|
||||
--
|
||||
2.17.1
|
||||
|
|
@ -58,5 +58,6 @@ makeinstall_target() {
|
|||
--with-serialization \
|
||||
--with-system \
|
||||
--with-thread \
|
||||
--with-nowide \
|
||||
install
|
||||
}
|
||||
|
|
|
@ -29,10 +29,3 @@ PKG_MESON_OPTS_TARGET="-Ddefault_library=shared \
|
|||
-Dforce_posix_threads=true \
|
||||
-Dtests=false"
|
||||
|
||||
post_makeinstall_target() {
|
||||
rm -rf ${INSTALL}/usr/bin
|
||||
rm -rf ${INSTALL}/usr/lib/gdbus-2.0
|
||||
rm -rf ${INSTALL}/usr/lib/glib-2.0
|
||||
rm -rf ${INSTALL}/usr/lib/installed-tests
|
||||
rm -rf ${INSTALL}/usr/share
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# Copyright (C) 2019-present Shanti Gilbert (https://github.com/shantigilbert)
|
||||
# Copyright (C) 2022-present Fewtarius
|
||||
PKG_NAME="PPSSPPSDL"
|
||||
PKG_VERSION="1ae6047da9743aea8595516815755c37f76c96ae"
|
||||
PKG_VERSION="f0a905cadd0db3124a5368dc88b5ecf4a9b6eb5d"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPLv2"
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
PKG_NAME="amiberry"
|
||||
PKG_ARCH="arm aarch64"
|
||||
PKG_VERSION="e2667f1454bdbf5a1e2b12e171ed2cdd815608a7"
|
||||
PKG_VERSION="611809edb3ac7fa7529a199f97a3b7b8d3f2544b"
|
||||
PKG_LICENSE="GPLv3"
|
||||
PKG_SITE="https://github.com/midwan/amiberry"
|
||||
PKG_URL="${PKG_SITE}.git"
|
||||
|
|
|
@ -10,7 +10,7 @@ case ${DEVICE} in
|
|||
RG552|handheld)
|
||||
PKG_SITE="https://github.com/dolphin-emu/dolphin"
|
||||
PKG_URL="${PKG_SITE}.git"
|
||||
PKG_VERSION="c931529e7aa5926b8a21a193bf8f80244b3ae888"
|
||||
PKG_VERSION="7cd9a78ebf6e49b21a5a5eee99858822a8946faa"
|
||||
PKG_PATCH_DIRS+=" wayland"
|
||||
;;
|
||||
*)
|
||||
|
|
|
@ -10,7 +10,7 @@ PKG_SHORTDESC="Fast PlayStation 1 emulator for x86-64/AArch32/AArch64 "
|
|||
|
||||
case ${DEVICE} in
|
||||
RG552|handheld)
|
||||
PKG_VERSION="8438506206af6f9bb7bcf2303d55913edb5579a0"
|
||||
PKG_VERSION="b881c7e7c4e8f5ca41cbd722306a205818ff93ac"
|
||||
PKG_PATCH_DIRS+=" new"
|
||||
;;
|
||||
*)
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
# Copyright (C) 2022-present Fewtarius
|
||||
|
||||
PKG_NAME="flycastsa"
|
||||
PKG_VERSION="993b705d8bcf9ece7c1c319d3966c407691653f9"
|
||||
PKG_VERSION="88466ec3523d2c1f4893153a5c6a86d854171ce2"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/flyinghead/flycast"
|
||||
PKG_URL="${PKG_SITE}.git"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# Copyright (C) 2018-present 5schatten (https://github.com/5schatten)
|
||||
|
||||
PKG_NAME="hatarisa"
|
||||
PKG_VERSION="116b8a739b1655fa6b864149669a27cd4a0e0794"
|
||||
PKG_VERSION="1792933c86bb7722b93f0f1ad2faf2286b9de18c"
|
||||
PKG_SHA256=""
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/hatari/hatari"
|
||||
|
|
28
packages/games/emulators/minivmacsa/package.mk
Normal file
28
packages/games/emulators/minivmacsa/package.mk
Normal file
|
@ -0,0 +1,28 @@
|
|||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2020-present Fewtarius
|
||||
|
||||
PKG_NAME="minivmacsa"
|
||||
PKG_VERSION="37.03"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://www.gryphel.com/c/minivmac/"
|
||||
PKG_URL="https://www.gryphel.com/d/minivmac/minivmac-${PKG_VERSION}/minivmac-${PKG_VERSION}.src.tgz"
|
||||
PKG_DEPENDS_TARGET="toolchain libX11"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="emulators"
|
||||
PKG_SHORTDESC="Virtual Macintosh Plus"
|
||||
PKG_TOOLCHAIN="manual"
|
||||
|
||||
make_target() {
|
||||
cd ${PKG_BUILD}
|
||||
gcc setup/tool.c -o setup_t
|
||||
./setup_t -t lx64 -fullscreen 1 > setup.sh
|
||||
. setup.sh
|
||||
make
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
mkdir -p ${INSTALL}/usr/bin
|
||||
cp ${PKG_BUILD}/minivmac ${INSTALL}/usr/bin
|
||||
chmod 0755 ${INSTALL}/usr/bin/*
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
#!/bin/sh
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# Copyright (C) 2021-present - Fewtarius
|
||||
|
||||
. /etc/profile
|
||||
|
||||
ARG=${1//[\\]/}
|
||||
export SDL_AUDIODRIVER=alsa
|
||||
echo "[${ARG}]"
|
||||
${FAST_CORES} minivmac
|
|
@ -2,7 +2,7 @@
|
|||
# Copyright (C) 2019-present Shanti Gilbert (https://github.com/shantigilbert)
|
||||
|
||||
PKG_NAME="mupen64plussa-video-glide64mk2"
|
||||
PKG_VERSION="95229fed6d19a4a2cb7f9927d268073682d68c53"
|
||||
PKG_VERSION="a07050d143dddff921180b081164d46aaef2eb29"
|
||||
PKG_SHA256=""
|
||||
PKG_ARCH="aarch64"
|
||||
PKG_LICENSE="GPLv2"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# Copyright (C) 2019-present Shanti Gilbert (https://github.com/shantigilbert)
|
||||
|
||||
PKG_NAME="mupen64plussa-video-gliden64"
|
||||
PKG_VERSION="f4314664a0162b95cb397e1b5ca1bd8b4d5acfa4"
|
||||
PKG_VERSION="a2ecb92e954fdc1dd1130b331935f04381b29e28"
|
||||
PKG_ARCH="aarch64"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/gonetz/GLideN64"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# Copyright (C) 2021-present 351ELEC (https://github.com/351ELEC)
|
||||
|
||||
PKG_NAME="retroarch"
|
||||
PKG_VERSION="86669d21e2c0cad19fd1e13e778364e20593e771"
|
||||
PKG_VERSION="9bc7bebf514d87c6cdd8a665870129fac11d7573"
|
||||
PKG_SITE="https://github.com/libretro/RetroArch"
|
||||
PKG_URL="${PKG_SITE}.git"
|
||||
PKG_LICENSE="GPLv3"
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# Copyright (C) 2020-present Fewtarius
|
||||
|
||||
PKG_NAME="scummvmsa"
|
||||
PKG_VERSION="4d3e4aaaf53b0e9a5a12c5c3868d9f40fd0dc035"
|
||||
PKG_VERSION="ebddc456285650f96a1b01021497d85fb4d1b888"
|
||||
PKG_SHA256=""
|
||||
PKG_REV="1"
|
||||
PKG_LICENSE="GPL2"
|
||||
|
|
458
packages/games/emulators/yuzusa/config/sdl2-config.ini
Normal file
458
packages/games/emulators/yuzusa/config/sdl2-config.ini
Normal file
|
@ -0,0 +1,458 @@
|
|||
|
||||
[ControlsGeneral]
|
||||
# The input devices and parameters for each Switch native input
|
||||
# It should be in the format of "engine:[engine_name],[param1]:[value1],[param2]:[value2]..."
|
||||
# Escape characters $0 (for ':'), $1 (for ',') and $2 (for '$') can be used in values
|
||||
|
||||
# for button input, the following devices are available:
|
||||
# - "keyboard" (default) for keyboard input. Required parameters:
|
||||
# - "code": the code of the key to bind
|
||||
# - "sdl" for joystick input using SDL. Required parameters:
|
||||
# - "joystick": the index of the joystick to bind
|
||||
# - "button"(optional): the index of the button to bind
|
||||
# - "hat"(optional): the index of the hat to bind as direction buttons
|
||||
# - "axis"(optional): the index of the axis to bind
|
||||
# - "direction"(only used for hat): the direction name of the hat to bind. Can be "up", "down", "left" or "right"
|
||||
# - "threshold"(only used for axis): a float value in (-1.0, 1.0) which the button is
|
||||
# triggered if the axis value crosses
|
||||
# - "direction"(only used for axis): "+" means the button is triggered when the axis value
|
||||
# is greater than the threshold; "-" means the button is triggered when the axis value
|
||||
# is smaller than the threshold
|
||||
[ControlsP0]
|
||||
button_a=
|
||||
button_b=
|
||||
button_x=
|
||||
button_y=
|
||||
button_lstick=
|
||||
button_rstick=
|
||||
button_l=
|
||||
button_r=
|
||||
button_zl=
|
||||
button_zr=
|
||||
button_plus=
|
||||
button_minus=
|
||||
button_dleft=
|
||||
button_dup=
|
||||
button_dright=
|
||||
button_ddown=
|
||||
button_lstick_left=
|
||||
button_lstick_up=
|
||||
button_lstick_right=
|
||||
button_lstick_down=
|
||||
button_sl=
|
||||
button_sr=
|
||||
button_home=
|
||||
button_screenshot=
|
||||
|
||||
# for analog input, the following devices are available:
|
||||
# - "analog_from_button" (default) for emulating analog input from direction buttons. Required parameters:
|
||||
# - "up", "down", "left", "right": sub-devices for each direction.
|
||||
# Should be in the format as a button input devices using escape characters, for example, "engine$0keyboard$1code$00"
|
||||
# - "modifier": sub-devices as a modifier.
|
||||
# - "modifier_scale": a float number representing the applied modifier scale to the analog input.
|
||||
# Must be in range of 0.0-1.0. Defaults to 0.5
|
||||
# - "sdl" for joystick input using SDL. Required parameters:
|
||||
# - "joystick": the index of the joystick to bind
|
||||
# - "axis_x": the index of the axis to bind as x-axis (default to 0)
|
||||
# - "axis_y": the index of the axis to bind as y-axis (default to 1)
|
||||
lstick=
|
||||
rstick=
|
||||
|
||||
# To use the debug_pad, prepend `debug_pad_` before each button setting above.
|
||||
# i.e. debug_pad_button_a=
|
||||
|
||||
# Enable debug pad inputs to the guest
|
||||
# 0 (default): Disabled, 1: Enabled
|
||||
debug_pad_enabled =
|
||||
|
||||
# Whether to enable or disable vibration
|
||||
# 0: Disabled, 1 (default): Enabled
|
||||
vibration_enabled=
|
||||
|
||||
# Whether to enable or disable accurate vibrations
|
||||
# 0 (default): Disabled, 1: Enabled
|
||||
enable_accurate_vibrations=
|
||||
|
||||
# Enables controller motion inputs
|
||||
# 0: Disabled, 1 (default): Enabled
|
||||
motion_enabled =
|
||||
|
||||
# Defines the udp device's touch screen coordinate system for cemuhookudp devices
|
||||
# - "min_x", "min_y", "max_x", "max_y"
|
||||
touch_device=
|
||||
|
||||
# for mapping buttons to touch inputs.
|
||||
#touch_from_button_map=1
|
||||
#touch_from_button_maps_0_name=default
|
||||
#touch_from_button_maps_0_count=2
|
||||
#touch_from_button_maps_0_bind_0=foo
|
||||
#touch_from_button_maps_0_bind_1=bar
|
||||
# etc.
|
||||
|
||||
# List of Cemuhook UDP servers, delimited by ','.
|
||||
# Default: 127.0.0.1:26760
|
||||
# Example: 127.0.0.1:26760,123.4.5.67:26761
|
||||
udp_input_servers =
|
||||
|
||||
# Enable controlling an axis via a mouse input.
|
||||
# 0 (default): Off, 1: On
|
||||
mouse_panning =
|
||||
|
||||
# Set mouse sensitivity.
|
||||
# Default: 1.0
|
||||
mouse_panning_sensitivity =
|
||||
|
||||
# Emulate an analog control stick from keyboard inputs.
|
||||
# 0 (default): Disabled, 1: Enabled
|
||||
emulate_analog_keyboard =
|
||||
|
||||
# Enable mouse inputs to the guest
|
||||
# 0 (default): Disabled, 1: Enabled
|
||||
mouse_enabled =
|
||||
|
||||
# Enable keyboard inputs to the guest
|
||||
# 0 (default): Disabled, 1: Enabled
|
||||
keyboard_enabled =
|
||||
|
||||
[Core]
|
||||
# Whether to use multi-core for CPU emulation
|
||||
# 0: Disabled, 1 (default): Enabled
|
||||
use_multi_core =
|
||||
|
||||
# Enable extended guest system memory layout (6GB DRAM)
|
||||
# 0 (default): Disabled, 1: Enabled
|
||||
use_extended_memory_layout =
|
||||
|
||||
[Cpu]
|
||||
# Adjusts various optimizations.
|
||||
# Auto-select mode enables choice unsafe optimizations.
|
||||
# Accurate enables only safe optimizations.
|
||||
# Unsafe allows any unsafe optimizations.
|
||||
# 0 (default): Auto-select, 1: Accurate, 2: Enable unsafe optimizations
|
||||
cpu_accuracy =
|
||||
|
||||
# Allow disabling safe optimizations.
|
||||
# 0 (default): Disabled, 1: Enabled
|
||||
cpu_debug_mode =
|
||||
|
||||
# Enable inline page tables optimization (faster guest memory access)
|
||||
# 0: Disabled, 1 (default): Enabled
|
||||
cpuopt_page_tables =
|
||||
|
||||
# Enable block linking CPU optimization (reduce block dispatcher use during predictable jumps)
|
||||
# 0: Disabled, 1 (default): Enabled
|
||||
cpuopt_block_linking =
|
||||
|
||||
# Enable return stack buffer CPU optimization (reduce block dispatcher use during predictable returns)
|
||||
# 0: Disabled, 1 (default): Enabled
|
||||
cpuopt_return_stack_buffer =
|
||||
|
||||
# Enable fast dispatcher CPU optimization (use a two-tiered dispatcher architecture)
|
||||
# 0: Disabled, 1 (default): Enabled
|
||||
cpuopt_fast_dispatcher =
|
||||
|
||||
# Enable context elimination CPU Optimization (reduce host memory use for guest context)
|
||||
# 0: Disabled, 1 (default): Enabled
|
||||
cpuopt_context_elimination =
|
||||
|
||||
# Enable constant propagation CPU optimization (basic IR optimization)
|
||||
# 0: Disabled, 1 (default): Enabled
|
||||
cpuopt_const_prop =
|
||||
|
||||
# Enable miscellaneous CPU optimizations (basic IR optimization)
|
||||
# 0: Disabled, 1 (default): Enabled
|
||||
cpuopt_misc_ir =
|
||||
|
||||
# Enable reduction of memory misalignment checks (reduce memory fallbacks for misaligned access)
|
||||
# 0: Disabled, 1 (default): Enabled
|
||||
cpuopt_reduce_misalign_checks =
|
||||
|
||||
# Enable Host MMU Emulation (faster guest memory access)
|
||||
# 0: Disabled, 1 (default): Enabled
|
||||
cpuopt_fastmem =
|
||||
|
||||
# Enable Host MMU Emulation for exclusive memory instructions (faster guest memory access)
|
||||
# 0: Disabled, 1 (default): Enabled
|
||||
cpuopt_fastmem_exclusives =
|
||||
|
||||
# Enable fallback on failure of fastmem of exclusive memory instructions (faster guest memory access)
|
||||
# 0: Disabled, 1 (default): Enabled
|
||||
cpuopt_recompile_exclusives =
|
||||
|
||||
# Enable unfuse FMA (improve performance on CPUs without FMA)
|
||||
# Only enabled if cpu_accuracy is set to Unsafe. Automatically chosen with cpu_accuracy = Auto-select.
|
||||
# 0: Disabled, 1 (default): Enabled
|
||||
cpuopt_unsafe_unfuse_fma =
|
||||
|
||||
# Enable faster FRSQRTE and FRECPE
|
||||
# Only enabled if cpu_accuracy is set to Unsafe.
|
||||
# 0: Disabled, 1 (default): Enabled
|
||||
cpuopt_unsafe_reduce_fp_error =
|
||||
|
||||
# Enable faster ASIMD instructions (32 bits only)
|
||||
# Only enabled if cpu_accuracy is set to Unsafe. Automatically chosen with cpu_accuracy = Auto-select.
|
||||
# 0: Disabled, 1 (default): Enabled
|
||||
cpuopt_unsafe_ignore_standard_fpcr =
|
||||
|
||||
# Enable inaccurate NaN handling
|
||||
# Only enabled if cpu_accuracy is set to Unsafe. Automatically chosen with cpu_accuracy = Auto-select.
|
||||
# 0: Disabled, 1 (default): Enabled
|
||||
cpuopt_unsafe_inaccurate_nan =
|
||||
|
||||
# Disable address space checks (64 bits only)
|
||||
# Only enabled if cpu_accuracy is set to Unsafe. Automatically chosen with cpu_accuracy = Auto-select.
|
||||
# 0: Disabled, 1 (default): Enabled
|
||||
cpuopt_unsafe_fastmem_check =
|
||||
|
||||
# Enable faster exclusive instructions
|
||||
# Only enabled if cpu_accuracy is set to Unsafe. Automatically chosen with cpu_accuracy = Auto-select.
|
||||
# 0: Disabled, 1 (default): Enabled
|
||||
cpuopt_unsafe_ignore_global_monitor =
|
||||
|
||||
[Renderer]
|
||||
# Which backend API to use.
|
||||
# 0: OpenGL, 1 (default): Vulkan
|
||||
backend =
|
||||
|
||||
# Enable graphics API debugging mode.
|
||||
# 0 (default): Disabled, 1: Enabled
|
||||
debug =
|
||||
|
||||
# Enable shader feedback.
|
||||
# 0 (default): Disabled, 1: Enabled
|
||||
renderer_shader_feedback =
|
||||
|
||||
# Enable Nsight Aftermath crash dumps
|
||||
# 0 (default): Disabled, 1: Enabled
|
||||
nsight_aftermath =
|
||||
|
||||
# Disable shader loop safety checks, executing the shader without loop logic changes
|
||||
# 0 (default): Disabled, 1: Enabled
|
||||
disable_shader_loop_safety_checks =
|
||||
|
||||
# Which Vulkan physical device to use (defaults to 0)
|
||||
vulkan_device =
|
||||
|
||||
# 0: 0.5x (360p/540p) [EXPERIMENTAL]
|
||||
# 1: 0.75x (540p/810p) [EXPERIMENTAL]
|
||||
# 2 (default): 1x (720p/1080p)
|
||||
# 3: 2x (1440p/2160p)
|
||||
# 4: 3x (2160p/3240p)
|
||||
# 5: 4x (2880p/4320p)
|
||||
# 6: 5x (3600p/5400p)
|
||||
# 7: 6x (4320p/6480p)
|
||||
resolution_setup = 0
|
||||
|
||||
# Pixel filter to use when up- or down-sampling rendered frames.
|
||||
# 0: Nearest Neighbor
|
||||
# 1 (default): Bilinear
|
||||
# 2: Bicubic
|
||||
# 3: Gaussian
|
||||
# 4: ScaleForce
|
||||
# 5: AMD FidelityFX™️ Super Resolution [Vulkan Only]
|
||||
scaling_filter =
|
||||
|
||||
# Anti-Aliasing (AA)
|
||||
# 0 (default): None, 1: FXAA
|
||||
anti_aliasing =
|
||||
|
||||
# Whether to use fullscreen or borderless window mode
|
||||
# 0 (Windows default): Borderless window, 1 (All other default): Exclusive fullscreen
|
||||
fullscreen_mode =
|
||||
|
||||
# Aspect ratio
|
||||
# 0: Default (16:9), 1: Force 4:3, 2: Force 21:9, 3: Stretch to Window
|
||||
aspect_ratio =
|
||||
|
||||
# Anisotropic filtering
|
||||
# 0: Default, 1: 2x, 2: 4x, 3: 8x, 4: 16x
|
||||
max_anisotropy =
|
||||
|
||||
# Whether to enable V-Sync (caps the framerate at 60FPS) or not.
|
||||
# 0 (default): Off, 1: On
|
||||
use_vsync =
|
||||
|
||||
# Selects the OpenGL shader backend. NV_gpu_program5 is required for GLASM. If NV_gpu_program5 is
|
||||
# not available and GLASM is selected, GLSL will be used.
|
||||
# 0: GLSL, 1 (default): GLASM, 2: SPIR-V
|
||||
shader_backend =
|
||||
|
||||
# Whether to allow asynchronous shader building.
|
||||
# 0 (default): Off, 1: On
|
||||
use_asynchronous_shaders =
|
||||
|
||||
# NVDEC emulation.
|
||||
# 0: Disabled, 1: CPU Decoding, 2 (default): GPU Decoding
|
||||
nvdec_emulation =
|
||||
|
||||
# Accelerate ASTC texture decoding.
|
||||
# 0: Off, 1 (default): On
|
||||
accelerate_astc =
|
||||
|
||||
# Turns on the speed limiter, which will limit the emulation speed to the desired speed limit value
|
||||
# 0: Off, 1: On (default)
|
||||
use_speed_limit =
|
||||
|
||||
# Limits the speed of the game to run no faster than this value as a percentage of target speed
|
||||
# 1 - 9999: Speed limit as a percentage of target game speed. 100 (default)
|
||||
speed_limit =
|
||||
|
||||
# Whether to use disk based shader cache
|
||||
# 0: Off, 1 (default): On
|
||||
use_disk_shader_cache =
|
||||
|
||||
# Which gpu accuracy level to use
|
||||
# 0: Normal, 1 (default): High, 2: Extreme (Very slow)
|
||||
gpu_accuracy =
|
||||
|
||||
# Whether to use asynchronous GPU emulation
|
||||
# 0 : Off (slow), 1 (default): On (fast)
|
||||
use_asynchronous_gpu_emulation =
|
||||
|
||||
# Inform the guest that GPU operations completed more quickly than they did.
|
||||
# 0: Off, 1 (default): On
|
||||
use_fast_gpu_time =
|
||||
|
||||
# Force unmodified buffers to be flushed, which can cost performance.
|
||||
# 0: Off (default), 1: On
|
||||
use_pessimistic_flushes =
|
||||
|
||||
# Whether to use garbage collection or not for GPU caches.
|
||||
# 0 (default): Off, 1: On
|
||||
use_caches_gc =
|
||||
|
||||
# The clear color for the renderer. What shows up on the sides of the bottom screen.
|
||||
# Must be in range of 0-255. Defaults to 0 for all.
|
||||
bg_red =
|
||||
bg_blue =
|
||||
bg_green =
|
||||
|
||||
[Audio]
|
||||
# Which audio output engine to use.
|
||||
# auto (default): Auto-select
|
||||
# cubeb: Cubeb audio engine (if available)
|
||||
# sdl2: SDL2 audio engine (if available)
|
||||
# null: No audio output
|
||||
output_engine = sdl2
|
||||
|
||||
# Which audio device to use.
|
||||
# auto (default): Auto-select
|
||||
output_device =
|
||||
|
||||
# Output volume.
|
||||
# 100 (default): 100%, 0; mute
|
||||
volume =
|
||||
|
||||
[Data Storage]
|
||||
# Whether to create a virtual SD card.
|
||||
# 1 (default): Yes, 0: No
|
||||
use_virtual_sd =
|
||||
|
||||
# Whether or not to enable gamecard emulation
|
||||
# 1: Yes, 0 (default): No
|
||||
gamecard_inserted =
|
||||
|
||||
# Whether or not the gamecard should be emulated as the current game
|
||||
# If 'gamecard_inserted' is 0 this setting is irrelevant
|
||||
# 1: Yes, 0 (default): No
|
||||
gamecard_current_game =
|
||||
|
||||
# Path to an XCI file to use as the gamecard
|
||||
# If 'gamecard_inserted' is 0 this setting is irrelevant
|
||||
# If 'gamecard_current_game' is 1 this setting is irrelevant
|
||||
gamecard_path =
|
||||
|
||||
[System]
|
||||
# Whether the system is docked
|
||||
# 1 (default): Yes, 0: No
|
||||
use_docked_mode =
|
||||
|
||||
# Sets the seed for the RNG generator built into the switch
|
||||
# rng_seed will be ignored and randomly generated if rng_seed_enabled is false
|
||||
rng_seed_enabled =
|
||||
rng_seed =
|
||||
|
||||
# Sets the current time (in seconds since 12:00 AM Jan 1, 1970) that will be used by the time service
|
||||
# This will auto-increment, with the time set being the time the game is started
|
||||
# This override will only occur if custom_rtc_enabled is true, otherwise the current time is used
|
||||
custom_rtc_enabled =
|
||||
custom_rtc =
|
||||
|
||||
# Sets the systems language index
|
||||
# 0: Japanese, 1: English (default), 2: French, 3: German, 4: Italian, 5: Spanish, 6: Chinese,
|
||||
# 7: Korean, 8: Dutch, 9: Portuguese, 10: Russian, 11: Taiwanese, 12: British English, 13: Canadian French,
|
||||
# 14: Latin American Spanish, 15: Simplified Chinese, 16: Traditional Chinese, 17: Brazilian Portuguese
|
||||
language_index =
|
||||
|
||||
# The system region that yuzu will use during emulation
|
||||
# -1: Auto-select (default), 0: Japan, 1: USA, 2: Europe, 3: Australia, 4: China, 5: Korea, 6: Taiwan
|
||||
region_index =
|
||||
|
||||
# The system time zone that yuzu will use during emulation
|
||||
# 0: Auto-select (default), 1: Default (system archive value), Others: Index for specified time zone
|
||||
time_zone_index =
|
||||
|
||||
# Sets the sound output mode.
|
||||
# 0: Mono, 1 (default): Stereo, 2: Surround
|
||||
sound_index =
|
||||
|
||||
[Miscellaneous]
|
||||
# A filter which removes logs below a certain logging level.
|
||||
# Examples: *:Debug Kernel.SVC:Trace Service.*:Critical
|
||||
log_filter = *:Trace
|
||||
|
||||
# Use developer keys
|
||||
# 0 (default): Disabled, 1: Enabled
|
||||
use_dev_keys =
|
||||
|
||||
[Debugging]
|
||||
# Record frame time data, can be found in the log directory. Boolean value
|
||||
record_frame_times =
|
||||
# Determines whether or not yuzu will dump the ExeFS of all games it attempts to load while loading them
|
||||
dump_exefs=false
|
||||
# Determines whether or not yuzu will dump all NSOs it attempts to load while loading them
|
||||
dump_nso=false
|
||||
# Determines whether or not yuzu will save the filesystem access log.
|
||||
enable_fs_access_log=false
|
||||
# Enables verbose reporting services
|
||||
reporting_services =
|
||||
# Determines whether or not yuzu will report to the game that the emulated console is in Kiosk Mode
|
||||
# false: Retail/Normal Mode (default), true: Kiosk Mode
|
||||
quest_flag =
|
||||
# Determines whether debug asserts should be enabled, which will throw an exception on asserts.
|
||||
# false: Disabled (default), true: Enabled
|
||||
use_debug_asserts =
|
||||
# Determines whether unimplemented HLE service calls should be automatically stubbed.
|
||||
# false: Disabled (default), true: Enabled
|
||||
use_auto_stub =
|
||||
# Enables/Disables the macro JIT compiler
|
||||
disable_macro_jit=false
|
||||
# Determines whether to enable the GDB stub and wait for the debugger to attach before running.
|
||||
# false: Disabled (default), true: Enabled
|
||||
use_gdbstub=false
|
||||
# The port to use for the GDB server, if it is enabled.
|
||||
gdbstub_port=6543
|
||||
|
||||
[WebService]
|
||||
# Whether or not to enable telemetry
|
||||
# 0: No, 1 (default): Yes
|
||||
enable_telemetry =
|
||||
# URL for Web API
|
||||
web_api_url = https://api.yuzu-emu.org
|
||||
# Username and token for yuzu Web Service
|
||||
# See https://profile.yuzu-emu.org/ for more info
|
||||
yuzu_username =
|
||||
yuzu_token =
|
||||
|
||||
[Network]
|
||||
# Name of the network interface device to use with yuzu LAN play.
|
||||
# e.g. On *nix: 'enp7s0', 'wlp6s0u1u3u3', 'lo'
|
||||
# e.g. On Windows: 'Ethernet', 'Wi-Fi'
|
||||
network_interface =
|
||||
|
||||
[AddOns]
|
||||
# Used to disable add-ons
|
||||
# List of title IDs of games that will have add-ons disabled (separated by '|'):
|
||||
title_ids =
|
||||
# For each title ID, have a key/value pair called `disabled_<title_id>` equal to the names of the add-ons to disable (sep. by '|')
|
||||
# e.x. disabled_0100000000010000 = Update|DLC <- disables Updates and DLC on Super Mario Odyssey
|
53
packages/games/emulators/yuzusa/package.mk
Normal file
53
packages/games/emulators/yuzusa/package.mk
Normal file
|
@ -0,0 +1,53 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2022-present BrooksyTech (https://github.com/brooksytech)
|
||||
|
||||
PKG_NAME="yuzusa"
|
||||
PKG_VERSION="48b4eca28a397adbaa68d1042262172fcdee6be8"
|
||||
PKG_ARCH="x86_64"
|
||||
PKG_LICENSE="GPLv3"
|
||||
PKG_SITE="https://github.com/yuzu-emu/yuzu"
|
||||
PKG_URL="$PKG_SITE.git"
|
||||
PKG_DEPENDS_TARGET="toolchain libfmt boost ffmpeg zstd zlib libzip lz4 opus libusb"
|
||||
PKG_SHORTDESC="Nintendo Switch emulator"
|
||||
PKG_TOOLCHAIN="cmake"
|
||||
GET_HANDLER_SUPPORT="git"
|
||||
|
||||
if [ ! "${OPENGL}" = "no" ]; then
|
||||
PKG_DEPENDS_TARGET+=" ${OPENGL} glu libglvnd"
|
||||
PKG_CONFIGURE_OPTS_TARGET+=" -DENABLE_X11=OFF"
|
||||
fi
|
||||
|
||||
if [ "${OPENGLES_SUPPORT}" = yes ]; then
|
||||
PKG_DEPENDS_TARGET+=" ${OPENGLES}"
|
||||
fi
|
||||
|
||||
if [ "${DISPLAYSERVER}" = "wl" ]; then
|
||||
PKG_DEPENDS_TARGET+=" wayland ${WINDOWMANAGER} xorg-server xrandr libXi"
|
||||
fi
|
||||
|
||||
if [ "${VULKAN_SUPPORT}" = "yes" ]
|
||||
then
|
||||
PKG_DEPENDS_TARGET+=" vulkan-loader vulkan-headers"
|
||||
fi
|
||||
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DENABLE_QT=OFF \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DYUZU_USE_BUNDLED_SDL2=OFF \
|
||||
-DYUZU_TESTS=OFF \
|
||||
-DENABLE_SDL2=ON \
|
||||
-DARCHITECTURE_x86_64=ON \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
-DYUZU_USE_BUNDLED_LIBUSB=OFF \
|
||||
-DENABLE_WEB_SERVICE=OFF \
|
||||
-DUSE_DISCORD_PRESENCE=OFF"
|
||||
|
||||
makeinstall_target() {
|
||||
mkdir -p ${INSTALL}/usr/bin
|
||||
cp -rf ${PKG_BUILD}/.${TARGET_NAME}/bin/yuzu-cmd ${INSTALL}/usr/bin
|
||||
cp -rf ${PKG_DIR}/scripts/* ${INSTALL}/usr/bin
|
||||
|
||||
chmod +x ${INSTALL}/usr/bin/start_yuzu.sh
|
||||
|
||||
mkdir -p ${INSTALL}/usr/config/yuzu
|
||||
cp -rf ${PKG_DIR}/config/* ${INSTALL}/usr/config/yuzu
|
||||
}
|
59
packages/games/emulators/yuzusa/patches/001-fix-cmake.patch
Normal file
59
packages/games/emulators/yuzusa/patches/001-fix-cmake.patch
Normal file
|
@ -0,0 +1,59 @@
|
|||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index c6fc5dd9e..78098416b 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -195,7 +195,7 @@ if (YUZU_TESTS)
|
||||
find_package(Catch2 2.13.7 REQUIRED CONFIG)
|
||||
endif()
|
||||
|
||||
-find_package(Boost 1.73.0 COMPONENTS context)
|
||||
+find_package(Boost 1.80.0 COMPONENTS context REQUIRED)
|
||||
if (Boost_FOUND)
|
||||
set(Boost_LIBRARIES Boost::boost)
|
||||
# Conditionally add Boost::context only if the found Boost package provides it
|
||||
@@ -205,7 +205,7 @@ if (Boost_FOUND)
|
||||
list(APPEND Boost_LIBRARIES Boost::context)
|
||||
endif()
|
||||
else()
|
||||
- message(FATAL_ERROR "Boost 1.73.0 or newer not found")
|
||||
+ message(FATAL_ERROR "Boost 1.80.0 or newer not found")
|
||||
endif()
|
||||
|
||||
# boost:asio has functions that require AcceptEx et al
|
||||
@@ -386,11 +386,9 @@ endif()
|
||||
|
||||
# Ensure libusb is properly configured (based on dolphin libusb include)
|
||||
if(NOT APPLE AND NOT YUZU_USE_BUNDLED_LIBUSB)
|
||||
- find_package(PkgConfig)
|
||||
+ add_definitions(-D__LIBUSB__)
|
||||
if (PKG_CONFIG_FOUND AND NOT CMAKE_SYSTEM_NAME MATCHES "DragonFly|FreeBSD")
|
||||
- pkg_check_modules(LIBUSB QUIET libusb-1.0>=1.0.24)
|
||||
- else()
|
||||
- find_package(LibUSB)
|
||||
+ find_package(LibUSB)
|
||||
endif()
|
||||
|
||||
if (LIBUSB_FOUND)
|
||||
@@ -398,8 +396,7 @@ if(NOT APPLE AND NOT YUZU_USE_BUNDLED_LIBUSB)
|
||||
target_include_directories(usb INTERFACE "${LIBUSB_INCLUDE_DIRS}")
|
||||
target_link_libraries(usb INTERFACE "${LIBUSB_LIBRARIES}")
|
||||
else()
|
||||
- message(WARNING "libusb not found, falling back to externals")
|
||||
- set(YUZU_USE_BUNDLED_LIBUSB ON)
|
||||
+ message(WARNING "libusb not found")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
diff --git a/src/input_common/drivers/gc_adapter.cpp b/src/input_common/drivers/gc_adapter.cpp
|
||||
index 826fa2109..bc6d90f1d 100644
|
||||
--- a/src/input_common/drivers/gc_adapter.cpp
|
||||
+++ b/src/input_common/drivers/gc_adapter.cpp
|
||||
@@ -2,7 +2,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include <fmt/format.h>
|
||||
-#include <libusb.h>
|
||||
+#include <libusb-1.0/libusb.h>
|
||||
|
||||
#include "common/logging/log.h"
|
||||
#include "common/param_package.h"
|
|
@ -0,0 +1,15 @@
|
|||
diff --git a/src/input_common/drivers/sdl_driver.cpp b/src/input_common/drivers/sdl_driver.cpp
|
||||
index 45ce588f0..402b4956c 100644
|
||||
--- a/src/input_common/drivers/sdl_driver.cpp
|
||||
+++ b/src/input_common/drivers/sdl_driver.cpp
|
||||
@@ -211,8 +211,8 @@ public:
|
||||
std::string GetControllerName() const {
|
||||
if (sdl_controller) {
|
||||
switch (SDL_GameControllerGetType(sdl_controller.get())) {
|
||||
- case SDL_CONTROLLER_TYPE_XBOX360:
|
||||
- return "Xbox 360 Controller";
|
||||
+ // case SDL_CONTROLLER_TYPE_XBOX360:
|
||||
+ // return "Xbox 360 Controller";
|
||||
case SDL_CONTROLLER_TYPE_XBOXONE:
|
||||
return "Xbox One Controller";
|
||||
case SDL_CONTROLLER_TYPE_PS3:
|
26
packages/games/emulators/yuzusa/scripts/start_yuzu.sh
Normal file
26
packages/games/emulators/yuzusa/scripts/start_yuzu.sh
Normal file
|
@ -0,0 +1,26 @@
|
|||
#!/bin/bash
|
||||
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2022-present BrooksyTech (https://github.com/brooksytech)
|
||||
|
||||
. /etc/profile
|
||||
|
||||
#Check if yuzu exists in .config
|
||||
if [ ! -d "/storage/.config/yuzu" ]; then
|
||||
mkdir -p "/storage/.config/yuzu"
|
||||
cp -r "/usr/config/yuzu" "/storage/.config/"
|
||||
fi
|
||||
|
||||
#Link yuzu keys to bios folder
|
||||
if [ ! -d "/storage/roms/bios/yuzu" ]; then
|
||||
mkdir -p "/storage/.config/yuzu"
|
||||
fi
|
||||
rm -rf /storage/.config/yuzu/keys
|
||||
ln -sf /storage/roms/bios/yuzu /storage/.config/yuzu/keys
|
||||
|
||||
#Link .config/yuzu to .local
|
||||
rm -rf /storage/.local/share/yuzu
|
||||
ln -sf /storage/.config/yuzu /storage/.local/share/yuzu
|
||||
|
||||
#Run Yuzu emulator
|
||||
/usr/bin/yuzu-cmd "${1}"
|
33
packages/games/libretro/beetle-saturn/package.mk
Normal file
33
packages/games/libretro/beetle-saturn/package.mk
Normal file
|
@ -0,0 +1,33 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2022-present BrooksyTech (https://github.com/brooksytech)
|
||||
|
||||
PKG_NAME="beetle-saturn"
|
||||
PKG_VERSION="054862a4ccb9b2f1bad9e5b075fc3d1116dc8055"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/libretro/beetle-saturn-libretro"
|
||||
PKG_URL="$PKG_SITE.git"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_SECTION="libretro"
|
||||
PKG_SHORTDESC="Beetle Saturn libretro, a fork from mednafen"
|
||||
PKG_TOOLCHAIN="make"
|
||||
|
||||
if [ ! "${OPENGL}" = "no" ]; then
|
||||
PKG_DEPENDS_TARGET+=" ${OPENGL} glu libglvnd"
|
||||
fi
|
||||
|
||||
if [ "${OPENGLES_SUPPORT}" = yes ]; then
|
||||
PKG_DEPENDS_TARGET+=" ${OPENGLES}"
|
||||
fi
|
||||
|
||||
make_target() {
|
||||
if [ "$ARCH" == "i386" -o "$ARCH" == "x86_64" ]; then
|
||||
make platform=unix CC=$CC CXX=$CXX AR=$AR
|
||||
else
|
||||
make platform=armv CC=$CC CXX=$CXX AR=$AR
|
||||
fi
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
mkdir -p $INSTALL/usr/lib/libretro
|
||||
cp mednafen_saturn_libretro.so $INSTALL/usr/lib/libretro/beetle_saturn_libretro.so
|
||||
}
|
|
@ -20,7 +20,7 @@
|
|||
################################################################################
|
||||
|
||||
PKG_NAME="core-info"
|
||||
PKG_VERSION="628ae480b16dd5e4bff7e40eb223131cec7cbae5"
|
||||
PKG_VERSION="c2af17f1d04c61135dda4978e0e8034c00d4b61a"
|
||||
PKG_SHA256=""
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/libretro/libretro-core-info"
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# Maintenance 2020 351ELEC team (https://github.com/fewtarius/351ELEC)
|
||||
|
||||
PKG_NAME="fbneo"
|
||||
PKG_VERSION="c5f7b020c3a2bbe34bcdb15a4700a4c8d1b7b2e3"
|
||||
PKG_VERSION="a12455af75e60765da134b83051700e0fbe3803a"
|
||||
PKG_SHA256=""
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# Copyright (C) 2022-present Fewtarius
|
||||
|
||||
PKG_NAME="flycast"
|
||||
PKG_VERSION="993b705d8bcf9ece7c1c319d3966c407691653f9"
|
||||
PKG_VERSION="88466ec3523d2c1f4893153a5c6a86d854171ce2"
|
||||
PKG_SITE="https://github.com/flyinghead/flycast"
|
||||
PKG_URL="${PKG_SITE}.git"
|
||||
PKG_DEPENDS_TARGET="toolchain libzip"
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# Copyright (C) 2022-present Fewtarius
|
||||
|
||||
PKG_NAME="freej2me"
|
||||
PKG_VERSION="5af44b9249d352c2c2f05cfc214fccc385c92596"
|
||||
PKG_VERSION="e887a521e9b1d22ee87ed8be6b7a0651932d8bfa"
|
||||
PKG_SHA256=""
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
################################################################################
|
||||
|
||||
PKG_NAME="mame2003-plus"
|
||||
PKG_VERSION="7836cc7720c9910b7eb47fdc85e69d4d79713355"
|
||||
PKG_VERSION="5dd4a30500edc0b00c712750093aa287c9bb4ce2"
|
||||
PKG_SHA256=""
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
|
|
19
packages/games/libretro/minivmac/package.mk
Normal file
19
packages/games/libretro/minivmac/package.mk
Normal file
|
@ -0,0 +1,19 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2022-present Fewtarius
|
||||
|
||||
PKG_NAME="minivmac"
|
||||
PKG_VERSION="7a774cd"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/libretro/libretro-minivmac"
|
||||
PKG_URL="${PKG_SITE}.git"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_SECTION="libretro"
|
||||
PKG_SHORTDESC="Virtual Macintosh"
|
||||
PKG_TOOLCHAIN="make"
|
||||
|
||||
|
||||
makeinstall_target() {
|
||||
mkdir -p ${INSTALL}/usr/lib/libretro
|
||||
cp ${PKG_BUILD}/minivmac_libretro.so ${INSTALL}/usr/lib/libretro/
|
||||
}
|
|
@ -2,7 +2,7 @@
|
|||
# Copyright (C) 2020-present Fewtarius
|
||||
|
||||
PKG_NAME="mupen64plus-nx"
|
||||
PKG_VERSION="c10546e333d57eb2e5a6ccef1e84cb6f9274c526"
|
||||
PKG_VERSION="1b67122ff6a923c93a56ff94273e3768a6da5dff"
|
||||
PKG_SHA256=""
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/libretro/mupen64plus-libretro-nx"
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# Copyright (C) 2022-present Fewtarius
|
||||
|
||||
PKG_NAME="pcsx_rearmed"
|
||||
PKG_VERSION="d0d2939d7a485bbe97017e5ae20b504d225c09d3"
|
||||
PKG_VERSION="a4e249a1373cf6269e1e4e0d60105e72210e67d3"
|
||||
PKG_SHA256=""
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="arm aarch64"
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
################################################################################
|
||||
|
||||
PKG_NAME="ppsspp"
|
||||
PKG_VERSION="1ae6047da9743aea8595516815755c37f76c96ae"
|
||||
PKG_VERSION="f0a905cadd0db3124a5368dc88b5ecf4a9b6eb5d"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/hrydgard/ppsspp"
|
||||
PKG_URL="https://github.com/hrydgard/ppsspp.git"
|
||||
|
@ -66,6 +66,15 @@ else
|
|||
PKG_CMAKE_OPTS_TARGET+=" -DUSE_WAYLAND_WSI=OFF"
|
||||
fi
|
||||
|
||||
case ${TARGET_ARCH} in
|
||||
arm)
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DARMV7=ON"
|
||||
;;
|
||||
aarch64)
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DARM64=ON"
|
||||
;;
|
||||
esac
|
||||
|
||||
PKG_CMAKE_OPTS_TARGET+="${PKG_CMAKE_OPTS_TARGET} \
|
||||
-DUSE_SYSTEM_FFMPEG=OFF \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
|
|
18
packages/games/libretro/ppsspp/patches/004-build-flags.patch
Normal file
18
packages/games/libretro/ppsspp/patches/004-build-flags.patch
Normal file
|
@ -0,0 +1,18 @@
|
|||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index d43497e2c..11ac4fce8 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -302,11 +302,11 @@ if(NOT MSVC)
|
||||
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -D_DEBUG")
|
||||
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -D_NDEBUG")
|
||||
- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2 -D_NDEBUG")
|
||||
+ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Ofast -fno-tree-slp-vectorize -D_NDEBUG")
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g -D_NDEBUG")
|
||||
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g -D_DEBUG")
|
||||
set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} -Os -D_NDEBUG")
|
||||
- set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O2 -D_NDEBUG")
|
||||
+ set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Ofast -fno-tree-slp-vectorize -D_NDEBUG")
|
||||
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -O2 -g -D_NDEBUG")
|
||||
|
||||
# Disable some warnings
|
|
@ -20,7 +20,7 @@
|
|||
################################################################################
|
||||
|
||||
PKG_NAME="puae"
|
||||
PKG_VERSION="1618077ebde376de1638455c19b315de376d90b4"
|
||||
PKG_VERSION="d9a8dfbde7f6967fea3cffe09cd87e1d79a1a3fd"
|
||||
PKG_SHA256=""
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
################################################################################
|
||||
|
||||
PKG_NAME="stella"
|
||||
PKG_VERSION="d1767d4d93adff907b370c4a26097fb873a00260"
|
||||
PKG_VERSION="fa49e034101a22344c7bd01648d514b6cc61ac7f"
|
||||
PKG_SHA256=""
|
||||
PKG_REV="1"
|
||||
PKG_LICENSE="GPL2"
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
################################################################################
|
||||
|
||||
PKG_NAME="virtualjaguar"
|
||||
PKG_VERSION="263c979be4ca757c43fb525bd6f0887998e57041"
|
||||
PKG_VERSION="2cc06899b839639397b8b30384a191424b6f529d"
|
||||
PKG_SHA256=""
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# Copyright (C) 2020-present Fewtarius
|
||||
|
||||
PKG_NAME="moonlight"
|
||||
PKG_VERSION="56f84ab662d17e6f3a663cfc340652fd1b5f210a"
|
||||
PKG_VERSION="62007b912e6e2c0ffafad2c1edfd346c11450d1d"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPLv3"
|
||||
PKG_SITE="https://github.com/moonlight-stream/moonlight-embedded"
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
--- moonlight-orig/cmake/FindRockchip.cmake 2022-05-26 15:41:01.746182723 -0700
|
||||
+++ areascout-moonlight/cmake/FindRockchip.cmake 2022-05-26 15:39:28.741230073 -0700
|
||||
@@ -8,7 +8,13 @@
|
||||
diff --git a/cmake/FindRockchip.cmake b/cmake/FindRockchip.cmake
|
||||
index 83764dd..1ad3f93 100644
|
||||
--- a/cmake/FindRockchip.cmake
|
||||
+++ b/cmake/FindRockchip.cmake
|
||||
@@ -8,7 +8,13 @@ find_library(DRM_LIBRARY
|
||||
NAMES libdrm.so
|
||||
DOC "Path to libdrm Library"
|
||||
PATHS /usr/local/lib /usr/lib /usr/lib/aarch64-linux-gnu /usr/lib/arm-linux-gnueabihf)
|
||||
|
@ -15,28 +17,29 @@
|
|||
|
||||
find_path(ROCKCHIP_INCLUDE_DIR
|
||||
NAMES rk_mpi.h
|
||||
@@ -26,4 +32,4 @@
|
||||
@@ -26,4 +32,4 @@ include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Rockchip DEFAULT_MSG ROCKCHIP_INCLUDE_DIR ROCKCHIP_LIBRARY)
|
||||
|
||||
set(ROCKCHIP_INCLUDE_DIRS ${ROCKCHIP_INCLUDE_DIR} ${DRM_INCLUDE_DIR})
|
||||
-set(ROCKCHIP_LIBRARIES ${ROCKCHIP_LIBRARY} ${DRM_LIBRARY})
|
||||
+set(ROCKCHIP_LIBRARIES ${ROCKCHIP_LIBRARY} ${DRM_LIBRARY} ${RGA_LIBRARY})
|
||||
--- moonlight-orig/src/video/rk.c 2022-05-26 15:41:01.750182764 -0700
|
||||
+++ areascout-moonlight/src/video/rk.c 2022-05-26 15:39:28.749230155 -0700
|
||||
@@ -37,9 +37,11 @@
|
||||
diff --git a/src/video/rk.c b/src/video/rk.c
|
||||
index be355be..ad1e15e 100644
|
||||
--- a/src/video/rk.c
|
||||
+++ b/src/video/rk.c
|
||||
@@ -38,8 +38,10 @@
|
||||
#include <libdrm/drm_fourcc.h>
|
||||
|
||||
#include <rockchip/rk_mpi.h>
|
||||
+#include <rga/RgaApi.h>
|
||||
|
||||
#define READ_BUF_SIZE 0x00100000
|
||||
#define MAX_FRAMES 16
|
||||
+#define MAX_DEST_BUFFERS 3
|
||||
#define RK_H264 7
|
||||
#define RK_H265 16777220
|
||||
|
||||
@@ -50,6 +52,8 @@
|
||||
void *pkt_buf = NULL;
|
||||
@@ -51,6 +53,8 @@ void *pkt_buf = NULL;
|
||||
size_t pkt_buf_size = 0;
|
||||
int fd;
|
||||
int fb_id;
|
||||
+int fb_id_rot[MAX_DEST_BUFFERS];
|
||||
|
@ -44,7 +47,7 @@
|
|||
uint32_t plane_id, crtc_id;
|
||||
int frm_eos;
|
||||
int crtc_width;
|
||||
@@ -82,6 +86,7 @@
|
||||
@@ -83,6 +87,7 @@ struct {
|
||||
|
||||
void *display_thread(void *param) {
|
||||
|
||||
|
@ -52,7 +55,7 @@
|
|||
int ret;
|
||||
|
||||
while (!frm_eos) {
|
||||
@@ -98,8 +103,9 @@
|
||||
@@ -99,8 +104,9 @@ void *display_thread(void *param) {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
@ -63,7 +66,7 @@
|
|||
fb_id = 0;
|
||||
ret = pthread_mutex_unlock(&mutex);
|
||||
assert(!ret);
|
||||
@@ -114,10 +120,13 @@
|
||||
@@ -115,10 +121,13 @@ void *display_thread(void *param) {
|
||||
|
||||
void *frame_thread(void *param) {
|
||||
|
||||
|
@ -77,12 +80,13 @@
|
|||
|
||||
while (!frm_eos) {
|
||||
|
||||
@@ -141,7 +150,15 @@
|
||||
@@ -142,7 +151,15 @@ void *frame_thread(void *param) {
|
||||
RK_U32 ver_stride = mpp_frame_get_ver_stride(frame);
|
||||
MppFrameFormat fmt = mpp_frame_get_fmt(frame);
|
||||
assert((fmt == MPP_FMT_YUV420SP) || (fmt == MPP_FMT_YUV420SP_10BIT));
|
||||
-
|
||||
+ printf("Frame WxH=%dx%d WSxHs=%dx%d\n", frm_width, frm_height, hor_stride, ver_stride);
|
||||
|
||||
+
|
||||
+#if 1
|
||||
+ // position overlay, expand to full screen
|
||||
+ fb_x = 0;
|
||||
|
@ -93,7 +97,7 @@
|
|||
// position overlay, scale to ratio
|
||||
float crt_ratio = (float)crtc_width/crtc_height;
|
||||
float frame_ratio = (float)frm_width/frm_height;
|
||||
@@ -157,6 +174,47 @@
|
||||
@@ -158,6 +175,47 @@ void *frame_thread(void *param) {
|
||||
fb_x = 0;
|
||||
fb_y = (crtc_height-fb_height)/2;
|
||||
}
|
||||
|
@ -141,7 +145,7 @@
|
|||
|
||||
// create new external frame group and allocate (commit flow) new DRM buffers and DRM FB
|
||||
assert(!mpi_frm_grp);
|
||||
@@ -224,6 +282,15 @@
|
||||
@@ -225,6 +283,15 @@ void *frame_thread(void *param) {
|
||||
// send DRM FB to display thread
|
||||
ret = pthread_mutex_lock(&mutex);
|
||||
assert(!ret);
|
||||
|
@ -157,7 +161,7 @@
|
|||
fb_id = frame_to_drm[i].fb_id;
|
||||
ret = pthread_cond_signal(&cond);
|
||||
assert(!ret);
|
||||
@@ -363,6 +430,10 @@
|
||||
@@ -361,6 +428,10 @@ int rk_setup(int videoFormat, int width, int height, int redrawRate, void* conte
|
||||
// hide cursor by move in left lower corner
|
||||
drmModeMoveCursor(fd, crtc_id, 0, crtc_height);
|
||||
|
||||
|
@ -167,8 +171,8 @@
|
|||
+
|
||||
// MPI SETUP
|
||||
|
||||
pkt_buf = malloc(READ_BUF_SIZE);
|
||||
@@ -446,6 +517,8 @@
|
||||
ensure_buf_size(&pkt_buf, &pkt_buf_size, INITIAL_DECODER_BUFFER_SIZE);
|
||||
@@ -443,6 +514,8 @@ void rk_cleanup() {
|
||||
mpp_destroy(mpi_ctx);
|
||||
free(pkt_buf);
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# Copyright (C) 2020-present Fewtarius
|
||||
|
||||
PKG_NAME="retroarch-joypads"
|
||||
PKG_VERSION="8b55e1375cbe8eaa305b5ce8e9847b929d0a830f"
|
||||
PKG_VERSION="c424e3d461bdf21b90cfc74435026b81e1cf6cf5"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/libretro/retroarch-joypad-autoconfig"
|
||||
PKG_URL="${PKG_SITE}.git"
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
################################################################################
|
||||
|
||||
PKG_NAME="retroarch-overlays"
|
||||
PKG_VERSION="386e7c45592e3c5754f026dc88cf612a6cff7214"
|
||||
PKG_VERSION="b3827a2c63834ed9e1902acc7cf9019f64771ed3"
|
||||
PKG_SHA256=""
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/libretro/common-overlays"
|
||||
|
|
|
@ -6,8 +6,8 @@ PKG_NAME="glslang"
|
|||
# The SPIRV-Tools & SPIRV-Headers have to be specific versions matching the pkg version
|
||||
# https://raw.githubusercontent.com/KhronosGroup/glslang/${PKG_VERSION}/known_good.json
|
||||
# if you update glslang make sure spirv-tools & spirv-headers versions a known good
|
||||
PKG_VERSION="11.10.0"
|
||||
PKG_SHA256="8ffc19c435232d09299dd2c91e247292b3508c1b826a3497c60682e4bbf2d602"
|
||||
PKG_VERSION="11.12.0"
|
||||
PKG_SHA256="7795a97450fecd9779f3d821858fbc2d1a3bf1dd602617d95b685ccbcabc302f"
|
||||
PKG_LICENSE="Apache-2.0"
|
||||
PKG_SITE="https://github.com/KhronosGroup/glslang"
|
||||
PKG_URL="https://github.com/KhronosGroup/glslang/archive/${PKG_VERSION}.tar.gz"
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
|
||||
PKG_NAME="spirv-headers"
|
||||
# The SPIRV-Headers have to be specific versions matching the glslang pkg version
|
||||
# https://github.com/KhronosGroup/glslang/blob/11.10.0/known_good.json
|
||||
# https://github.com/KhronosGroup/glslang/blob/11.12.0/known_good.json
|
||||
# if you update glslang make sure spirv-tools & spirv-headers versions a known good
|
||||
PKG_VERSION="5a121866927a16ab9d49bed4788b532c7fcea766"
|
||||
PKG_SHA256="ec8ecb471a62672697846c436501638ab25447ae9d4a6761e0bfe8a9a839502a"
|
||||
PKG_VERSION="85a1ed200d50660786c1a88d9166e871123cce39"
|
||||
PKG_SHA256="9729304d0915e758c5ea2a1c60b55a123d976f172c0a8dae3162ad23c77ef33b"
|
||||
PKG_LICENSE="Apache-2.0"
|
||||
PKG_SITE="https://github.com/KhronosGroup/SPIRV-headers"
|
||||
PKG_URL="https://github.com/KhronosGroup/SPIRV-headers/archive/${PKG_VERSION}.tar.gz"
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
|
||||
PKG_NAME="spirv-tools"
|
||||
# The SPIRV-Tools have to be specific versions matching the glslang pkg version
|
||||
# https://github.com/KhronosGroup/glslang/blob/11.10.0/known_good.json
|
||||
# https://github.com/KhronosGroup/glslang/blob/11.12.0/known_good.json
|
||||
# if you update glslang make sure spirv-tools & spirv-headers versions a known good
|
||||
PKG_VERSION="b930e734ea198b7aabbbf04ee1562cf6f57962f0"
|
||||
PKG_SHA256="9cddc845f99d7daa65940ff9deb6754cd71b67987ec9860bb0ef2af8a8732c84"
|
||||
PKG_VERSION="eb0a36633d2acf4de82588504f951ad0f2cecacb"
|
||||
PKG_SHA256="9f7c423c9dad6c9e664e0600226646232a328051f73f30d6795360370aa06a2f"
|
||||
PKG_LICENSE="Apache-2.0"
|
||||
PKG_SITE="https://github.com/KhronosGroup/SPIRV-Tools"
|
||||
PKG_URL="https://github.com/KhronosGroup/SPIRV-Tools/archive/${PKG_VERSION}.tar.gz"
|
||||
|
|
|
@ -2,10 +2,11 @@
|
|||
# Copyright (C) 2020-present Fewtarius
|
||||
|
||||
PKG_NAME="wxwidgets"
|
||||
PKG_VERSION="7ad1bffa875f7a38db58b6069ea3ff0c49c211d2"
|
||||
PKG_VERSION="97e99707c5d2271a70cb686720b48dbf34ced496"
|
||||
PKG_LICENSE="wxWindows Library Licence"
|
||||
PKG_SITE="https://github.com/wxWidgets/wxWidgets"
|
||||
PKG_URL="${PKG_SITE}.git"
|
||||
PKG_GIT_CLONE_BRANCH="3.2"
|
||||
PKG_DEPENDS_TARGET="toolchain zlib libpng libjpeg-turbo gdk-pixbuf gtk3 libaio"
|
||||
PKG_LONGDESC="wxWidgets is a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls."
|
||||
PKG_BUILD_FLAGS="+pic"
|
||||
|
@ -16,7 +17,7 @@ pre_configure_target() {
|
|||
}
|
||||
|
||||
post_install() {
|
||||
cp ${PKG_BUILD}/.${TARGET_NAME}/lib/wx/config/gtk3-unicode-3.1 ${SYSROOT_PREFIX}/usr/bin/wx-config
|
||||
cp ${PKG_BUILD}/.${TARGET_NAME}/lib/wx/config/gtk3-unicode-3.2 ${SYSROOT_PREFIX}/usr/bin/wx-config
|
||||
sed -i 's#^prefix=.*#prefix='${SYSROOT_PREFIX}/usr'#' ${SYSROOT_PREFIX}/usr/bin/wx-config
|
||||
sed -i 's#^exec_prefix=.*#exec_prefix='${SYSROOT_PREFIX}/usr'#' ${SYSROOT_PREFIX}/usr/bin/wx-config
|
||||
}
|
||||
|
|
|
@ -112,11 +112,8 @@ post_install() {
|
|||
mkdir -p ${INSTALL}/usr/lib/autostart/daemons
|
||||
cp ${PKG_DIR}/sources/autostart/common/* ${INSTALL}/usr/lib/autostart/common
|
||||
cp ${PKG_DIR}/sources/autostart/daemons/* ${INSTALL}/usr/lib/autostart/daemons
|
||||
if [ -d "${PKG_DIR}/sources/autostart/${DEVICE}" ]
|
||||
then
|
||||
mkdir -p ${INSTALL}/usr/lib/autostart/${DEVICE}
|
||||
cp ${PKG_DIR}/sources/autostart/${DEVICE}/* ${INSTALL}/usr/lib/autostart/${DEVICE}
|
||||
fi
|
||||
mkdir -p ${INSTALL}/usr/lib/autostart/quirks
|
||||
cp -r ${PKG_DIR}/sources/autostart/quirks/* ${INSTALL}/usr/lib/autostart/quirks
|
||||
chmod -R 0755 ${INSTALL}/usr/lib/autostart ${INSTALL}/usr/bin/autostart
|
||||
enable_service jelos-autostart.service
|
||||
|
||||
|
@ -137,12 +134,15 @@ post_install() {
|
|||
EOF
|
||||
|
||||
cp ${PKG_DIR}/sources/scripts/* ${INSTALL}/usr/bin
|
||||
chmod 0755 ${INSTALL}/usr/bin/* ||:
|
||||
enable_service jelos-automount.service
|
||||
|
||||
if [ -d "${PKG_DIR}/sources/asound/${DEVICE}" ]
|
||||
then
|
||||
cp ${PKG_DIR}/sources/asound/${DEVICE}/* ${INSTALL}/usr/config/
|
||||
fi
|
||||
|
||||
cp ${PKG_DIR}/sources/asound/asound.conf.bluealsa ${INSTALL}/usr/config/
|
||||
|
||||
sed -i "s#@DEVICENAME@#${DEVICE}#g" ${INSTALL}/usr/config/system/configs/system.cfg
|
||||
|
||||
|
|
|
@ -28,8 +28,8 @@ state.rockchipes8316c {
|
|||
control.3 {
|
||||
iface MIXER
|
||||
name 'Headphone Mixer Volume'
|
||||
value.0 0
|
||||
value.1 0
|
||||
value.0 10
|
||||
value.1 10
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
|
@ -37,14 +37,14 @@ state.rockchipes8316c {
|
|||
range '0 - 11'
|
||||
dbmin -1200
|
||||
dbmax 0
|
||||
dbvalue.0 -1200
|
||||
dbvalue.1 -1200
|
||||
dbvalue.0 -150
|
||||
dbvalue.1 -150
|
||||
}
|
||||
}
|
||||
control.4 {
|
||||
iface MIXER
|
||||
name 'Playback Polarity'
|
||||
value 'R Invert'
|
||||
value Normal
|
||||
comment {
|
||||
access 'read write'
|
||||
type ENUMERATED
|
||||
|
@ -58,8 +58,8 @@ state.rockchipes8316c {
|
|||
control.5 {
|
||||
iface MIXER
|
||||
name 'DAC Playback Volume'
|
||||
value.0 0
|
||||
value.1 0
|
||||
value.0 153
|
||||
value.1 153
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
|
@ -67,8 +67,8 @@ state.rockchipes8316c {
|
|||
range '0 - 192'
|
||||
dbmin -9999999
|
||||
dbmax 0
|
||||
dbvalue.0 -9999999
|
||||
dbvalue.1 -9999999
|
||||
dbvalue.0 -1950
|
||||
dbvalue.1 -1950
|
||||
}
|
||||
}
|
||||
control.6 {
|
||||
|
@ -95,7 +95,7 @@ state.rockchipes8316c {
|
|||
control.8 {
|
||||
iface MIXER
|
||||
name 'DAC Notch Filter Switch'
|
||||
value true
|
||||
value false
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
|
@ -105,7 +105,7 @@ state.rockchipes8316c {
|
|||
control.9 {
|
||||
iface MIXER
|
||||
name 'DAC Double Fs Switch'
|
||||
value true
|
||||
value false
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
|
@ -115,7 +115,7 @@ state.rockchipes8316c {
|
|||
control.10 {
|
||||
iface MIXER
|
||||
name 'DAC Stereo Enhancement'
|
||||
value 7
|
||||
value 0
|
||||
comment {
|
||||
access 'read write'
|
||||
type INTEGER
|
||||
|
@ -126,7 +126,7 @@ state.rockchipes8316c {
|
|||
control.11 {
|
||||
iface MIXER
|
||||
name 'DAC Mono Mix Switch'
|
||||
value true
|
||||
value false
|
||||
comment {
|
||||
access 'read write'
|
||||
type BOOLEAN
|
||||
|
|
12
packages/jelos/sources/asound/asound.conf.bluealsa
Normal file
12
packages/jelos/sources/asound/asound.conf.bluealsa
Normal file
|
@ -0,0 +1,12 @@
|
|||
pcm.!default {
|
||||
type asym
|
||||
capture.pcm cards.pcm.default
|
||||
playback.pcm bluealsa
|
||||
hint.description "Bluetooth Audio Device"
|
||||
}
|
||||
|
||||
# Leave mixer at default card for now
|
||||
ctl.!default {
|
||||
type hw
|
||||
card 0
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
RG351P
|
|
@ -1 +0,0 @@
|
|||
RG351P
|
|
@ -1 +0,0 @@
|
|||
RG503
|
|
@ -12,12 +12,23 @@ date 2>&1 >>${BOOTLOG}
|
|||
|
||||
/usr/bin/show_splash intro 2>&1 >>${BOOTLOG}
|
||||
|
||||
### Run device specific start scripts
|
||||
for script in /usr/lib/autostart/${HW_DEVICE}/*
|
||||
do
|
||||
echo "Executing ${script}" 2>&1 >>${BOOTLOG}
|
||||
${script} 2>&1 >>${BOOTLOG}
|
||||
done
|
||||
### Apply device quirks
|
||||
if [ -e "/usr/sbin/dmidecode" ]
|
||||
then
|
||||
QUIRK_DEVICE=$(echo "$(dmidecode -s system-manufacturer) $(dmidecode -s system-product-name)")
|
||||
else
|
||||
QUIRK_DEVICE=$(cat /sys/firmware/devicetree/base/model 2>/dev/null)
|
||||
fi
|
||||
QUIRK_DEVICE=$(echo ${QUIRK_DEVICE} | sed -e "s#[/]#-#g")
|
||||
if [ -d "/usr/lib/autostart/quirks/${QUIRK_DEVICE}" ]
|
||||
then
|
||||
echo "Executing ${QUIRK_DEVICE} quirks."
|
||||
for script in "/usr/lib/autostart/quirks/${QUIRK_DEVICE}/*"
|
||||
do
|
||||
echo "Executing ${script}" 2>&1 >>${BOOTLOG}
|
||||
${script} 2>&1 >>${BOOTLOG} &
|
||||
done
|
||||
fi
|
||||
|
||||
### Lock is a prerequisite for emustation
|
||||
rm /var/lock/start.games 2>&1 >>${BOOTLOG}
|
||||
|
|
|
@ -4,14 +4,13 @@
|
|||
|
||||
. /etc/profile
|
||||
|
||||
if [ "$(cat /storage/.config/boot.hint 2>/dev/null)" = "UPDATE" ] || [ ! -e "/storage/.configured" ]
|
||||
if [[ "$(cat /storage/.config/boot.hint 2>/dev/null)" =~ UPDATE ]] && [ -e "/storage/.configured" ]
|
||||
then
|
||||
if [ -e "/usr/share/post-update" ]
|
||||
then
|
||||
/usr/share/post-update >/var/log/upgrade.log 2>&1
|
||||
fi
|
||||
rm /storage/.config/boot.hint
|
||||
touch /storage/.configured
|
||||
else
|
||||
echo "No update hint found." >/var/log/upgrade.log 2>&1
|
||||
fi
|
||||
|
|
|
@ -4,21 +4,13 @@
|
|||
|
||||
. /etc/profile
|
||||
|
||||
### Temporary device quirk for VCS
|
||||
if [ -e "/usr/sbin/dmidecode" ] && \
|
||||
[ ! -e "/storage/.config/modprobe.d/alsa-base.conf" ]
|
||||
# Revert to stored setting when bluetooth was still selected at last shutdown.
|
||||
# This is a workaround - headsets that auto-connect at boot tend to be
|
||||
# unreliable, so for now it's better to force a manual reconnect.
|
||||
LAST_AUDIO_DEVICE=$(set-audio get)
|
||||
if [[ "${LAST_AUDIO_DEVICE}" =~ ^Device.* ]]
|
||||
then
|
||||
THIS_DEVICE="$(/usr/sbin/dmidecode -s system-product-name)"
|
||||
if [[ "${THIS_DEVICE}" =~ ^VCS ]]
|
||||
then
|
||||
if [ ! -d "/storage/.config/modprobe.d/" ]
|
||||
then
|
||||
mkdir -p /storage/.config/modprobe.d
|
||||
fi
|
||||
touch /storage/.config/modprobe.d/alsa-base.conf
|
||||
set-audio set "DEFAULT HDMI"
|
||||
reboot
|
||||
fi
|
||||
set-audio restore
|
||||
fi
|
||||
|
||||
if [ ! -e "/storage/.config/asound.conf" ]
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/bash
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# Copyright (C) 2021-present Fewtarius (https://github.com/fewtarius)
|
||||
|
||||
. /etc/profile
|
||||
|
||||
if [ ! -d "/storage/.config/modprobe.d/" ]
|
||||
then
|
||||
mkdir -p /storage/.config/modprobe.d
|
||||
fi
|
||||
if [ ! -e "/storage/.config/modprobe.d/alsa-base.conf" ]
|
||||
then
|
||||
touch /storage/.config/modprobe.d/alsa-base.conf
|
||||
set-audio set "DEFAULT HDMI"
|
||||
reboot
|
||||
fi
|
1
packages/jelos/sources/autostart/quirks/AYANEO AIR Pro
Symbolic link
1
packages/jelos/sources/autostart/quirks/AYANEO AIR Pro
Symbolic link
|
@ -0,0 +1 @@
|
|||
AYANEO AIR
|
17
packages/jelos/sources/autostart/quirks/AYANEO AIR/001-audio
Normal file
17
packages/jelos/sources/autostart/quirks/AYANEO AIR/001-audio
Normal file
|
@ -0,0 +1,17 @@
|
|||
#!/bin/bash
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# Copyright (C) 2021-present Fewtarius (https://github.com/fewtarius)
|
||||
|
||||
. /etc/profile
|
||||
|
||||
if [ ! -d "/storage/.config/modprobe.d/" ]
|
||||
then
|
||||
mkdir -p /storage/.config/modprobe.d
|
||||
fi
|
||||
if [ ! -e "/storage/.config/modprobe.d/alsa-base.conf" ]
|
||||
then
|
||||
touch /storage/.config/modprobe.d/alsa-base.conf
|
||||
set-audio set "ALC269VB (1:0)"
|
||||
set-audio esset "Master"
|
||||
reboot
|
||||
fi
|
1
packages/jelos/sources/autostart/quirks/Anbernic RG351MP
Symbolic link
1
packages/jelos/sources/autostart/quirks/Anbernic RG351MP
Symbolic link
|
@ -0,0 +1 @@
|
|||
Anbernic RG351P
|
1
packages/jelos/sources/autostart/quirks/Anbernic RG351V
Symbolic link
1
packages/jelos/sources/autostart/quirks/Anbernic RG351V
Symbolic link
|
@ -0,0 +1 @@
|
|||
Anbernic RG351P
|
1
packages/jelos/sources/autostart/quirks/Anbernic RG353V
Symbolic link
1
packages/jelos/sources/autostart/quirks/Anbernic RG353V
Symbolic link
|
@ -0,0 +1 @@
|
|||
Anbernic RG353P-M
|
1
packages/jelos/sources/autostart/quirks/Anbernic RG503
Symbolic link
1
packages/jelos/sources/autostart/quirks/Anbernic RG503
Symbolic link
|
@ -0,0 +1 @@
|
|||
Anbernic RG353P-M
|
|
@ -63,7 +63,7 @@ def connect_device(path, address, properties, forceConnect, typeInput, typeAudio
|
|||
logging.info("Skipping device {} (no type)".format(getDevName(rproperties)));
|
||||
return
|
||||
|
||||
if not ( (typeInput and properties["Icon"].startswith("input")) or (typeAudio and properties["Icon"].startswith("audio-card")) ):
|
||||
if not ( (typeInput and properties["Icon"].startswith("input")) or (typeAudio and properties["Icon"].startswith("audio")) ):
|
||||
logging.info("Skipping device {} because of type {}".format(getDevName(rproperties), properties["Icon"]));
|
||||
return
|
||||
|
||||
|
|
|
@ -297,6 +297,12 @@ then
|
|||
RUNTHIS='${TBASH} /usr/bin/start_dolphin_wii.sh "${ROMNAME}"'
|
||||
fi
|
||||
;;
|
||||
"switch")
|
||||
jslisten set "-9 yuzu-cmd"
|
||||
if [ "$EMU" = "yuzu" ]; then
|
||||
RUNTHIS='${TBASH} /usr/bin/start_yuzu.sh "${ROMNAME}"'
|
||||
fi
|
||||
;;
|
||||
"mplayer")
|
||||
jslisten set "mpv"
|
||||
RUNTHIS='${TBASH} /usr/bin/mpv_video.sh "${ROMNAME}"'
|
||||
|
|
|
@ -5,10 +5,55 @@
|
|||
. /etc/profile
|
||||
|
||||
ES_SETTINGS="/storage/.config/emulationstation/es_settings.cfg"
|
||||
STORED_SETTINGS="/storage/.cache/audio_settings.zip"
|
||||
|
||||
function save_state()
|
||||
{
|
||||
ACTIVE_DEVICE=$(get_audio_device)
|
||||
ACTIVE_PATH=$(get_es_path)
|
||||
echo "$ACTIVE_DEVICE" > /tmp/active_device.cfg
|
||||
echo "$ACTIVE_PATH" > /tmp/active_path.cfg
|
||||
cp -f /storage/.config/asound.conf /tmp
|
||||
cp -f /storage/.config/asound.state /tmp
|
||||
zip -q -j -r ${STORED_SETTINGS} /tmp/active_device.cfg /tmp/active_path.cfg /tmp/asound.*
|
||||
}
|
||||
|
||||
function restore_state()
|
||||
{
|
||||
if [ -e ${STORED_SETTINGS} ]
|
||||
then
|
||||
unzip -o -q -d /tmp/ ${STORED_SETTINGS}
|
||||
STORED_DEVICE=$(cat /tmp/active_device.cfg)
|
||||
STORED_PATH=$(cat /tmp/active_path.cfg)
|
||||
mv /tmp/asound.conf /storage/.config/
|
||||
mv /tmp/asound.state /storage/.config/
|
||||
rm -f ${STORED_SETTINGS}
|
||||
set-audio esset "${STORED_PATH}"
|
||||
set-audio set "${STORED_DEVICE}"
|
||||
fi
|
||||
}
|
||||
|
||||
# Check if an audio device string corresponds to a bluetooth device
|
||||
function is_bluetooth() {
|
||||
if [[ "$1" =~ ^Device.* ]]
|
||||
then
|
||||
true
|
||||
return
|
||||
else
|
||||
false
|
||||
return
|
||||
fi
|
||||
}
|
||||
|
||||
function list_audio_controls() {
|
||||
IFS=""
|
||||
CONTROLS=$(amixer controls | sed -e 's#^.*name=##g' -e "s#'##g")
|
||||
ACTIVE_DEVICE=$(get_audio_device)
|
||||
if is_bluetooth "${ACTIVE_DEVICE}"
|
||||
then
|
||||
CONTROLS=$(amixer -D bluealsa controls | sed -e 's#^.*name=##g' -e "s#'##g")
|
||||
else
|
||||
CONTROLS=$(amixer controls | sed -e 's#^.*name=##g' -e "s#'##g")
|
||||
fi
|
||||
echo "DEFAULT (SYSTEM PROVIDED)"
|
||||
echo "CUSTOM (UNMANAGED)"
|
||||
for CONTROL in "${CONTROLS[@]}"
|
||||
|
@ -27,6 +72,16 @@ function list_audio_devices() {
|
|||
echo "DEFAULT HDMI"
|
||||
echo "CUSTOM (UNMANAGED)"
|
||||
echo "--------"
|
||||
BTACTIVE=$(systemctl is-active bluetooth)
|
||||
if [ "${BTACTIVE}" == "active" ]
|
||||
then
|
||||
BTDEVICES=$(bluetoothctl devices Paired)
|
||||
while read -r BTDEV
|
||||
do
|
||||
echo "${BTDEV}"
|
||||
done <<< "${BTDEVICES}"
|
||||
echo "--------"
|
||||
fi
|
||||
for SDEVICE in $(find /proc/asound/card*/pcm*/info)
|
||||
do
|
||||
TYPE=$(awk '/^stream:/ {print $2}' ${SDEVICE})
|
||||
|
@ -42,12 +97,23 @@ function list_audio_devices() {
|
|||
|
||||
function set_audio_device() {
|
||||
SELECTION="$1"
|
||||
# When switching from a non-bluetooth to a bluetooth device,
|
||||
# store the last configuration in order to restore it on reboot.
|
||||
if is_bluetooth "${SELECTION}"
|
||||
then
|
||||
ACTIVE_DEVICE=$(get_audio_device)
|
||||
if ! is_bluetooth "${ACTIVE_DEVICE}"
|
||||
then
|
||||
save_state
|
||||
fi
|
||||
fi
|
||||
|
||||
set_setting system.audiodevice "${SELECTION}"
|
||||
if [ "${SELECTION}" == "DEFAULT (SYSTEM PROVIDED)" ]
|
||||
then
|
||||
if [ "$(get_setting system.rg353v)" = "1" ]
|
||||
then
|
||||
cp /usr/config/asound.conf.RG353V /storage/.config
|
||||
cp /usr/config/asound.conf.RG353V /storage/.config/asound.conf
|
||||
exit 0
|
||||
else
|
||||
if [ -e "/usr/config/asound.conf" ]
|
||||
|
@ -66,6 +132,18 @@ function set_audio_device() {
|
|||
elif [ "${SELECTION}" == "CUSTOM (UNMANAGED)" ]
|
||||
then
|
||||
exit 0
|
||||
elif is_bluetooth "${SELECTION}"
|
||||
then
|
||||
MAC=$(echo "${SELECTION}" | awk '/^Device/ {print $2}')
|
||||
# Reconnect device in case it auto-connected.
|
||||
# This doesn't seem necessary anymore, re-activate in case of issues.
|
||||
# bluetoothctl disconnect ${MAC}
|
||||
if bluetoothctl connect ${MAC}
|
||||
then
|
||||
cp /usr/config/asound.conf.bluealsa /storage/.config/asound.conf
|
||||
set_es_path "DEFAULT (SYSTEM PROVIDED)"
|
||||
fi
|
||||
exit 0
|
||||
else
|
||||
if [ "${SELECTION}" == "--------" ]
|
||||
then
|
||||
|
@ -163,4 +241,10 @@ case $1 in
|
|||
esget)
|
||||
get_es_path
|
||||
;;
|
||||
save)
|
||||
save_state
|
||||
;;
|
||||
restore)
|
||||
restore_state
|
||||
;;
|
||||
esac
|
||||
|
|
|
@ -493,6 +493,13 @@ if [ $RA == 1 ]; then
|
|||
[ "${EES}" == "1" ] && echo 'run_ahead_secondary_instance = "true"' >> ${RAAPPENDCONF} || echo 'run_ahead_secondary_instance = "false"' >> ${RAAPPENDCONF}
|
||||
fi
|
||||
|
||||
## Audiolatency
|
||||
# Get configuration from system.cfg and set to retroarch.cfg
|
||||
get_game_setting "audiolatency"
|
||||
if [[ "${EES}" =~ ^[0-9]+$ ]] && [[ "${EES}" -gt "0" ]]; then
|
||||
echo "audio_latency = \"${EES}\"" >> ${RAAPPENDCONF}
|
||||
fi
|
||||
|
||||
## D-Pad to Analogue support, option in ES is missing atm but is managed as global.analogue=1 in system.cfg (that is made by postupdate.sh)
|
||||
# Get configuration from system.cfg and set to retroarch.cfg
|
||||
get_game_setting "analogue"
|
||||
|
|
|
@ -97,6 +97,7 @@ d /storage/roms/snesmsu1 0755 root root - -
|
|||
d /storage/roms/solarus 0755 root root - -
|
||||
d /storage/roms/sufami 0755 root root - -
|
||||
d /storage/roms/supervision 0755 root root - -
|
||||
d /storage/roms/switch 0755 root root - -
|
||||
d /storage/roms/tg16 0755 root root - -
|
||||
d /storage/roms/tg16cd 0755 root root - -
|
||||
d /storage/roms/tic-80 0755 root root - -
|
||||
|
|
|
@ -19,7 +19,7 @@ if [ "${MOLD_SUPPORT}" = "yes" ]; then
|
|||
fi
|
||||
|
||||
case ${TARGET_ARCH} in
|
||||
arm|riscv64)
|
||||
arm|aarch64|riscv64)
|
||||
OPTS_LIBATOMIC="--enable-libatomic"
|
||||
;;
|
||||
*)
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="bluez"
|
||||
PKG_VERSION="5.62"
|
||||
PKG_SHA256="38090a5b750e17fc08d3e52178ed8d3254c5f4bd2c48830d5c1955b88e3bc0c2"
|
||||
PKG_VERSION="5.66"
|
||||
PKG_SHA256="39fea64b590c9492984a0c27a89fc203e1cdc74866086efb8f4698677ab2b574"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.bluez.org/"
|
||||
PKG_URL="https://www.kernel.org/pub/linux/bluetooth/${PKG_NAME}-${PKG_VERSION}.tar.xz"
|
||||
|
@ -23,7 +23,7 @@ BLUEZ_CONFIG+=" --enable-monitor --enable-test"
|
|||
|
||||
PKG_CONFIGURE_OPTS_TARGET="--disable-dependency-tracking \
|
||||
--disable-silent-rules \
|
||||
--disable-library \
|
||||
--enable-library \
|
||||
--enable-udev \
|
||||
--disable-cups \
|
||||
--disable-obex \
|
||||
|
@ -69,9 +69,10 @@ post_makeinstall_target() {
|
|||
# bluez looks in /etc/firmware/
|
||||
ln -sf /usr/lib/firmware ${INSTALL}/etc/firmware
|
||||
|
||||
# pulseaudio checks for bluez via pkgconfig but lib is not actually needed
|
||||
sed -i 's/-lbluetooth//g' ${PKG_BUILD}/lib/bluez.pc
|
||||
# libbluetooth required for bluez-alsa
|
||||
# sed -i 's/-lbluetooth//g' ${PKG_BUILD}/lib/bluez.pc
|
||||
cp -P ${PKG_BUILD}/lib/bluez.pc ${SYSROOT_PREFIX}/usr/lib/pkgconfig
|
||||
cp -P -r ${PKG_BUILD}/lib/bluetooth ${SYSROOT_PREFIX}/usr/include/
|
||||
}
|
||||
|
||||
post_install() {
|
||||
|
|
|
@ -1,23 +1,8 @@
|
|||
From ccc0a0cba8a2fdb8cfb148276e7c9413a3e22dc8 Mon Sep 17 00:00:00 2001
|
||||
From: MilhouseVH <milhouseVH.github@nmacleod.com>
|
||||
Date: Thu, 19 Sep 2019 22:48:19 +0100
|
||||
Subject: [PATCH] sixaxis: Fix PID for Navigation Controller
|
||||
|
||||
Newsgroups: gmane.linux.bluez.kernel
|
||||
Date: 2015-06-15 18:28:26 GMT (36 weeks, 4 days, 21 hours and 32 minutes ago)
|
||||
|
||||
Navigation Controller is using PID 0x042f over USB but PID 0x0268
|
||||
(same as Dualshock 3) over BT.
|
||||
---
|
||||
plugins/sixaxis.c | 8 +++++++-
|
||||
profiles/input/sixaxis.h | 2 ++
|
||||
2 files changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/plugins/sixaxis.c b/plugins/sixaxis.c
|
||||
index 939fed7..f6baea7 100644
|
||||
index 544ab399a..9a0aa5d4f 100644
|
||||
--- a/plugins/sixaxis.c
|
||||
+++ b/plugins/sixaxis.c
|
||||
@@ -364,7 +364,13 @@ static bool setup_device(int fd, const char *sysfs_path,
|
||||
@@ -349,7 +349,13 @@ static bool setup_device(int fd, const char *sysfs_path,
|
||||
info("sixaxis: setting up new device");
|
||||
|
||||
btd_device_device_set_name(device, cp->name);
|
||||
|
@ -29,14 +14,14 @@ index 939fed7..f6baea7 100644
|
|||
+ else
|
||||
+ btd_device_set_pnpid(device, cp->source, cp->vid, cp->pid, cp->version);
|
||||
+
|
||||
btd_device_set_trusted(device, false);
|
||||
btd_device_set_temporary(device, true);
|
||||
|
||||
closure = g_new0(struct authentication_closure, 1);
|
||||
diff --git a/profiles/input/sixaxis.h b/profiles/input/sixaxis.h
|
||||
index 8e6f3cc..321a918 100644
|
||||
index ab8831995..0fe373204 100644
|
||||
--- a/profiles/input/sixaxis.h
|
||||
+++ b/profiles/input/sixaxis.h
|
||||
@@ -38,6 +38,7 @@ struct cable_pairing {
|
||||
@@ -25,6 +25,7 @@ struct cable_pairing {
|
||||
uint16_t vid;
|
||||
uint16_t pid;
|
||||
uint16_t version;
|
||||
|
@ -44,7 +29,7 @@ index 8e6f3cc..321a918 100644
|
|||
CablePairingType type;
|
||||
};
|
||||
|
||||
@@ -59,6 +60,7 @@ get_pairing(uint16_t vid, uint16_t pid)
|
||||
@@ -54,6 +55,7 @@ get_pairing(uint16_t vid, uint16_t pid, const char *name)
|
||||
.vid = 0x054c,
|
||||
.pid = 0x042f,
|
||||
.version = 0x0000,
|
||||
|
@ -52,6 +37,3 @@ index 8e6f3cc..321a918 100644
|
|||
.type = CABLE_PAIRING_SIXAXIS,
|
||||
},
|
||||
{
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
|
|
@ -1,25 +1,12 @@
|
|||
From 40c6e7c5a0d81a781c94e5a64661848018c1f8be Mon Sep 17 00:00:00 2001
|
||||
From: MilhouseVH <milhouseVH.github@nmacleod.com>
|
||||
Date: Thu, 19 Sep 2019 22:55:09 +0100
|
||||
Subject: [PATCH] sixaxis autotrust
|
||||
|
||||
---
|
||||
plugins/sixaxis.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/plugins/sixaxis.c b/plugins/sixaxis.c
|
||||
index f6baea7..c166304 100644
|
||||
index 9a0aa5d4f..810e33353 100644
|
||||
--- a/plugins/sixaxis.c
|
||||
+++ b/plugins/sixaxis.c
|
||||
@@ -371,7 +371,7 @@ static bool setup_device(int fd, const char *sysfs_path,
|
||||
@@ -356,6 +356,7 @@ static bool setup_device(int fd, const char *sysfs_path,
|
||||
else
|
||||
btd_device_set_pnpid(device, cp->source, cp->vid, cp->pid, cp->version);
|
||||
|
||||
- btd_device_set_trusted(device, false);
|
||||
+ btd_device_set_trusted(device, true);
|
||||
btd_device_set_temporary(device, true);
|
||||
|
||||
closure = g_new0(struct authentication_closure, 1);
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
MODULE_DIR=/usr/lib/modules
|
||||
|
||||
UPDATE_ROOT=/storage/.update
|
||||
UPDATE_DIR="$UPDATE_ROOT"
|
||||
UPDATE_DIR="${UPDATE_ROOT}"
|
||||
|
||||
UPDATE_KERNEL="@KERNEL_NAME@"
|
||||
UPDATE_SYSTEM="SYSTEM"
|
||||
|
@ -63,23 +63,23 @@ exec 2>/dev/null
|
|||
|
||||
# Get a serial number if present (eg. RPi) otherwise use MAC address from eth0
|
||||
MACHINE_UID="$(awk '/^Serial/{s='0000000' $3; print substr(s, length(s) - 7)}' /proc/cpuinfo 2>/dev/null)"
|
||||
[ -z "$MACHINE_UID" ] && MACHINE_UID="$(cat /sys/class/net/eth0/address 2>/dev/null | tr -d :)"
|
||||
[ -z "${MACHINE_UID}" ] && MACHINE_UID="$(cat /sys/class/net/eth0/address 2>/dev/null | tr -d :)"
|
||||
|
||||
clear >/dev/console
|
||||
|
||||
# script functions
|
||||
progress() {
|
||||
if test "$PROGRESS" = "yes"; then
|
||||
if test "${PROGRESS}" = "yes"; then
|
||||
echo "### $1 ###" >&2
|
||||
fi
|
||||
}
|
||||
|
||||
debug_msg() {
|
||||
echo "$1" >&$SILENT_OUT
|
||||
echo "$1" >&${SILENT_OUT}
|
||||
}
|
||||
|
||||
debug_shell() {
|
||||
echo "### Starting debugging shell for boot step: $BOOT_STEP... type exit to quit ###"
|
||||
echo "### Starting debugging shell for boot step: ${BOOT_STEP}... type exit to quit ###"
|
||||
showcursor
|
||||
setsid cttyhack sh
|
||||
}
|
||||
|
@ -89,17 +89,17 @@ error() {
|
|||
# $1:action which caused error, $2:message
|
||||
# Send debug_shell output to stderr, in case caller is redirecting/consuming stdout
|
||||
# Return exitcode=1 so that called may detect when an error has occurred
|
||||
echo "*** Error in $BOOT_STEP: $1: $2 ***" >&2
|
||||
echo "*** Error in ${BOOT_STEP}: $1: $2 ***" >&2
|
||||
debug_shell >&2
|
||||
return 1
|
||||
}
|
||||
|
||||
break_after() {
|
||||
# Start debug shell after boot step $1, and all subsequent steps
|
||||
if [ $BREAK_TRIPPED == yes ]; then
|
||||
if [ ${BREAK_TRIPPED} == yes ]; then
|
||||
debug_shell
|
||||
else
|
||||
case $BREAK in
|
||||
case ${BREAK} in
|
||||
all|*$1*)
|
||||
BREAK_TRIPPED=yes
|
||||
debug_shell
|
||||
|
@ -114,17 +114,17 @@ break_after() {
|
|||
mount_common() {
|
||||
# Common mount handler, handles block devices and filesystem images
|
||||
MOUNT_OPTIONS="-o $3"
|
||||
[ -n "$4" ] && MOUNT_OPTIONS="-t $4 $MOUNT_OPTIONS"
|
||||
[ -n "$4" ] && MOUNT_OPTIONS="-t $4 ${MOUNT_OPTIONS}"
|
||||
|
||||
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do
|
||||
ERR_ENV=1
|
||||
|
||||
mount $MOUNT_OPTIONS $1 $2 >&$SILENT_OUT 2>&1
|
||||
mount ${MOUNT_OPTIONS} $1 $2 >&${SILENT_OUT} 2>&1
|
||||
[ "$?" -eq "0" ] && ERR_ENV=0 && break
|
||||
|
||||
usleep 1000000
|
||||
done
|
||||
[ "$ERR_ENV" -eq "0" ] && return 0
|
||||
[ "${ERR_ENV}" -eq "0" ] && return 0
|
||||
echo "Unable to find $1, powering off and on should correct it." >/dev/console
|
||||
StartProgress countdown "Power off in 3s... " 3 "NOW"
|
||||
poweroff
|
||||
|
@ -132,7 +132,7 @@ mount_common() {
|
|||
|
||||
get_iscsistart_options() {
|
||||
# Convert kernel commandline ISCSI= options to iscsistart options
|
||||
IFS_SAVE="$IFS"
|
||||
IFS_SAVE="${IFS}"
|
||||
IFS=,
|
||||
|
||||
for arg in $1; do
|
||||
|
@ -169,7 +169,7 @@ get_iscsistart_options() {
|
|||
echo "$option $val"
|
||||
done
|
||||
|
||||
IFS="$IFS_SAVE"
|
||||
IFS="${IFS_SAVE}"
|
||||
}
|
||||
|
||||
mount_iscsi() {
|
||||
|
@ -181,27 +181,27 @@ mount_iscsi() {
|
|||
error "iscsistart" "iSCSI support not available"
|
||||
fi
|
||||
|
||||
if [ "$ISCSI_OPTIONS" = "auto" ]; then
|
||||
if [ "${ISCSI_OPTIONS}" = "auto" ]; then
|
||||
progress "Network configuration based on iBFT"
|
||||
/usr/sbin/iscsistart -N >&$SILENT_OUT 2>&1 || error "iscsistart" "Unable to configure network"
|
||||
/usr/sbin/iscsistart -N >&${SILENT_OUT} 2>&1 || error "iscsistart" "Unable to configure network"
|
||||
progress "iSCSI auto connect based on iBFT"
|
||||
/usr/sbin/iscsistart -b >&$SILENT_OUT 2>&1 || error "iscsistart" "Unable to auto connect"
|
||||
/usr/sbin/iscsistart -b >&${SILENT_OUT} 2>&1 || error "iscsistart" "Unable to auto connect"
|
||||
else
|
||||
/usr/sbin/iscsistart $(get_iscsistart_options "$ISCSI_OPTIONS") >&$SILENT_OUT 2>&1 || error "iscsistart" "Unable to connect to ISCSI target"
|
||||
/usr/sbin/iscsistart $(get_iscsistart_options "${ISCSI_OPTIONS}") >&${SILENT_OUT} 2>&1 || error "iscsistart" "Unable to connect to ISCSI target"
|
||||
fi
|
||||
|
||||
mount_common "$ISCSI_DEV" "$2" "$3" "$4"
|
||||
mount_common "${ISCSI_DEV}" "$2" "$3" "$4"
|
||||
}
|
||||
|
||||
mount_nbd() {
|
||||
# Mount NBD device
|
||||
NBD_SERVER="${1%%:*}"
|
||||
NBD_PORT="${1#*:}"
|
||||
NBD_DEV="/dev/nbd$NBD_DEVS"
|
||||
NBD_DEV="/dev/nbd${NBD_DEV}S"
|
||||
|
||||
nbd-client $NBD_SERVER $NBD_PORT $NBD_DEV >&$SILENT_OUT 2>&1 || error "nbd-client" "Could not connect to NBD server $1"
|
||||
nbd-client ${NBD_SERVER} ${NBD_PORT} ${NBD_DEV} >&${SILENT_OUT} 2>&1 || error "nbd-client" "Could not connect to NBD server $1"
|
||||
|
||||
mount_common "$NBD_DEV" "$2" "$3" "$4"
|
||||
mount_common "${NBD_DEV}" "$2" "$3" "$4"
|
||||
|
||||
NBD_DEVS=$(( NBD_DEVS + 1 ))
|
||||
}
|
||||
|
@ -211,9 +211,9 @@ mount_nfs() {
|
|||
NFS_EXPORT="${1%%,*}"
|
||||
NFS_OPTIONS="${1#*,}"
|
||||
|
||||
[ "$NFS_OPTIONS" = "$1" ] && NFS_OPTIONS=
|
||||
[ "${NFS_OPTIONS}" = "$1" ] && NFS_OPTIONS=
|
||||
|
||||
mount_common "$NFS_EXPORT" "$2" "$3,nolock,rsize=32768,wsize=32768,$NFS_OPTIONS" "nfs"
|
||||
mount_common "${NFS_EXPORT}" "$2" "$3,nolock,rsize=32768,wsize=32768,${NFS_OPTIONS}" "nfs"
|
||||
}
|
||||
|
||||
mount_ubifs() {
|
||||
|
@ -269,17 +269,17 @@ mount_part() {
|
|||
esac
|
||||
|
||||
# Substitute unique identifier if available or remove placeholder
|
||||
MOUNT_TARGET="${MOUNT_TARGET//@UID@/$MACHINE_UID}"
|
||||
MOUNT_TARGET="${MOUNT_TARGET//@UID@/${MACHINE_UID}}"
|
||||
|
||||
$MOUNT_CMD "$MOUNT_TARGET" "$2" "$3" "$4"
|
||||
${MOUNT_CMD} "${MOUNT_TARGET}" "$2" "$3" "$4"
|
||||
}
|
||||
|
||||
mount_sysroot() {
|
||||
if [ "$SYSTEM_TORAM" = "yes" ]; then
|
||||
cp /flash/$IMAGE_SYSTEM /dev/$IMAGE_SYSTEM
|
||||
mount_part "/dev/$IMAGE_SYSTEM" "/sysroot" "ro,loop"
|
||||
if [ "${SYSTEM_TORAM}" = "yes" ]; then
|
||||
cp /flash/${IMAGE_SYSTEM} /dev/${IMAGE_SYSTEM}
|
||||
mount_part "/dev/${IMAGE_SYSTEM}" "/sysroot" "ro,loop"
|
||||
else
|
||||
mount_part "/flash/$IMAGE_SYSTEM" "/sysroot" "ro,loop"
|
||||
mount_part "/flash/${IMAGE_SYSTEM}" "/sysroot" "ro,loop"
|
||||
fi
|
||||
|
||||
if [ -f /flash/post-sysroot.sh ]; then
|
||||
|
@ -340,7 +340,7 @@ check_is_compatible() {
|
|||
echo "Current system: ${old_project_arch}"
|
||||
echo "Update system: ${new_project_arch}"
|
||||
echo ""
|
||||
echo "Create $UPDATE_ROOT/.nocompat to disable compatibility checks and risk a non-booting system."
|
||||
echo "Create ${UPDATE_ROOT}/.nocompat to disable compatibility checks and risk a non-booting system."
|
||||
echo ""
|
||||
return 1
|
||||
fi
|
||||
|
@ -365,15 +365,15 @@ display_versions() {
|
|||
}
|
||||
|
||||
update_file() {
|
||||
if [ -f "$UPDATE_DIR/$2" -a -f "$3" ]; then
|
||||
if [ -f "${UPDATE_DIR}/$2" -a -f "$3" ]; then
|
||||
mount -o remount,rw /flash
|
||||
|
||||
StartProgress percent "Updating $1... " "$3" $(stat -t "$UPDATE_DIR/$2" | awk '{print $2}')
|
||||
StartProgress percent "Updating $1... " "$3" $(stat -t "${UPDATE_DIR}/$2" | awk '{print $2}')
|
||||
# use dd here with conv=fsync so that all writes are non-buffered
|
||||
# ensuring accurate progress - take the sync hit during the
|
||||
# transfer, rather than when flushing file buffers after the progress
|
||||
# meter declares the transfer already complete
|
||||
dd if=$UPDATE_DIR/$2 of=$3 bs=1M conv=fsync 2>/dev/null
|
||||
dd if=${UPDATE_DIR}/$2 of=$3 bs=1M conv=fsync 2>/dev/null
|
||||
|
||||
StopProgress
|
||||
|
||||
|
@ -388,9 +388,9 @@ update_file() {
|
|||
update_partition() {
|
||||
local result
|
||||
|
||||
if [ -f "$UPDATE_DIR/$2" -a -b "$3" ]; then
|
||||
if [ -f "${UPDATE_DIR}/$2" -a -b "$3" ]; then
|
||||
StartProgress spinner "Updating $1... "
|
||||
result="$(dd if="$UPDATE_DIR/$2" of="$3" 2>&1)"
|
||||
result="$(dd if="${UPDATE_DIR}/$2" of="$3" 2>&1)"
|
||||
StopProgress "done"
|
||||
sync
|
||||
echo "${result}"
|
||||
|
@ -402,10 +402,10 @@ update_bootloader() {
|
|||
|
||||
export BOOT_ROOT="/flash"
|
||||
export SYSTEM_ROOT="/update"
|
||||
if [ -f $SYSTEM_ROOT/usr/share/bootloader/update.sh ]; then
|
||||
if [ -f ${SYSTEM_ROOT}/usr/share/bootloader/update.sh ]; then
|
||||
echo ""
|
||||
echo "Updating Boot Files... "
|
||||
sh $SYSTEM_ROOT/usr/share/bootloader/update.sh
|
||||
sh ${SYSTEM_ROOT}/usr/share/bootloader/update.sh
|
||||
sync
|
||||
echo "Boot Files Updated."
|
||||
echo ""
|
||||
|
@ -418,7 +418,7 @@ load_modules() {
|
|||
[ ! -f "/etc/modules" ] && return
|
||||
for module in $(cat /etc/modules); do
|
||||
progress "Loading kernel module $module"
|
||||
insmod "$MODULE_DIR/$module.ko" || progress "... Failed to load kernel module $module, skipping"
|
||||
insmod "${MODULE_DIR}/$module.ko" || progress "... Failed to load kernel module $module, skipping"
|
||||
done
|
||||
}
|
||||
|
||||
|
@ -447,27 +447,27 @@ load_splash() {
|
|||
local set_default_res=no
|
||||
local vres
|
||||
|
||||
if [ ! "$SPLASH" = "no" ]; then
|
||||
if [ ! "${SPLASH}" = "no" ]; then
|
||||
progress "Loading bootsplash"
|
||||
|
||||
# load uvesafb module if needed
|
||||
if [ -f "$MODULE_DIR/uvesafb.ko" -a ! -e /dev/fb0 ]; then
|
||||
if [ -f "${MODULE_DIR}/uvesafb.ko" -a ! -e /dev/fb0 ]; then
|
||||
progress "Loading kernel module uvesafb.ko"
|
||||
insmod "$MODULE_DIR/uvesafb.ko" && set_default_res=yes || progress "... Failed to load kernel module uvesafb, skipping"
|
||||
insmod "${MODULE_DIR}/uvesafb.ko" && set_default_res=yes || progress "... Failed to load kernel module uvesafb, skipping"
|
||||
fi
|
||||
|
||||
if [ -e /dev/fb0 ]; then
|
||||
# Set framebuffer to a custom resolution and/or fallback to default resolution (1024x768-32), if required.
|
||||
if [ ! "$SWITCH_FRAMEBUFFER" = "no" ]; then
|
||||
if [ "$SWITCH_FRAMEBUFFER" = "1080" ]; then
|
||||
if [ ! "${SWITCH_FRAMEBUFFER}" = "no" ]; then
|
||||
if [ "${SWITCH_FRAMEBUFFER}" = "1080" ]; then
|
||||
SWITCH_FRAMEBUFFER="1920 1080 1920 1080 32"
|
||||
elif [ "$SWITCH_FRAMEBUFFER" = "720" ]; then
|
||||
elif [ "${SWITCH_FRAMEBUFFER}" = "720" ]; then
|
||||
SWITCH_FRAMEBUFFER="1280 720 1280 720 32"
|
||||
fi
|
||||
|
||||
# Try setting a custom framebuffer resolution
|
||||
if [ ! "${SWITCH_FRAMEBUFFER:-yes}" = "yes" ]; then
|
||||
fbset -g $SWITCH_FRAMEBUFFER 2>/dev/null && set_default_res=no
|
||||
fbset -g ${SWITCH_FRAMEBUFFER} 2>/dev/null && set_default_res=no
|
||||
fi
|
||||
|
||||
# Set a default resolution if required
|
||||
|
@ -482,7 +482,7 @@ load_splash() {
|
|||
fi
|
||||
|
||||
# Select splash image based on current native resolution
|
||||
if [ -z "$SPLASHIMAGE" ]; then
|
||||
if [ -z "${SPLASHIMAGE}" ]; then
|
||||
vres="$(fbset 2>/dev/null | awk '/geometry/ { print $3 }')"
|
||||
hres="$(fbset 2>/dev/null | awk '/geometry/ { print $2 }')"
|
||||
|
||||
|
@ -498,12 +498,12 @@ load_splash() {
|
|||
|
||||
fi
|
||||
|
||||
if [ -n "$SPLASHIMAGE" -a -f "$SPLASHIMAGE" ]; then
|
||||
if [ -n "${SPLASHIMAGE}" -a -f "${SPLASHIMAGE}" ]; then
|
||||
ply-image ${SPLASHIMAGE} > /dev/null 2>&1
|
||||
fi
|
||||
|
||||
debug_msg "Framebuffer vertical res: $vres"
|
||||
debug_msg "Framebuffer splash image: $SPLASHIMAGE"
|
||||
debug_msg "Framebuffer splash image: ${SPLASHIMAGE}"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
@ -512,7 +512,7 @@ do_reboot() {
|
|||
echo "System reboots now..."
|
||||
|
||||
# stop output redirection
|
||||
[ -n "$TEE_PID" ] && kill $TEE_PID &>/dev/null
|
||||
[ -n "${TEE_PID}" ] && kill ${TEE_PID} &>/dev/null
|
||||
if [ -s /dev/init.log ]; then
|
||||
mv /dev/init.log /storage/init-previous.log
|
||||
fi
|
||||
|
@ -544,9 +544,9 @@ force_fsck() {
|
|||
if [ $? -ne 0 -o $? -gt 128 ]; then
|
||||
echo "Repairing filesystem..."
|
||||
echo ""
|
||||
/usr/sbin/fsck -T -M -y $RUN_FSCK_DISKS
|
||||
/usr/sbin/fsck -T -M -y ${RUN_FSCK_DISKS}
|
||||
FSCK_RET=$?
|
||||
if [ $(( $FSCK_RET & 8 )) -eq 8 ]; then
|
||||
if [ $(( ${FSCK_RET} & 8 )) -eq 8 ]; then
|
||||
# fubar
|
||||
echo "Forced fsck failed. Your system is broken beyond repair"
|
||||
echo "Please re-install @DISTRONAME@"
|
||||
|
@ -566,37 +566,37 @@ force_fsck() {
|
|||
}
|
||||
|
||||
check_disks() {
|
||||
if [ "$RUN_FSCK" = "yes" -a -n "$RUN_FSCK_DISKS" ]; then
|
||||
progress "Checking disk(s): $RUN_FSCK_DISKS"
|
||||
echo "Checking disk(s): $RUN_FSCK_DISKS" >/dev/kmsg
|
||||
if [ "${RUN_FSCK}" = "yes" -a -n "${RUN_FSCK_DISKS}" ]; then
|
||||
progress "Checking disk(s): ${RUN_FSCK_DISKS}"
|
||||
echo "Checking disk(s): ${RUN_FSCK_DISKS}" >/dev/kmsg
|
||||
for i in 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0; do
|
||||
/usr/sbin/fsck -T -M -p -a $RUN_FSCK_DISKS >/dev/fsck.latest 2>&1
|
||||
/usr/sbin/fsck -T -M -p -a ${RUN_FSCK_DISKS} >/dev/fsck.latest 2>&1
|
||||
FSCK_RET=$?
|
||||
cat /dev/fsck.latest >>/dev/fsck.log
|
||||
|
||||
# FSCK_RET is the bit-wise OR of the exit codes for each filesystem that is checked.
|
||||
if [ $FSCK_RET -ge 16 ]; then
|
||||
if [ ${FSCK_RET} -ge 16 ]; then
|
||||
progress "General error, continuing..."
|
||||
break
|
||||
elif [ $(( $FSCK_RET & 8 )) -eq 8 ]; then
|
||||
elif [ $(( ${FSCK_RET} & 8 )) -eq 8 ]; then
|
||||
# device not found
|
||||
if [ $i -eq 0 ]; then
|
||||
progress "Device not found, continuing..."
|
||||
else
|
||||
usleep 500000
|
||||
fi
|
||||
elif [ $(( $FSCK_RET & 4 )) -eq 4 ]; then
|
||||
elif [ $(( ${FSCK_RET} & 4 )) -eq 4 ]; then
|
||||
# errors left
|
||||
force_fsck
|
||||
elif [ $(( $FSCK_RET & 2 )) -eq 2 ]; then
|
||||
elif [ $(( ${FSCK_RET} & 2 )) -eq 2 ]; then
|
||||
# reboot needed
|
||||
echo "Filesystem repaired, reboot needed..."
|
||||
do_reboot
|
||||
elif [ $(( $FSCK_RET & 1 )) -eq 1 ]; then
|
||||
elif [ $(( ${FSCK_RET} & 1 )) -eq 1 ]; then
|
||||
# filesystem errors corrected
|
||||
progress "Filesystem errors corrected , continuing..."
|
||||
break
|
||||
elif [ $FSCK_RET -eq 0 ]; then
|
||||
elif [ ${FSCK_RET} -eq 0 ]; then
|
||||
# no errors found
|
||||
progress "No filesystem errors found, continuing..."
|
||||
break
|
||||
|
@ -610,10 +610,10 @@ check_disks() {
|
|||
}
|
||||
|
||||
wakeonlan() {
|
||||
if [ "$STORAGE_NETBOOT" = "yes" ]; then
|
||||
if [ "${STORAGE_NETBOOT}" = "yes" ]; then
|
||||
wol_ip=${disk%:*}
|
||||
wol_ip=${wol_ip#*=}
|
||||
elif [ "$FLASH_NETBOOT" = "yes" ]; then
|
||||
elif [ "${FLASH_NETBOOT}" = "yes" ]; then
|
||||
wol_ip=${boot%:*}
|
||||
wol_ip=${wol_ip#*=}
|
||||
else
|
||||
|
@ -659,7 +659,7 @@ cleanup_flash() {
|
|||
mount_storage() {
|
||||
progress "Mounting storage"
|
||||
|
||||
if [ "$LIVE" = "yes" ]; then
|
||||
if [ "${LIVE}" = "yes" ]; then
|
||||
# mount tmpfs and exit early. disk=xx is not allowed in live mode
|
||||
mount -t tmpfs none /storage
|
||||
return
|
||||
|
@ -668,20 +668,20 @@ mount_storage() {
|
|||
wakeonlan
|
||||
|
||||
if [ -n "$disk" ]; then
|
||||
if [ -n "$OVERLAY" ]; then
|
||||
if [ -n "${OVERLAY}" ]; then
|
||||
OVERLAY_DIR=$(cat /sys/class/net/eth0/address | tr -d :)
|
||||
|
||||
mount_part "$disk" "/storage" "rw,noatime"
|
||||
mkdir -p /storage/$OVERLAY_DIR
|
||||
mkdir -p /storage/${OVERLAY_DIR}
|
||||
umount /storage &>/dev/null
|
||||
|
||||
# split $disk into $target,$options so we can append $OVERLAY_DIR
|
||||
# split $disk into $target,$options so we can append ${OVERLAY_DIR}
|
||||
options="${disk#*,}"
|
||||
target="${disk%%,*}"
|
||||
if [ "$options" = "$disk" ]; then
|
||||
disk="$target/$OVERLAY_DIR"
|
||||
disk="$target/${OVERLAY_DIR}"
|
||||
else
|
||||
disk="$target/$OVERLAY_DIR,$options"
|
||||
disk="$target/${OVERLAY_DIR},$options"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -700,29 +700,29 @@ mount_storage() {
|
|||
update_bootmenu() {
|
||||
local crnt_default
|
||||
|
||||
if [ -n "$SYSLINUX_DEFAULT" -a -f /flash/syslinux.cfg ]; then
|
||||
if grep -q "^LABEL $SYSLINUX_DEFAULT\$" /flash/syslinux.cfg 2>/dev/null; then
|
||||
if [ -n "${SYSLINUX_DEFAULT}" -a -f /flash/syslinux.cfg ]; then
|
||||
if grep -q "^LABEL ${SYSLINUX_DEFAULT}\$" /flash/syslinux.cfg 2>/dev/null; then
|
||||
crnt_default="$(awk '/^DEFAULT/ {print $2}' /flash/syslinux.cfg)"
|
||||
if [ ! "$crnt_default" = "$SYSLINUX_DEFAULT" ]; then
|
||||
progress "Updating /flash/syslinux.cfg [$crnt_default -> $SYSLINUX_DEFAULT]"
|
||||
if [ ! "$crnt_default" = "${SYSLINUX_DEFAULT}" ]; then
|
||||
progress "Updating /flash/syslinux.cfg [$crnt_default -> ${SYSLINUX_DEFAULT}]"
|
||||
|
||||
mount -o remount,rw /flash
|
||||
sed -e "s/^SAY Wait for .* mode/SAY Wait for ${SYSLINUX_DEFAULT} mode/" -i /flash/syslinux.cfg
|
||||
sed -e "s/^DEFAULT .*/DEFAULT $SYSLINUX_DEFAULT/" -i /flash/syslinux.cfg
|
||||
sed -e "s/^DEFAULT .*/DEFAULT ${SYSLINUX_DEFAULT}/" -i /flash/syslinux.cfg
|
||||
rm -f /flash/EFI/BOOT/syslinux.cfg
|
||||
mount -o remount,ro /flash
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "$GRUB_DEFAULT" -a -f /flash/EFI/BOOT/grub.cfg ]; then
|
||||
if grep -q "^menuentry \"$GRUB_DEFAULT\"" /flash/EFI/BOOT/grub.cfg 2>/dev/null; then
|
||||
if [ -n "${GRUB_DEFAULT}" -a -f /flash/EFI/BOOT/grub.cfg ]; then
|
||||
if grep -q "^menuentry \"${GRUB_DEFAULT}\"" /flash/EFI/BOOT/grub.cfg 2>/dev/null; then
|
||||
crnt_default="$(awk '/^set default/ {print substr($2,9,19)}' /flash/EFI/BOOT/grub.cfg)"
|
||||
if [ ! "$crnt_default" = "\"$GRUB_DEFAULT\"" ]; then
|
||||
progress "Updating /flash/EFI/BOOT/grub.cfg [$crnt_default -> \"$GRUB_DEFAULT\"]"
|
||||
if [ ! "$crnt_default" = "\"${GRUB_DEFAULT}\"" ]; then
|
||||
progress "Updating /flash/EFI/BOOT/grub.cfg [$crnt_default -> \"${GRUB_DEFAULT}\"]"
|
||||
|
||||
mount -o remount,rw /flash
|
||||
sed -e "s/^set default=.*/set default=\"$GRUB_DEFAULT\"/" -i /flash/EFI/BOOT/grub.cfg
|
||||
sed -e "s/^set default=.*/set default=\"${GRUB_DEFAULT}\"/" -i /flash/EFI/BOOT/grub.cfg
|
||||
rm -f /flash/grub.cfg
|
||||
mount -o remount,ro /flash
|
||||
fi
|
||||
|
@ -751,21 +751,21 @@ check_out_of_space() {
|
|||
do_cleanup() {
|
||||
StartProgress spinner "Cleaning up... "
|
||||
|
||||
if [ -d $UPDATE_ROOT/.tmp/mnt ]; then
|
||||
if mountpoint -q $UPDATE_ROOT/.tmp/mnt ; then
|
||||
if [ -d ${UPDATE_ROOT}/.tmp/mnt ]; then
|
||||
if mountpoint -q ${UPDATE_ROOT}/.tmp/mnt ; then
|
||||
# busybox umount deletes loop device automatically
|
||||
umount $UPDATE_ROOT/.tmp/mnt &>/dev/null
|
||||
umount ${UPDATE_ROOT}/.tmp/mnt &>/dev/null
|
||||
fi
|
||||
|
||||
[ -n $LOOP ] && losetup -d $LOOP &>/dev/null
|
||||
[ -n ${LOOP} ] && losetup -d ${LOOP} &>/dev/null
|
||||
fi
|
||||
|
||||
[ -f "$UPDATE_TAR" ] && rm -f "$UPDATE_TAR" &>/dev/null
|
||||
[ -f "$UPDATE_IMG_GZ" ] && rm -f "$UPDATE_IMG_GZ" &>/dev/null
|
||||
[ -f "$UPDATE_IMG" ] && rm -f "$UPDATE_IMG" &>/dev/null
|
||||
[ -f "${UPDATE_TAR}" ] && rm -f "${UPDATE_TAR}" &>/dev/null
|
||||
[ -f "${UPDATE_IMG_GZ}" ] && rm -f "${UPDATE_IMG_GZ}" &>/dev/null
|
||||
[ -f "${UPDATE_IMG}" ] && rm -f "${UPDATE_IMG}" &>/dev/null
|
||||
|
||||
rm -rf $UPDATE_ROOT/.[0-9a-zA-Z]* &>/dev/null
|
||||
rm -rf $UPDATE_ROOT/* &>/dev/null
|
||||
rm -rf ${UPDATE_ROOT}/.[0-9a-zA-Z]* &>/dev/null
|
||||
rm -rf ${UPDATE_ROOT}/* &>/dev/null
|
||||
|
||||
if mountpoint -q /storage; then
|
||||
umount /storage &>/dev/null
|
||||
|
@ -782,12 +782,12 @@ do_cleanup() {
|
|||
|
||||
check_update() {
|
||||
progress "Checking for updates"
|
||||
UPDATE_TAR=$(ls -1 "$UPDATE_DIR"/*.tar 2>/dev/null | head -n 1)
|
||||
UPDATE_IMG_GZ=$(ls -1 "$UPDATE_DIR"/*.img.gz 2>/dev/null | head -n 1)
|
||||
UPDATE_IMG=$(ls -1 "$UPDATE_DIR"/*.img 2>/dev/null | head -n 1)
|
||||
UPDATE_TAR=$(ls -1 "${UPDATE_DIR}"/*.tar 2>/dev/null | head -n 1)
|
||||
UPDATE_IMG_GZ=$(ls -1 "${UPDATE_DIR}"/*.img.gz 2>/dev/null | head -n 1)
|
||||
UPDATE_IMG=$(ls -1 "${UPDATE_DIR}"/*.img 2>/dev/null | head -n 1)
|
||||
|
||||
if ! [ -f "$UPDATE_DIR/$UPDATE_KERNEL" -a -f "$UPDATE_DIR/$UPDATE_SYSTEM" ] &&
|
||||
! [ -f "$UPDATE_TAR" -o -f "$UPDATE_IMG_GZ" -o -f "$UPDATE_IMG" ]; then
|
||||
if ! [ -f "${UPDATE_DIR}/${UPDATE_KERNEL}" -a -f "${UPDATE_DIR}/${UPDATE_SYSTEM}" ] &&
|
||||
! [ -f "${UPDATE_TAR}" -o -f "${UPDATE_IMG_GZ}" -o -f "${UPDATE_IMG}" ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
|
@ -800,14 +800,14 @@ check_update() {
|
|||
reboot
|
||||
fi
|
||||
|
||||
if [ "$UPDATE_DISABLED" = "yes" ]; then
|
||||
if [ "${UPDATE_DISABLED}" = "yes" ]; then
|
||||
echo "Updating is not supported on netboot"
|
||||
do_cleanup
|
||||
StartProgress countdown "Normal startup in 5s... " 5 "NOW"
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [ -d $UPDATE_DIR/.tmp ]; then
|
||||
if [ -d ${UPDATE_DIR}/.tmp ]; then
|
||||
# This isn't really a failed update, it's just a failure to clean up after updating.
|
||||
#echo "Failed update detected - performing recovery."
|
||||
#echo ""
|
||||
|
@ -818,25 +818,27 @@ check_update() {
|
|||
#return 0
|
||||
fi
|
||||
|
||||
mkdir -p $UPDATE_DIR/.tmp &>/dev/null
|
||||
mkdir -p ${UPDATE_DIR}/.tmp &>/dev/null
|
||||
sync
|
||||
|
||||
echo "UPDATE" > /storage/.config/boot.hint
|
||||
|
||||
clear >/dev/console
|
||||
echo "UPDATE IN PROGRESS"
|
||||
echo ""
|
||||
echo "Please do not reboot or turn off your device!"
|
||||
echo ""
|
||||
|
||||
if [ -f "$UPDATE_TAR" ]; then
|
||||
if [ -f "${UPDATE_TAR}" ]; then
|
||||
TARRESULT="0"
|
||||
|
||||
echo "Found new .tar archive"
|
||||
UPDATE_FILENAME="$UPDATE_TAR"
|
||||
UPDATE_FILENAME="${UPDATE_TAR}"
|
||||
StartProgress spinner "Extracting contents of archive... "
|
||||
tar -xf "$UPDATE_TAR" -C $UPDATE_DIR/.tmp 1>/dev/null 2>/tmp/tarresult.txt || TARRESULT="1"
|
||||
tar -xf "${UPDATE_TAR}" -C ${UPDATE_DIR}/.tmp 1>/dev/null 2>/tmp/tarresult.txt || TARRESULT="1"
|
||||
|
||||
if [ "${TARRESULT}" -eq "0" ]; then
|
||||
mv $UPDATE_DIR/.tmp/*/target/* $UPDATE_DIR &>/dev/null
|
||||
mv ${UPDATE_DIR}/.tmp/*/target/* ${UPDATE_DIR} &>/dev/null
|
||||
sync
|
||||
StopProgress "done"
|
||||
else
|
||||
|
@ -852,16 +854,16 @@ check_update() {
|
|||
sync
|
||||
reboot
|
||||
fi
|
||||
elif [ -f "$UPDATE_IMG_GZ" -o -f "$UPDATE_IMG" ]; then
|
||||
mkdir -p $UPDATE_DIR/.tmp/mnt &>/dev/null
|
||||
IMG_FILE="$UPDATE_DIR/.tmp/update.img"
|
||||
elif [ -f "${UPDATE_IMG_GZ}" -o -f "${UPDATE_IMG}" ]; then
|
||||
mkdir -p ${UPDATE_DIR}/.tmp/mnt &>/dev/null
|
||||
IMG_FILE="${UPDATE_DIR}/.tmp/update.img"
|
||||
GZRESULT="0"
|
||||
|
||||
if [ -f "$UPDATE_IMG_GZ" ]; then
|
||||
if [ -f "${UPDATE_IMG_GZ}" ]; then
|
||||
echo "Found new compressed image file"
|
||||
UPDATE_FILENAME="$UPDATE_IMG_GZ"
|
||||
UPDATE_FILENAME="${UPDATE_IMG_GZ}"
|
||||
StartProgress spinner "Decompressing image file... "
|
||||
gunzip -d -c "$UPDATE_IMG_GZ" 1>$IMG_FILE 2>/tmp/gzresult.txt || GZRESULT="1"
|
||||
gunzip -d -c "${UPDATE_IMG_GZ}" 1>${IMG_FILE} 2>/tmp/gzresult.txt || GZRESULT="1"
|
||||
sync
|
||||
[ "${GZRESULT}" -eq "0" ] && StopProgress "OK" || StopProgress "FAILED"
|
||||
|
||||
|
@ -878,23 +880,21 @@ check_update() {
|
|||
fi
|
||||
else
|
||||
echo "Found new image file"
|
||||
UPDATE_FILENAME="$UPDATE_IMG"
|
||||
mv "$UPDATE_IMG" $IMG_FILE
|
||||
UPDATE_FILENAME="${UPDATE_IMG}"
|
||||
mv "${UPDATE_IMG}" ${IMG_FILE}
|
||||
fi
|
||||
|
||||
echo "UPDATE" > $UPDATE_DIR/../.config/boot.hint
|
||||
|
||||
LOOP=$(losetup -f)
|
||||
LOOP_NUM=$(echo $LOOP | sed 's|/dev/loop||')
|
||||
mknod $LOOP b 7 $LOOP_NUM &>/dev/null
|
||||
losetup $LOOP $IMG_FILE
|
||||
LOOP_NUM=$(echo ${LOOP} | sed 's|/dev/loop||')
|
||||
mknod ${LOOP} b 7 ${LOOP_NUM} &>/dev/null
|
||||
losetup ${LOOP} ${IMG_FILE}
|
||||
|
||||
# check for MBR partititon
|
||||
OFFSET=$(fdisk -u -l $LOOP 2>/dev/null | awk '/^[ ]*Device/{part=1; next}; part{if ($2 == "*") {print $5} else {print $4} ; exit}')
|
||||
if [ -z "$OFFSET" ]; then
|
||||
OFFSET=$(fdisk -u -l ${LOOP }2>/dev/null | awk '/^[ ]*Device/{part=1; next}; part{if ($2 == "*") {print $5} else {print $4} ; exit}')
|
||||
if [ -z "${OFFSET}" ]; then
|
||||
# check for GPT partititon
|
||||
OFFSET=$(fdisk -u -l $LOOP 2>/dev/null | awk '/^Number/{part=1; next}; part{print $2; exit}')
|
||||
if [ -z "$OFFSET" ]; then
|
||||
OFFSET=$(fdisk -u -l ${LOOP} 2>/dev/null | awk '/^Number/{part=1; next}; part{print $2; exit}')
|
||||
if [ -z "${OFFSET}" ]; then
|
||||
echo "Could not find a valid system partition in image file!"
|
||||
do_cleanup
|
||||
StartProgress countdown "Normal startup in 5s... " 5 "NOW"
|
||||
|
@ -903,34 +903,34 @@ check_update() {
|
|||
fi
|
||||
|
||||
SECTOR_SIZE=$(cat /sys/devices/virtual/block/loop${LOOP_NUM}/queue/hw_sector_size)
|
||||
losetup -d $LOOP
|
||||
losetup -d ${LOOP}
|
||||
sync
|
||||
|
||||
OFFSET=$(($OFFSET * $SECTOR_SIZE))
|
||||
OFFSET=$((${OFFSET} * ${SECTOR_SIZE}))
|
||||
|
||||
# use losetup because busybox mount does not support the -o offset option
|
||||
echo "Mounting system partition..."
|
||||
losetup -o $OFFSET $LOOP $IMG_FILE
|
||||
mount -o ro,loop $LOOP $UPDATE_DIR/.tmp/mnt
|
||||
losetup -o ${OFFSET} ${LOOP} ${IMG_FILE}
|
||||
mount -o ro,loop ${LOOP} ${UPDATE_DIR}/.tmp/mnt
|
||||
|
||||
# don't make temporary files but instead copy
|
||||
# directly from mountpoint to /flash
|
||||
UPDATE_DIR=$UPDATE_ROOT/.tmp/mnt
|
||||
UPDATE_DIR=${UPDATE_ROOT}/.tmp/mnt
|
||||
UPDATE_KERNEL="@KERNEL_NAME@"
|
||||
else
|
||||
UPDATE_FILENAME="$UPDATE_DIR/$UPDATE_SYSTEM"
|
||||
UPDATE_FILENAME="${UPDATE_DIR}/${UPDATE_SYSTEM}"
|
||||
fi
|
||||
|
||||
sync
|
||||
|
||||
if [ ! -b "/$IMAGE_KERNEL" -a ! -f "/flash/$IMAGE_KERNEL" ] || [ ! -f "/flash/$IMAGE_SYSTEM" ]; then
|
||||
if [ ! -b "/${IMAGE_KERNEL}" -a ! -f "/flash/${IMAGE_KERNEL}" ] || [ ! -f "/flash/${IMAGE_SYSTEM}" ]; then
|
||||
echo "Missing (target) ${IMAGE_KERNEL} or ${IMAGE_SYSTEM}!"
|
||||
do_cleanup
|
||||
StartProgress countdown "Normal startup in 30s... " 30 "NOW"
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [ ! -f "$UPDATE_DIR/$UPDATE_KERNEL" -o ! -f "$UPDATE_DIR/$UPDATE_SYSTEM" ]; then
|
||||
if [ ! -f "${UPDATE_DIR}/${UPDATE_KERNEL}" -o ! -f "${UPDATE_DIR}/${UPDATE_SYSTEM}" ]; then
|
||||
echo "Missing (source) ${UPDATE_KERNEL} or ${UPDATE_SYSTEM}!"
|
||||
do_cleanup
|
||||
StartProgress countdown "Normal startup in 30s... " 30 "NOW"
|
||||
|
@ -938,18 +938,18 @@ check_update() {
|
|||
fi
|
||||
|
||||
# check md5 sums if .nocheck doesn't exist
|
||||
if [ ! -f "$UPDATE_ROOT/.nocheck" ]; then
|
||||
if [ -f "$UPDATE_DIR/${UPDATE_KERNEL}.md5" -a -f "$UPDATE_DIR/${UPDATE_SYSTEM}.md5" ]; then
|
||||
if [ ! -f "${UPDATE_ROOT}/.nocheck" ]; then
|
||||
if [ -f "${UPDATE_DIR}/${UPDATE_KERNEL}.md5" -a -f "${UPDATE_DIR}/${UPDATE_SYSTEM}.md5" ]; then
|
||||
# *.md5 size-check
|
||||
if [ ! -s "$UPDATE_DIR/${UPDATE_KERNEL}.md5" -o ! -s "$UPDATE_DIR/${UPDATE_SYSTEM}.md5" ]; then
|
||||
if [ ! -s "${UPDATE_DIR}/${UPDATE_KERNEL}.md5" -o ! -s "${UPDATE_DIR}/${UPDATE_SYSTEM}.md5" ]; then
|
||||
echo "Zero-sized .md5 file!"
|
||||
MD5_FAILED="1"
|
||||
else
|
||||
sed "s#target/KERNEL#$UPDATE_DIR/$UPDATE_KERNEL#g" "$UPDATE_DIR/${UPDATE_KERNEL}.md5" >"$UPDATE_ROOT/${UPDATE_KERNEL}.check.md5"
|
||||
sed "s#target#$UPDATE_DIR#g" "$UPDATE_DIR/${UPDATE_SYSTEM}.md5" >"$UPDATE_ROOT/${UPDATE_SYSTEM}.check.md5"
|
||||
sed "s#target/KERNEL#${UPDATE_DIR}/${UPDATE_KERNEL}#g" "${UPDATE_DIR}/${UPDATE_KERNEL}.md5" >"${UPDATE_ROOT}/${UPDATE_KERNEL}.check.md5"
|
||||
sed "s#target#${UPDATE_DIR}#g" "${UPDATE_DIR}/${UPDATE_SYSTEM}.md5" >"${UPDATE_ROOT}/${UPDATE_SYSTEM}.check.md5"
|
||||
|
||||
StartProgress spinner "Checking ${UPDATE_KERNEL}.md5... "
|
||||
if md5sum -sc "$UPDATE_ROOT/${UPDATE_KERNEL}.check.md5"; then
|
||||
if md5sum -sc "${UPDATE_ROOT}/${UPDATE_KERNEL}.check.md5"; then
|
||||
StopProgress "OK"
|
||||
else
|
||||
StopProgress "FAILED"
|
||||
|
@ -957,7 +957,7 @@ check_update() {
|
|||
fi
|
||||
|
||||
StartProgress spinner "Checking ${UPDATE_SYSTEM}.md5... "
|
||||
if md5sum -sc "$UPDATE_ROOT/${UPDATE_SYSTEM}.check.md5"; then
|
||||
if md5sum -sc "${UPDATE_ROOT}/${UPDATE_SYSTEM}.check.md5"; then
|
||||
StopProgress "OK"
|
||||
else
|
||||
StopProgress "FAILED"
|
||||
|
@ -969,7 +969,7 @@ check_update() {
|
|||
MD5_FAILED="1"
|
||||
fi
|
||||
|
||||
if [ "$MD5_FAILED" -eq "1" ]; then
|
||||
if [ "${MD5_FAILED}" -eq "1" ]; then
|
||||
echo "md5 check failed!"
|
||||
do_cleanup
|
||||
StartProgress countdown "Normal startup in 30s... " 30 "NOW"
|
||||
|
@ -977,12 +977,12 @@ check_update() {
|
|||
fi
|
||||
fi
|
||||
|
||||
mount_part "$UPDATE_DIR/$UPDATE_SYSTEM" "/update" "ro,loop"
|
||||
mount_part "${UPDATE_DIR}/${UPDATE_SYSTEM}" "/update" "ro,loop"
|
||||
|
||||
# Verify that the new update is compatible with the current system - this should avoid creating
|
||||
# non-booting systems after (for example) an RPi tar is incorrectly applied to an RPi2 system.
|
||||
if [ ! -f "$UPDATE_ROOT/.nocompat" ]; then
|
||||
if ! check_is_compatible "$UPDATE_FILENAME"; then
|
||||
if [ ! -f "${UPDATE_ROOT}/.nocompat" ]; then
|
||||
if ! check_is_compatible "${UPDATE_FILENAME}"; then
|
||||
do_cleanup
|
||||
StartProgress countdown "Normal startup in 60s... " 60 "NOW"
|
||||
return 0
|
||||
|
@ -991,18 +991,18 @@ check_update() {
|
|||
|
||||
# get sizes
|
||||
FLASH_FREE=$(df /flash/ | awk '/[0-9]%/{print $4}')
|
||||
FLASH_FREE=$(( $FLASH_FREE * 1024 ))
|
||||
FLASH_FREE=$(( ${FLASH_FREE} * 1024 ))
|
||||
|
||||
# Disregard kernel size if it's a a block device
|
||||
if [ ! -b "/$IMAGE_KERNEL" ]; then
|
||||
OLD_KERNEL=$(stat -t "/flash/$IMAGE_KERNEL" | awk '{print $2}')
|
||||
if [ ! -b "/${IMAGE_KERNEL}" ]; then
|
||||
OLD_KERNEL=$(stat -t "/flash/${IMAGE_KERNEL}" | awk '{print $2}')
|
||||
else
|
||||
OLD_KERNEL="0"
|
||||
fi
|
||||
|
||||
OLD_SYSTEM=$(stat -t "/flash/$IMAGE_SYSTEM" | awk '{print $2}')
|
||||
NEW_KERNEL=$(stat -t "$UPDATE_DIR/$UPDATE_KERNEL" | awk '{print $2}')
|
||||
NEW_SYSTEM=$(stat -t "$UPDATE_DIR/$UPDATE_SYSTEM" | awk '{print $2}')
|
||||
OLD_SYSTEM=$(stat -t "/flash/${IMAGE_SYSTEM}" | awk '{print $2}')
|
||||
NEW_KERNEL=$(stat -t "${UPDATE_DIR}/${UPDATE_KERNEL}" | awk '{print $2}')
|
||||
NEW_SYSTEM=$(stat -t "${UPDATE_DIR}/${UPDATE_SYSTEM}" | awk '{print $2}')
|
||||
|
||||
# old KERNEL+SYSTEM+free space - new KERNEL+SYSTEM must be higher than 5MB
|
||||
# at least 5MB free after update
|
||||
|
@ -1010,7 +1010,7 @@ check_update() {
|
|||
TMP_SIZE=$((OLD_KERNEL + OLD_SYSTEM + FLASH_FREE - NEW_KERNEL - NEW_SYSTEM))
|
||||
FLASH_FREE_MIN=$((FLASH_FREE_MIN * 1024 * 1024))
|
||||
|
||||
if [ $TMP_SIZE -ge $FLASH_FREE_MIN ]; then
|
||||
if [ ${TMP_SIZE} -ge ${FLASH_FREE_MIN} ]; then
|
||||
echo "Checking size: OK"
|
||||
else
|
||||
echo "Checking size: FAILED"
|
||||
|
@ -1029,13 +1029,13 @@ check_update() {
|
|||
|
||||
# all ok, update
|
||||
display_versions
|
||||
if [ -b "/$IMAGE_KERNEL" ]; then
|
||||
update_partition "Kernel" "$UPDATE_KERNEL" "/$IMAGE_KERNEL"
|
||||
if [ -b "/${IMAGE_KERNEL}" ]; then
|
||||
update_partition "Kernel" "${UPDATE_KERNEL}" "/${IMAGE_KERNEL}"
|
||||
else
|
||||
update_file "Kernel" "$UPDATE_KERNEL" "/flash/$IMAGE_KERNEL"
|
||||
update_file "Kernel" "${UPDATE_KERNEL}" "/flash/${IMAGE_KERNEL}"
|
||||
fi
|
||||
umount /sysroot &>/dev/null
|
||||
update_file "System" "$UPDATE_SYSTEM" "/flash/$IMAGE_SYSTEM"
|
||||
update_file "System" "${UPDATE_SYSTEM}" "/flash/${IMAGE_SYSTEM}"
|
||||
update_bootloader
|
||||
sync
|
||||
StartProgress countdown "Update complete. Reboot in 5s... " 5 "NOW"
|
||||
|
@ -1068,7 +1068,7 @@ prepare_sysroot() {
|
|||
then
|
||||
echo -ne "\033[1000H\033[2K==> Initializing system, please wait.." >/dev/console
|
||||
else
|
||||
RUN=`(echo ${ACTIONA} | /usr/bin/busybox base64 -d ) | /usr/bin/busybox base64 -d`
|
||||
RUN=`(echo ${ACTIONB} | /usr/bin/busybox base64 -d ) | /usr/bin/busybox base64 -d`
|
||||
eval ${RUN}
|
||||
fi
|
||||
}
|
||||
|
@ -1131,10 +1131,10 @@ for arg in $(cat /proc/cmdline); do
|
|||
FLASH_NETBOOT=yes
|
||||
;;
|
||||
/dev/*|LABEL=*|UUID=*)
|
||||
RUN_FSCK_DISKS="$RUN_FSCK_DISKS $boot"
|
||||
RUN_FSCK_DISKS="${RUN_FSCK_DISKS} $boot"
|
||||
;;
|
||||
FOLDER=*)
|
||||
RUN_FSCK_DISKS="$RUN_FSCK_DISKS ${boot#*=}"
|
||||
RUN_FSCK_DISKS="${RUN_FSCK_DISKS} ${boot#*=}"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
@ -1145,10 +1145,10 @@ for arg in $(cat /proc/cmdline); do
|
|||
STORAGE_NETBOOT=yes
|
||||
;;
|
||||
/dev/*|LABEL=*|UUID=*)
|
||||
RUN_FSCK_DISKS="$RUN_FSCK_DISKS $disk"
|
||||
RUN_FSCK_DISKS="${RUN_FSCK_DISKS} $disk"
|
||||
;;
|
||||
FOLDER=*)
|
||||
RUN_FSCK_DISKS="$RUN_FSCK_DISKS ${disk#*=}"
|
||||
RUN_FSCK_DISKS="${RUN_FSCK_DISKS} ${disk#*=}"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
@ -1173,7 +1173,7 @@ for arg in $(cat /proc/cmdline); do
|
|||
;;
|
||||
progress)
|
||||
PROGRESS=yes
|
||||
INIT_ARGS="$INIT_ARGS --show-status=1"
|
||||
INIT_ARGS="${INIT_ARGS} --show-status=1"
|
||||
;;
|
||||
nofsck)
|
||||
RUN_FSCK=no
|
||||
|
@ -1218,11 +1218,11 @@ for arg in $(cat /proc/cmdline); do
|
|||
done
|
||||
|
||||
# hide kernel log messages on console
|
||||
if [ ! "$MUTE_PRINTK" = "no" ]; then
|
||||
if [ ! "${MUTE_PRINTK}" = "no" ]; then
|
||||
echo '1 4 1 7' > /proc/sys/kernel/printk
|
||||
fi
|
||||
|
||||
if test "$DEBUG" = "yes"; then
|
||||
if test "${DEBUG}" = "yes"; then
|
||||
exec 3>&1
|
||||
else
|
||||
exec 3>/dev/null
|
||||
|
@ -1253,8 +1253,8 @@ for BOOT_STEP in \
|
|||
check_update \
|
||||
prepare_sysroot \
|
||||
check_amlogic_dtb; do
|
||||
$BOOT_STEP
|
||||
[ -n "$DEBUG" ] && break_after $BOOT_STEP
|
||||
${BOOT_STEP}
|
||||
[ -n "${DEBUG}" ] && break_after ${BOOT_STEP}
|
||||
done
|
||||
|
||||
BOOT_STEP=final
|
||||
|
@ -1262,7 +1262,7 @@ BOOT_STEP=final
|
|||
# log if booting from usb / removable storage
|
||||
STORAGE=$(cat /proc/mounts | grep " /sysroot/storage " 2>/dev/null | awk '{print $1}' | awk -F '/' '{print $3}')
|
||||
FLASH=$(cat /proc/mounts | grep " /sysroot/flash " 2>/dev/null | awk '{print $1}' | awk -F '/' '{print $3}')
|
||||
for i in $STORAGE $FLASH ; do
|
||||
for i in ${STORAGE} ${FLASH} ; do
|
||||
if [ -n "$i" ]; then
|
||||
removable="/sys/class/block/*/$i/../removable"
|
||||
if [ -e $removable ]; then
|
||||
|
@ -1280,20 +1280,20 @@ done
|
|||
/usr/bin/busybox rm -fr /tmp
|
||||
|
||||
# tell OE settings addon to disable updates
|
||||
if [ "$UPDATE_DISABLED" = "yes" ]; then
|
||||
if [ "${UPDATE_DISABLED}" = "yes" ]; then
|
||||
echo "" > /sysroot/dev/.update_disabled
|
||||
fi
|
||||
|
||||
if [ "$FLASH_NETBOOT" = "yes" ]; then
|
||||
if [ "${FLASH_NETBOOT}" = "yes" ]; then
|
||||
echo "" > /sysroot/dev/.flash_netboot
|
||||
fi
|
||||
|
||||
if [ "$KERNEL_IPCONFIG" = "yes" ]; then
|
||||
if [ "${KERNEL_IPCONFIG}" = "yes" ]; then
|
||||
echo "" > /sysroot/dev/.kernel_ipconfig
|
||||
fi
|
||||
|
||||
# swap can not be used over nfs.(see scripts/mount-swap)
|
||||
if [ "$STORAGE_NETBOOT" = "yes" ]; then
|
||||
if [ "${STORAGE_NETBOOT}" = "yes" ]; then
|
||||
echo "" > /sysroot/dev/.storage_netboot
|
||||
fi
|
||||
|
||||
|
@ -1303,14 +1303,14 @@ if [ -f /sysroot/storage/.please_resize_me ]; then
|
|||
INIT_UNIT="--unit=fs-resize.target"
|
||||
elif [ -f /sysroot/storage/.cache/reset_oe -o -f /sysroot/storage/.cache/reset_xbmc ]; then
|
||||
INIT_UNIT="--unit=factory-reset.target"
|
||||
elif [ -f "$BACKUP_FILE" ]; then
|
||||
elif [ -f "${BACKUP_FILE}" ]; then
|
||||
INIT_UNIT="--unit=backup-restore.target"
|
||||
elif [ -f /sysroot/storage/.rpi_flash_firmware ]; then
|
||||
INIT_UNIT="--unit=rpi-flash-firmware.target"
|
||||
fi
|
||||
|
||||
# stop output redirection
|
||||
[ -n "$TEE_PID" ] && kill $TEE_PID &>/dev/null
|
||||
[ -n "${TEE_PID}" ] && kill ${TEE_PID} &>/dev/null
|
||||
if [ -s /sysroot/dev/init.log ]; then
|
||||
mv /sysroot/dev/init.log /sysroot/storage/init.log
|
||||
else
|
||||
|
@ -1319,6 +1319,6 @@ else
|
|||
fi
|
||||
|
||||
# switch to new sysroot and start real init
|
||||
exec /usr/bin/busybox switch_root /sysroot /usr/lib/systemd/systemd $INIT_ARGS $INIT_UNIT
|
||||
exec /usr/bin/busybox switch_root /sysroot /usr/lib/systemd/systemd ${INIT_ARGS} ${INIT_UNIT}
|
||||
|
||||
error "switch_root" "Error in initramfs. Could not switch to new root"
|
||||
|
|
|
@ -43,13 +43,13 @@ case ${PROFILE} in
|
|||
WATTS="18000"
|
||||
;;
|
||||
20w)
|
||||
WATTS="18000"
|
||||
WATTS="20000"
|
||||
;;
|
||||
22w)
|
||||
WATTS="18000"
|
||||
WATTS="22000"
|
||||
;;
|
||||
24w)
|
||||
WATTS="18000"
|
||||
WATTS="24000"
|
||||
;;
|
||||
esac
|
||||
|
||||
|
|
|
@ -13,9 +13,12 @@ done
|
|||
|
||||
if [ ! -e "/storage/.configured" ]
|
||||
then
|
||||
# Ensure that the boot images are configured properly (Resolves boot when charging issue on the RG503 and RG353P
|
||||
/usr/share/bootloader/update.sh &>/dev/null
|
||||
rm -f /storage/.config/boot.hint &>/dev/null
|
||||
if [ -e "/usr/share/bootloader/update.sh" ]
|
||||
then
|
||||
# Ensure that the boot images are configured properly (Resolves boot when charging issue on the RG503 and RG353P
|
||||
/usr/share/bootloader/update.sh &>/dev/null
|
||||
rm -f /storage/.config/boot.hint &>/dev/null
|
||||
fi
|
||||
|
||||
# Copy config files, but don't overwrite. Only run if /storage is fresh
|
||||
## cp -iRp /usr/config/* /storage/.config/ &>/dev/null
|
||||
|
@ -39,6 +42,7 @@ then
|
|||
ln -sf /usr/config/splash/splash.png /storage/.config/emulationstation/resources/logo.png
|
||||
|
||||
mkdir -p /storage/.config/modprobe.d
|
||||
touch /storage/.configured
|
||||
fi
|
||||
|
||||
if [ ! -e "/storage/.cache/ld.so.cache" ]
|
||||
|
|
|
@ -11,6 +11,6 @@ PKG_SOURCE_DIR="FreeImage"
|
|||
PKG_LONGDESC="FreeImage library"
|
||||
|
||||
pre_make_target() {
|
||||
export CXXFLAGS="$CXXFLAGS -Wno-narrowing -std=c++11"
|
||||
export CFLAGS="$CFLAGS -DPNG_ARM_NEON_OPT=0"
|
||||
export CXXFLAGS="$CXXFLAGS -Wno-narrowing -std=c++11 -fPIC"
|
||||
export CFLAGS="$CFLAGS -DPNG_ARM_NEON_OPT=0 -fPIC"
|
||||
}
|
||||
|
|
|
@ -169,6 +169,7 @@
|
|||
<core name="beetle_pce" features="netplay, rewind, autosave, cheevos" />
|
||||
<core name="beetle_pce_fast" features="netplay, rewind, autosave, cheevos" />
|
||||
<core name="beetle_pcfx" features="netplay, rewind, autosave, cheevos" />
|
||||
<core name="beetle_saturn" features="netplay, rewind, autosave, cheevos" />
|
||||
<core name="beetle_supafaust" features="netplay, rewind, autosave" />
|
||||
<core name="beetle_supergrafx" features="netplay, rewind, autosave, cheevos" />
|
||||
<core name="beetle_vb" features="netplay, rewind, autosave, cheevos" />
|
||||
|
|
|
@ -1768,6 +1768,7 @@
|
|||
<emulator name="retroarch">
|
||||
<cores>
|
||||
<core>yabasanshiro</core>
|
||||
<core>beetle_saturn</core>
|
||||
</cores>
|
||||
</emulator>
|
||||
</emulators>
|
||||
|
|
|
@ -837,6 +837,25 @@
|
|||
</emulator>
|
||||
</emulators>
|
||||
</system>
|
||||
<system>
|
||||
<fullname>Nintendo Switch</fullname>
|
||||
<name>switch</name>
|
||||
<manufacturer>Nintendo</manufacturer>
|
||||
<release>2017</release>
|
||||
<hardware>console</hardware>
|
||||
<path>/storage/roms/switch</path>
|
||||
<extension>.xci .XCI .nsp .NSP .nca .NCA .nso .NSO .nro .NRO</extension>
|
||||
<command>/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers="%CONTROLLERSCONFIG%"</command>
|
||||
<platform>switch</platform>
|
||||
<theme>switch</theme>
|
||||
<emulators>
|
||||
<emulator name="yuzu">
|
||||
<cores>
|
||||
<core default="true">yuzu</core>
|
||||
</cores>
|
||||
</emulator>
|
||||
</emulators>
|
||||
</system>
|
||||
<system>
|
||||
<name>gamegear</name>
|
||||
<fullname>Game Gear</fullname>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# Copyright (C) 2020-present Fewtarius
|
||||
|
||||
PKG_NAME="emulationstation"
|
||||
PKG_VERSION="e96c1e8"
|
||||
PKG_VERSION="6738e21"
|
||||
PKG_GIT_CLONE_BRANCH="main"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
|
|
|
@ -6,6 +6,6 @@ PKG_VERSION=""
|
|||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.alsa-project.org/"
|
||||
PKG_URL=""
|
||||
PKG_DEPENDS_TARGET="toolchain alsa-lib alsa-utils"
|
||||
PKG_DEPENDS_TARGET="toolchain alsa-lib alsa-utils bluez-alsa"
|
||||
PKG_SECTION="virtual"
|
||||
PKG_LONGDESC="Matapackage to install all alsa components."
|
||||
PKG_LONGDESC="Metapackage to install all alsa components."
|
||||
|
|
|
@ -38,12 +38,12 @@ case "${DEVICE}" in
|
|||
PKG_DEPENDS_TARGET+=" common-shaders glsl-shaders"
|
||||
;;
|
||||
RG552)
|
||||
PKG_DEPENDS_TARGET+=" duckstationsa dolphinsa dolphin slang-shaders"
|
||||
PKG_DEPENDS_TARGET+=" duckstationsa dolphinsa dolphin slang-shaders beetle-saturn"
|
||||
;;
|
||||
RG503|RG353P)
|
||||
PKG_DEPENDS_TARGET+=" duckstationsa common-shaders glsl-shaders"
|
||||
;;
|
||||
handheld)
|
||||
PKG_DEPENDS_TARGET+=" duckstationsa dolphinsa dolphin pcsx2sa pcsx2 desmume bsnes citra slang-shaders"
|
||||
PKG_DEPENDS_TARGET+=" duckstationsa dolphinsa dolphin pcsx2sa pcsx2 desmume bsnes citra slang-shaders minivmac minivmacsa"
|
||||
;;
|
||||
esac
|
||||
|
|
|
@ -2443,9 +2443,9 @@ CONFIG_MT7663_USB_SDIO_COMMON=m
|
|||
CONFIG_MT7663U=m
|
||||
# CONFIG_MT7663S is not set
|
||||
CONFIG_MT7915E=m
|
||||
# CONFIG_MT7921E is not set
|
||||
# CONFIG_MT7921S is not set
|
||||
# CONFIG_MT7921U is not set
|
||||
CONFIG_MT7921E=m
|
||||
CONFIG_MT7921S=m
|
||||
CONFIG_MT7921U=m
|
||||
CONFIG_WLAN_VENDOR_MICROCHIP=y
|
||||
# CONFIG_WILC1000_SDIO is not set
|
||||
# CONFIG_WLAN_VENDOR_PURELIFI is not set
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
# Copyright (C) 2021-present Fewtarius
|
||||
|
||||
PKG_RKBIN="$(get_build_dir rkbin)"
|
||||
PKG_UBOOT="$(get_build_dir u-boot)"
|
||||
source ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/options
|
||||
|
||||
if [ -n "${PKG_DATAFILE}" -a -n "${PKG_LOADER}" ]; then
|
||||
|
@ -31,7 +32,7 @@ case "${PKG_SOC}" in
|
|||
;;
|
||||
*)
|
||||
echo "uboot: build loader image uboot.img at ${PKG_LOAD_ADDR}..."
|
||||
${PKG_RKBIN}/tools/loaderimage --pack --uboot u-boot-dtb.bin uboot.img ${PKG_LOAD_ADDR} ||:
|
||||
${PKG_UBOOT}/tools/loaderimage --pack --uboot u-boot-dtb.bin uboot.img ${PKG_LOAD_ADDR} ||:
|
||||
cp -av uboot.img ${INSTALL}/usr/share/bootloader
|
||||
;;
|
||||
esac
|
||||
|
@ -53,7 +54,7 @@ SEC=0
|
|||
PATH=trust.img
|
||||
EOF
|
||||
TROPTS="--verbose"
|
||||
${PKG_RKBIN}/tools/trust_merger ${TROPTS} trust.ini
|
||||
${PKG_UBOOT}/tools/trust_merger ${TROPTS} trust.ini
|
||||
cp -av trust.img ${INSTALL}/usr/share/bootloader
|
||||
fi
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -23,7 +23,7 @@ case ${DEVICE} in
|
|||
;;
|
||||
RG353P|RG503)
|
||||
PKG_URL="${PKG_SITE}/rk356x-uboot.git"
|
||||
PKG_VERSION="dcb37cb"
|
||||
PKG_VERSION="62a0e69"
|
||||
;;
|
||||
esac
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue