Compare commits
1 Commits
master
...
single-cor
Author | SHA1 | Date |
---|---|---|
Ribbon | 5203db8829 |
|
@ -15,7 +15,7 @@ before_script:
|
|||
build-essential \
|
||||
curl \
|
||||
flex \
|
||||
fuse3 \
|
||||
fuse \
|
||||
git \
|
||||
libfuse-dev \
|
||||
nasm \
|
||||
|
|
|
@ -20,7 +20,7 @@ On [this](https://doc.redox-os.org/book/ch01-02-philosophy.html) page we explain
|
|||
|
||||
Join us on [Matrix Chat](https://doc.redox-os.org/book/ch13-01-chat.html) to discuss issues or ask questions.
|
||||
|
||||
## Important Places to Contribute
|
||||
## Suggestions for Contributions
|
||||
|
||||
(Before starting to contribute you **must** read the [FAQ](https://www.redox-os.org/faq/) and the [Redox Book](https://doc.redox-os.org/book/))
|
||||
|
||||
|
@ -29,49 +29,46 @@ You can contribute to the Redox documentation and code on these repositories:
|
|||
(The order is based on difficulty, easy things first)
|
||||
|
||||
- [Website](https://gitlab.redox-os.org/redox-os/website)
|
||||
- [Book](https://gitlab.redox-os.org/redox-os/book) - High-level documentation
|
||||
- [Book](https://gitlab.redox-os.org/redox-os/book)
|
||||
- [Build System Configuration](https://gitlab.redox-os.org/redox-os/redox) - Our main repository
|
||||
- [Cookbook](https://gitlab.redox-os.org/redox-os/cookbook) - Ports system
|
||||
- [Orbital](https://gitlab.redox-os.org/redox-os/orbital) - Display server and window manager
|
||||
- [Package Manager](https://gitlab.redox-os.org/redox-os/pkgutils)
|
||||
- [Cookbook](https://gitlab.redox-os.org/redox-os/cookbook) - Package system
|
||||
- [relibc](https://gitlab.redox-os.org/redox-os/relibc) - Redox C Library
|
||||
- [Drivers](https://gitlab.redox-os.org/redox-os/drivers) - Device daemons
|
||||
- [Drivers](https://gitlab.redox-os.org/redox-os/drivers)
|
||||
- [Kernel](https://gitlab.redox-os.org/redox-os/kernel)
|
||||
|
||||
### Skill Levels
|
||||
### Places to Contribute
|
||||
|
||||
If you aren't fluent in Rust:
|
||||
|
||||
- Write documentation
|
||||
- Use and test Redox, fill issues for bugs or needed features (please verify the repository issues before)
|
||||
- Web development on the website (we don't accept JavaScript code)
|
||||
- Use and test Redox, fill issues for bugs or needed features (verify the repository issues before)
|
||||
- Web development on the [website](https://gitlab.redox-os.org/redox-os/website)
|
||||
- Write unit tests (may require minimal knowledge of Rust)
|
||||
|
||||
If you are fluent in Rust, but not operating system Development:
|
||||
|
||||
- Improve the Orbital display server and window manager.
|
||||
- Port programs written in Rust to Redox (in most cases you need to port crates, be aware of missing functions on relibc, porting without these functions will make patches dirty)
|
||||
- Improve the program compatibility in relibc
|
||||
- Improve the package manager
|
||||
- Improve the [Ion](https://gitlab.redox-os.org/redox-os/ion) shell
|
||||
- [relibc](https://gitlab.redox-os.org/redox-os/relibc) - Redox C Library
|
||||
- The [Ion Shell](https://gitlab.redox-os.org/redox-os/ion)
|
||||
- [Package Manager](https://gitlab.redox-os.org/redox-os/pkgutils)
|
||||
|
||||
If you are fluent in Rust, and have experience with operating system development:
|
||||
|
||||
- Familiarize yourself with the repository and code
|
||||
- Familiarize yourself with the repository and codebase
|
||||
- Grep for `TODO`, `FIXME`, `BUG`, `UNOPTIMIZED`, `REWRITEME`, `DOCME`, and `PRETTYFYME` and fix the code you find
|
||||
- Update old code to remove warnings
|
||||
- Update older code to remove warnings
|
||||
- Improve and optimize code, especially in the kernel
|
||||
- Write device drivers
|
||||
- Write drivers
|
||||
|
||||
For those who want to contribute to the Redox GUI, our GUI strategy has recently changed.
|
||||
|
||||
- We are improving the [Orbital](https://gitlab.redox-os.org/redox-os/orbital) display server and window manager, you can read more about it on [this](https://gitlab.redox-os.org/redox-os/redox/-/issues/1430) tracking issue.
|
||||
- Redox is in the process of adopting other Rust-written GUI toolkits, such as [Iced](https://iced.rs) and [Slint](https://slint-ui.com/). Please check out those projects if this is your area of interest.
|
||||
- We are porting the [COSMIC compositor](https://github.com/pop-os/cosmic-comp), help wanted.
|
||||
- Redox is in the process of adopting other Rust-lang GUIs such as [Iced](https://iced.rs) and [Slint](https://slint-ui.com/). Please check out those projects if this is your area of interest.
|
||||
- OrbTk is in maintenance mode, and its developers have moved to other projects such as the ones below. There is currently no Redox-specific GUI development underway.
|
||||
|
||||
## Tracking Issues Index
|
||||
|
||||
We use an index to track the development priorities, you can find them on [this](https://gitlab.redox-os.org/redox-os/redox/-/issues/1384) page.
|
||||
We use the Tracking Issues Index to ease the development workflow, you can find them on [this](https://gitlab.redox-os.org/redox-os/redox/-/issues/1384) page.
|
||||
|
||||
## Build System
|
||||
|
||||
|
|
95
bootstrap.sh
95
bootstrap.sh
|
@ -297,17 +297,9 @@ freebsd()
|
|||
# This function takes care of installing all dependencies for building Redox on
|
||||
# Arch Linux
|
||||
# @params: $1 the emulator to install, "virtualbox" or "qemu"
|
||||
# $2 install non-interactively, boolean
|
||||
###############################################################################
|
||||
archLinux()
|
||||
{
|
||||
noninteractive=$2
|
||||
|
||||
pacman_install="pacman -S --needed"
|
||||
if [ "$noninteractive" = true ]; then
|
||||
pacman_install+=" --noconfirm"
|
||||
fi
|
||||
|
||||
echo "Detected Arch Linux"
|
||||
packages="cmake \
|
||||
fuse \
|
||||
|
@ -368,34 +360,20 @@ archLinux()
|
|||
#sudo pacman -Syu
|
||||
|
||||
echo "Installing packages $packages..."
|
||||
sudo $pacman_install $packages
|
||||
sudo pacman -S --needed $packages
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# This function takes care of installing all dependencies for building Redox on
|
||||
# Debian-based Linux
|
||||
# @params: $1 the emulator to install, "virtualbox" or "qemu"
|
||||
# $2 install non-interactively, boolean
|
||||
# $3 the package manager to use
|
||||
# $2 the package manager to use
|
||||
###############################################################################
|
||||
ubuntu()
|
||||
{
|
||||
noninteractive=$2
|
||||
package_manager=$3
|
||||
echo "Detected Ubuntu/Debian"
|
||||
echo "Updating system..."
|
||||
sudo $package_manager update
|
||||
|
||||
if [ $package_manager == "apt-get" ]; then
|
||||
if [ "$noninteractive" = true ]; then
|
||||
install_command+="DEBIAN_FRONTEND=noninteractive apt-get install --assume-yes --quiet"
|
||||
else
|
||||
install_command="apt-get install"
|
||||
fi
|
||||
else
|
||||
install_command="$package_manager install"
|
||||
fi
|
||||
|
||||
sudo "$2" update
|
||||
echo "Installing required packages..."
|
||||
pkgs="\
|
||||
ant \
|
||||
|
@ -411,7 +389,6 @@ ubuntu()
|
|||
doxygen \
|
||||
file \
|
||||
flex \
|
||||
fuse3 \
|
||||
g++ \
|
||||
genisoimage \
|
||||
git \
|
||||
|
@ -449,18 +426,17 @@ ubuntu()
|
|||
xdg-utils \
|
||||
xxd \
|
||||
zip \
|
||||
zstd \
|
||||
"
|
||||
# Not availible for at least ARM hosts
|
||||
case "$host_arch" in
|
||||
x86*|i?86) pkgs="$pkgs libc6-dev-i386 syslinux-utils";;
|
||||
esac
|
||||
sudo $install_command $pkgs
|
||||
sudo "$2" install $pkgs
|
||||
if [ "$1" == "qemu" ]; then
|
||||
if [ -z "$(which qemu-system-x86_64)" ]; then
|
||||
echo "Installing QEMU..."
|
||||
sudo $install_command qemu-system-x86 qemu-kvm
|
||||
sudo $install_command qemu-efi-arm qemu-system-arm
|
||||
sudo "$2" install qemu-system-x86 qemu-kvm
|
||||
sudo "$2" install qemu-efi-arm qemu-system-arm
|
||||
else
|
||||
echo "QEMU already installed!"
|
||||
fi
|
||||
|
@ -472,10 +448,10 @@ ubuntu()
|
|||
echo "To install virtualbox on debian, see https://wiki.debian.org/VirtualBox"
|
||||
echo "Please install VirtualBox and re-run this script,"
|
||||
echo "or run with -e qemu"
|
||||
exit 1
|
||||
exit 1
|
||||
else
|
||||
echo "Installing VirtualBox..."
|
||||
sudo $install_command virtualbox
|
||||
sudo "$2" install virtualbox
|
||||
fi
|
||||
else
|
||||
echo "VirtualBox already installed!"
|
||||
|
@ -490,27 +466,19 @@ ubuntu()
|
|||
# This function takes care of installing all dependencies for building Redox on
|
||||
# Fedora Linux
|
||||
# @params: $1 the emulator to install, "virtualbox" or "qemu"
|
||||
# $2 install non-interactively, boolean
|
||||
###############################################################################
|
||||
fedora()
|
||||
{
|
||||
noninteractive=$2
|
||||
|
||||
dnf_install="dnf install"
|
||||
if [ "$noninteractive" = true ]; then
|
||||
dnf_install+=" --assumeyes --quiet"
|
||||
fi
|
||||
|
||||
echo "Detected Fedora"
|
||||
if [ -z "$(which git)" ]; then
|
||||
echo "Installing git..."
|
||||
sudo $dnf_install git-all
|
||||
sudo dnf install git-all
|
||||
fi
|
||||
|
||||
if [ "$1" == "qemu" ]; then
|
||||
if [ -z "$(which qemu-system-x86_64)" ]; then
|
||||
echo "Installing QEMU..."
|
||||
sudo $dnf_install qemu-system-x86 qemu-kvm
|
||||
sudo dnf install qemu-system-x86 qemu-kvm
|
||||
else
|
||||
echo "QEMU already installed!"
|
||||
fi
|
||||
|
@ -580,19 +548,19 @@ fedora()
|
|||
clang \
|
||||
doxygen \
|
||||
ant \
|
||||
protobuf-compiler \
|
||||
zstd ; do rpm -q $pkg > /dev/null || echo $pkg; done)
|
||||
protobuf-compiler ; do rpm -q $pkg > /dev/null || echo $pkg; done)
|
||||
# If the list of packages is not empty, install missing
|
||||
COUNT=$(echo $PKGS | wc -w)
|
||||
if [ $COUNT -ne 0 ]; then
|
||||
echo "Installing necessary build tools..."
|
||||
sudo $dnf_install $PKGS
|
||||
sudo dnf install $PKGS
|
||||
fi
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# This function takes care of installing all dependencies for building Redox on
|
||||
# *SUSE Linux
|
||||
# @params: $1 the emulator to install, "virtualbox" or "qemu"
|
||||
###############################################################################
|
||||
suse()
|
||||
{
|
||||
|
@ -849,10 +817,6 @@ usage()
|
|||
echo " -p [package Choose an Ubuntu package manager, apt-fast or"
|
||||
echo " manager] aptitude"
|
||||
echo " -d Only install the dependencies, skip boot step"
|
||||
echo " -y Install non-interactively. Answer \"yes\" or"
|
||||
echo " select the default option for rustup and package"
|
||||
echo " managers. Only the apt, dnf and pacman"
|
||||
echo " package managers are supported."
|
||||
echo "EXAMPLES:"
|
||||
echo
|
||||
echo "./bootstrap.sh -e qemu"
|
||||
|
@ -875,10 +839,8 @@ cargoInstall() {
|
|||
# This function takes care of everything associated to rust, and the version manager
|
||||
# That controls it, it can install rustup and uninstall multirust as well as making
|
||||
# sure that the correct version of rustc is selected by rustup
|
||||
# @params: $1 install non-interactively, boolean
|
||||
####################################################################################
|
||||
rustInstall() {
|
||||
noninteractive=$1
|
||||
# Check to see if multirust is installed, we don't want it messing with rustup
|
||||
# In the future we can probably remove this but I believe it's good to have for now
|
||||
if [ -e /usr/local/lib/rustlib/uninstall.sh ] ; then
|
||||
|
@ -896,21 +858,15 @@ rustInstall() {
|
|||
fi
|
||||
# If rustup is not installed we should offer to install it for them
|
||||
if [ -z "$(which rustup)" ]; then
|
||||
rustup_options="--default-toolchain nightly"
|
||||
echo "You do not have rustup installed."
|
||||
if [ "$noninteractive" = true ]; then
|
||||
rustup="y"
|
||||
rustup_options+=" -y"
|
||||
else
|
||||
echo "We HIGHLY recommend using rustup."
|
||||
echo "Would you like to install it now?"
|
||||
echo "*WARNING* this involves a 'curl | sh' style command"
|
||||
printf "(y/N): "
|
||||
read rustup
|
||||
fi
|
||||
echo "We HIGHLY recommend using rustup."
|
||||
echo "Would you like to install it now?"
|
||||
echo "*WARNING* this involves a 'curl | sh' style command"
|
||||
printf "(y/N): "
|
||||
read rustup
|
||||
if echo "$rustup" | grep -iq "^y" ;then
|
||||
#install rustup
|
||||
curl https://sh.rustup.rs -sSf | sh -s -- $rustup_options
|
||||
curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain nightly
|
||||
# You have to add the rustup variables to the $PATH
|
||||
echo "export PATH=\"\$HOME/.cargo/bin:\$PATH\"" >> ~/.bashrc
|
||||
# source the variables so that we can execute rustup commands in the current shell
|
||||
|
@ -1010,9 +966,7 @@ emulator="qemu"
|
|||
defpackman="apt-get"
|
||||
dependenciesonly=false
|
||||
update=false
|
||||
noninteractive=false
|
||||
|
||||
while getopts ":e:p:udhys" opt
|
||||
while getopts ":e:p:udhs" opt
|
||||
do
|
||||
case "$opt" in
|
||||
e) emulator="$OPTARG";;
|
||||
|
@ -1020,7 +974,6 @@ do
|
|||
d) dependenciesonly=true;;
|
||||
u) update=true;;
|
||||
h) usage;;
|
||||
y) noninteractive=true;;
|
||||
s) statusCheck && exit;;
|
||||
\?) echo "I don't know what to do with that option, try -h for help"; exit 1;;
|
||||
esac
|
||||
|
@ -1028,7 +981,7 @@ done
|
|||
|
||||
banner
|
||||
|
||||
rustInstall "$noninteractive"
|
||||
rustInstall
|
||||
|
||||
if [ "$update" == "true" ]; then
|
||||
git pull upstream master
|
||||
|
@ -1047,10 +1000,10 @@ else
|
|||
suse "$emulator"
|
||||
# Debian or any derivative of it
|
||||
elif hash 2>/dev/null apt-get; then
|
||||
ubuntu "$emulator" "$noninteractive" "$defpackman"
|
||||
ubuntu "$emulator" "$defpackman"
|
||||
# Fedora
|
||||
elif hash 2>/dev/null dnf; then
|
||||
fedora "$emulator" "$noninteractive"
|
||||
fedora "$emulator"
|
||||
# Gentoo
|
||||
elif hash 2>/dev/null emerge; then
|
||||
gentoo "$emulator"
|
||||
|
@ -1059,7 +1012,7 @@ else
|
|||
solus "$emulator"
|
||||
# Arch Linux
|
||||
elif hash 2>/dev/null pacman; then
|
||||
archLinux "$emulator" "$noninteractive"
|
||||
archLinux "$emulator"
|
||||
# FreeBSD
|
||||
elif hash 2>/dev/null pkg; then
|
||||
freebsd "$emulator"
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
prompt = false
|
||||
|
||||
[packages]
|
||||
bootloader = {}
|
||||
bootstrap = {}
|
||||
escalated = {}
|
||||
initfs = {}
|
||||
|
|
|
@ -49,3 +49,9 @@ path = "/etc/net/ip_subnet"
|
|||
data = """
|
||||
255.255.255.0
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/etc/net/mac"
|
||||
data = """
|
||||
54-52-00-ab-cd-ef
|
||||
"""
|
||||
|
|
|
@ -10,6 +10,7 @@ filesystem_size = 512
|
|||
# Package settings
|
||||
[packages]
|
||||
bash = {}
|
||||
bootloader = {}
|
||||
ca-certificates = {}
|
||||
contain = {}
|
||||
coreutils = {}
|
||||
|
|
|
@ -33,7 +33,6 @@ filesystem_size = 1536
|
|||
[packages]
|
||||
# GUI Apps
|
||||
cosmic-edit = {}
|
||||
cosmic-files = {}
|
||||
periodictable = {}
|
||||
|
||||
# GUI Data
|
||||
|
|
|
@ -10,7 +10,6 @@ filesystem_size = 8192
|
|||
# Package settings
|
||||
[packages]
|
||||
# apps
|
||||
boxedwine = {}
|
||||
cosmic-edit = {}
|
||||
cosmic-files = {}
|
||||
cosmic-term = {}
|
||||
|
@ -27,7 +26,6 @@ ffmpeg6 = {}
|
|||
gnu-grep = {}
|
||||
lua54 = {}
|
||||
nano = {}
|
||||
nushell = {}
|
||||
perg = {}
|
||||
relibc-tests = {}
|
||||
ripgrep = {}
|
||||
|
|
2
cookbook
2
cookbook
|
@ -1 +1 @@
|
|||
Subproject commit d0378b5c485ef7943e744ebeda4ecc453c7cd7b7
|
||||
Subproject commit ac090c745dadbd25c9abd70b6b0feef45ff5fe50
|
|
@ -1 +1 @@
|
|||
Subproject commit 1c30f4a3c1f55974aed694b478ff77c0552a1576
|
||||
Subproject commit 17219dab9f58e2bf2c243f745fecce2d8730f82f
|
|
@ -18,7 +18,7 @@ else ifeq ($(ARCH),x86_64)
|
|||
QEMU_MACHINE?=q35
|
||||
QEMU_CPU?=core2duo
|
||||
QEMU_EFI=/usr/share/OVMF/OVMF_CODE.fd
|
||||
QEMUFLAGS+=-smp 4 -m 2048
|
||||
QEMUFLAGS+=-smp 1 -m 2048
|
||||
else ifeq ($(ARCH),aarch64)
|
||||
efi=yes
|
||||
live=yes
|
||||
|
|
|
@ -12,7 +12,7 @@ RUN apt-get update \
|
|||
curl \
|
||||
file \
|
||||
flex \
|
||||
fuse3 \
|
||||
fuse \
|
||||
genisoimage \
|
||||
git \
|
||||
gperf \
|
||||
|
|
2
redoxfs
2
redoxfs
|
@ -1 +1 @@
|
|||
Subproject commit 14a07dc268ec41db87d4f453022ac8805b918d20
|
||||
Subproject commit b3dd3aa5f0e1b3e56f4d3f06e45966fd53743367
|
2
relibc
2
relibc
|
@ -1 +1 @@
|
|||
Subproject commit 65589f9c935a7eaaa2d1d8db4875fbb458b29edd
|
||||
Subproject commit a7b2294b6200aa6a1971d1ac59c5dc33babbd9d6
|
|
@ -1,27 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
if [ $# = 0 ]
|
||||
then
|
||||
find cookbook/recipes \( -name stage.pkgar -o -name stage.tar.gz \) -exec ls -hs {} \;
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for recipe in $@
|
||||
do
|
||||
if [ "$recipe" = "-h" ] || [ "$recipe" = "--help" ]
|
||||
then
|
||||
echo "Usage: $0 [recipe] ..."
|
||||
echo " For the recipe(s), prints the size of 'stage.pkgar' and 'stage.tar.gz'."
|
||||
echo " If no recipe is given, then all packages are listed."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
recipe_paths=$(find cookbook/recipes -name $recipe)
|
||||
for recipe_path in $recipe_paths
|
||||
do
|
||||
if [ -f "$recipe_path/recipe.toml" ] || [ -f "$recipe_path/recipe.sh" ]
|
||||
then
|
||||
find "$recipe_path" \( -name stage.pkgar -o -name stage.tar.gz \) -exec ls -hs {} \;
|
||||
fi
|
||||
done
|
||||
done
|
Reference in New Issue