Skip to content

Commit

Permalink
JELOS 20220205 - Release
Browse files Browse the repository at this point in the history
  • Loading branch information
fewtarius committed Feb 5, 2022
0 parents commit 29c0cde
Show file tree
Hide file tree
Showing 2,187 changed files with 269,598 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
build.*
sources
release
57 changes: 57 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
* text=auto eol=lf
*.patch -text

# build directorys
/build.*/
/.fakeroot.*
/.ccache-*
/.env

# automatically downloaded source files
/sources/
/.stamps/

# prebuild target binarys to provide
/target/

# mkpkg temp
mkpkg-temp

# options
/.libreelec

# private working directory
/.work/

# dedicated filesystem
/lost+found/

# symlinks...
/sources
/.work

# ccache
/.ccache/

# backup files
*.orig

# vim swap files
*.swp

# crap
.DS_Store
.directory

repo/
repo
local.conf
sx05re-kodi*.log

packages/sx05re/experimental/

release/

.lastbuild

SOURCES
22 changes: 22 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
FROM ubuntu:20.04

RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive \
apt-get install -y \
gcc make git unzip wget \
xz-utils libsdl2-dev libsdl2-mixer-dev libfreeimage-dev libfreetype6-dev libcurl4-openssl-dev \
rapidjson-dev libasound2-dev libgl1-mesa-dev build-essential libboost-all-dev cmake fonts-droid-fallback \
libvlc-dev libvlccore-dev vlc-bin texinfo premake4 golang libssl-dev curl patchelf \
xmlstarlet patchutils gawk gperf xfonts-utils default-jre python xsltproc libjson-perl \
lzop libncurses5-dev device-tree-compiler u-boot-tools rsync p7zip unrar libparse-yapp-perl \
zip binutils-aarch64-linux-gnu dos2unix p7zip-full libvpx-dev bsdmainutils bc meson \
&& apt-get autoremove --purge -y \
&& apt-get clean -y \
&& rm -rf /var/lib/apt/lists/*

RUN adduser --disabled-password --gecos '' docker

RUN mkdir -p /work && chown docker /work

WORKDIR /work
USER docker
121 changes: 121 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
BUILD_DIRS=build.*

all:

system:
./scripts/image

release:
./scripts/image release

image:
./scripts/image mkimage

noobs:
./scripts/image noobs

clean:
rm -rf $(BUILD_DIRS)

distclean:
rm -rf ./.ccache* ./$(BUILD_DIRS)

src-pkg:
tar cvJf sources.tar.xz sources .stamps

world:
DEVICE=RG351P ARCH=arm ./scripts/build_distro
DEVICE=RG351P ARCH=aarch64 ./scripts/build_distro
DEVICE=RG351V ARCH=arm ./scripts/build_distro
DEVICE=RG351V ARCH=aarch64 ./scripts/build_distro
DEVICE=RG351MP ARCH=arm ./scripts/build_distro
DEVICE=RG351MP ARCH=aarch64 ./scripts/build_distro

RG351P:
DEVICE=RG351P ARCH=arm ./scripts/build_distro
DEVICE=RG351P ARCH=aarch64 ./scripts/build_distro

RG351V:
DEVICE=RG351V ARCH=arm ./scripts/build_distro
DEVICE=RG351V ARCH=aarch64 ./scripts/build_distro

RG351MP:
DEVICE=RG351MP ARCH=arm ./scripts/build_distro
DEVICE=RG351MP ARCH=aarch64 ./scripts/build_distro

RG552:
DEVICE=RG552 ARCH=arm ./scripts/build_distro
DEVICE=RG552 ARCH=aarch64 ./scripts/build_distro

update:
DEVICE=RG351P ARCH=aarch64 ./scripts/update_packages

package:
./scripts/build ${PACKAGE}

package-clean:
./scripts/clean ${PACKAGE}

## Docker builds - overview
# docker-* commands just wire up docker to call the normal make command via docker
# For example: make docker-RG351V will use docker to call: make RG351V
# All variables are scoped to docker-* commands to prevent weird collisions/behavior with non-docker commands

docker-%: DOCKER_IMAGE := "jelos/jelos-build:latest"

# DOCKER_WORK_DIR is the directory in the Docker image - it used to be /work
# Anytime this directory changes, you must run `make clean` similarly to moving the 351ELEC directory
docker-%: DOCKER_WORK_DIR := $(shell if [ -n "${DOCKER_WORK_DIR}" ]; then echo ${DOCKER_WORK_DIR}; else echo $$(pwd); fi)

# DEVELOPER_SETTINGS is a file containing developer speicific settings. This will be mounted into the container if it exists
docker-%: DEVELOPER_SETTINGS := $(shell if [ -f "${HOME}/developer_settings.conf" ]; then echo "-v \"${HOME}/developer_settings.conf:${HOME}/developer_settings.conf\""; else echo ""; fi)

# UID is the user ID of current user - ensures docker sets file permissions properly
docker-%: UID := $(shell id -u)

# GID is the main user group of current user - ensures docker sets file permissions properly
docker-%: GID := $(shell id -g)

# PWD is 'present working directory' and passes through the full path to current dir to docker (becomes 'work')
docker-%: PWD := $(shell pwd)

# Command to use (either `docker` or `podman`)
docker-%: DOCKER_CMD:= $(shell if which docker 2>/dev/null 1>/dev/null; then echo "docker"; elif which podman 2>/dev/null 1>/dev/null; then echo "podman"; fi)

# Podman requires some extra args (`--userns=keep-id` and `--security-opt=label=disable`). Set those args if using podman
docker-%: PODMAN_ARGS:= $(shell if ! which docker 2>/dev/null 1>/dev/null && which podman 2> /dev/null 1> /dev/null; then echo "--userns=keep-id --security-opt=label=disable -v /proc/mounts:/etc/mtab"; fi)

# Use 'sudo' if docker ps doesn't work. In theory, other things than missing sudo could cause this. But sudo needed is a common issue and easy to fix.
docker-%: SUDO := $(shell if which docker 2> /dev/null 1> /dev/null && ! docker ps -q 2> /dev/null 1> /dev/null ; then echo "sudo"; fi)

# Launch docker as interactive if this is an interactive shell (allows ctrl-c for manual and running non-interactive - aka: build server)
docker-%: INTERACTIVE=$(shell [ -t 0 ] && echo "-it")

# By default pass through anything after `docker-` back into `make`
docker-%: COMMAND=make $*

# Get .env file ready
docker-%: $(shell env | grep "=" > .env)

# If the user issues a `make docker-shell` just start up bash as the shell to run commands
docker-shell: COMMAND=bash

# Command: builds docker image locally from Dockerfile
docker-image-build:
$(SUDO) $(DOCKER_CMD) build . -t $(DOCKER_IMAGE)

# Command: pulls latest docker image from dockerhub. This will *replace* locally built version.
docker-image-pull:
$(SUDO) $(DOCKER_CMD) pull $(DOCKER_IMAGE)

# Command: pushes the latest Docker image to dockerhub. This is *not* needed to build. It updates the latest build image in dockerhub for everyone.
# Only 351elec admins in dockerhub can do this.
#
# You must login with: docker login --username <username> and provide either a password or token (from user settings -> security in dockerhub) before this will work.
docker-image-push:
$(SUDO) $(DOCKER_CMD) push $(DOCKER_IMAGE)

# Wire up docker to call equivalent make files using % to match and $* to pass the value matched by %
docker-%:
$(SUDO) $(DOCKER_CMD) run $(PODMAN_ARGS) $(INTERACTIVE) --init --env-file .env --rm --user $(UID):$(GID) $(DEVELOPER_SETTINGS) -v $(PWD):$(DOCKER_WORK_DIR) -w $(DOCKER_WORK_DIR) $(DOCKER_IMAGE) $(COMMAND)

61 changes: 61 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# JELOS - Just enough Linux Operating System
Just Enough Linux Operating System (JELOS) is a simple Linux distribution for ARM based devices that specializes in handhelds. My goal is to build an operating system that has the features and capabilities that I need, and to have fun building it.

## Features
* A 64bit Operating System.
* Support for FAT32, ExFAT, and EXT4 file systems.
* Filesystem compatibility with Android

## 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.

### JELOS Branding
JELOS branding and images are licensed under a [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-nc-sa/4.0/).

#### You are free to
* Share — copy and redistribute the material in any medium or format
* Adapt — remix, transform, and build upon the material

#### Under the following terms
* Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
* NonCommercial — You may not use the material for commercial purposes.
* ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.

### JELOS Software
Copyright 2021-present Fewtarius

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
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.

## Installation
* 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.

## Upgrading JELOS
* Download the latest [version of JELOS](https://github.com/JustEnoughLinuxOS/distribution/releases) (.tar or .img.gz) for your device.
* Copy the update to your device over the network or to the sdcard's update folder.
* Reboot the device, and the update will begin automatically.

## Network Access
* The username for ssh and samba access is "root". The default password is generated on boot. It can be found in the Network Settings menu.

## Frequently Asked Questions
* Does JELOS offer any support?
* No. JELOS is something that I develop for fun, it is provided as-is. If you require a distribution with support, I recommend you choose a community supported distribution instead.
* Do you plan to add additional ports, software, or emulators?
* I add things to JELOS as I have an itch to scratch. The community has updated PortMaster to work with JELOS.
* What about N64, Dreamcast, Saturn, Jaguar, PSP, etc on the 552?
* Those platforms perform best in Android on the 552, and I have no interest in them. I recommend that you use Android instead for those.
* Will you support my device?
* If you send me a device and source code, I'll consider it.

Empty file added config/addon/dummy.xml
Empty file.
34 changes: 34 additions & 0 deletions config/addon/xbmc.broken.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="@PKG_ADDON_ID@"
name="@ADDON_NAME@"
version="@ADDON_VERSION@"
provider-name="@PROVIDER_NAME@">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
@REQUIRES@
</requires>
<extension point="xbmc.service" library="default.py">
<provides>@PKG_ADDON_PROVIDES@</provides>
</extension>
<extension point="xbmc.addon.metadata">
<summary>@PKG_SHORTDESC@</summary>
<description>
@PKG_LONGDESC@
</description>
<disclaimer>
@PKG_DISCLAIMER@
</disclaimer>
<broken>
@PKG_ADDON_BROKEN@
</broken>
<platform>all</platform>
<news>
@PKG_ADDON_NEWS@
</news>
<assets>
<icon>resources/icon.png</icon>
<fanart>resources/fanart.png</fanart>
@PKG_ADDON_SCREENSHOT@
</assets>
</extension>
</addon>
31 changes: 31 additions & 0 deletions config/addon/xbmc.python.module.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="@PKG_ADDON_ID@"
name="@ADDON_NAME@"
version="@ADDON_VERSION@"
provider-name="@PROVIDER_NAME@">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
@REQUIRES@
</requires>
<extension point="xbmc.python.script" library="default.py" />
<extension point="xbmc.python.module" library="lib/">
</extension>
<extension point="xbmc.addon.metadata">
<summary>@PKG_SHORTDESC@</summary>
<description>
@PKG_LONGDESC@
</description>
<disclaimer>
@PKG_DISCLAIMER@
</disclaimer>
<platform>all</platform>
<news>
@PKG_ADDON_NEWS@
</news>
<assets>
<icon>resources/icon.png</icon>
<fanart>resources/fanart.png</fanart>
@PKG_ADDON_SCREENSHOT@
</assets>
</extension>
</addon>
31 changes: 31 additions & 0 deletions config/addon/xbmc.python.script.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="@PKG_ADDON_ID@"
name="@ADDON_NAME@"
version="@ADDON_VERSION@"
provider-name="@PROVIDER_NAME@">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
@REQUIRES@
</requires>
<extension point="xbmc.python.script" library="default.py">
<provides>@PKG_ADDON_PROVIDES@</provides>
</extension>
<extension point="xbmc.addon.metadata">
<summary>@PKG_SHORTDESC@</summary>
<description>
@PKG_LONGDESC@
</description>
<disclaimer>
@PKG_DISCLAIMER@
</disclaimer>
<platform>all</platform>
<news>
@PKG_ADDON_NEWS@
</news>
<assets>
<icon>resources/icon.png</icon>
<fanart>resources/fanart.png</fanart>
@PKG_ADDON_SCREENSHOT@
</assets>
</extension>
</addon>
Loading

0 comments on commit 29c0cde

Please sign in to comment.