Compare commits

..

1 Commits

Author SHA1 Message Date
Ribbon 5203db8829 Change the x86_64 target to single-core on QEMU 2024-02-10 09:10:47 +00:00
15 changed files with 54 additions and 128 deletions

View File

@ -15,7 +15,7 @@ before_script:
build-essential \
curl \
flex \
fuse3 \
fuse \
git \
libfuse-dev \
nasm \

View File

@ -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

View File

@ -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"

View File

@ -9,7 +9,6 @@
prompt = false
[packages]
bootloader = {}
bootstrap = {}
escalated = {}
initfs = {}

View File

@ -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
"""

View File

@ -10,6 +10,7 @@ filesystem_size = 512
# Package settings
[packages]
bash = {}
bootloader = {}
ca-certificates = {}
contain = {}
coreutils = {}

View File

@ -33,7 +33,6 @@ filesystem_size = 1536
[packages]
# GUI Apps
cosmic-edit = {}
cosmic-files = {}
periodictable = {}
# GUI Data

View File

@ -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 = {}

@ -1 +1 @@
Subproject commit d0378b5c485ef7943e744ebeda4ecc453c7cd7b7
Subproject commit ac090c745dadbd25c9abd70b6b0feef45ff5fe50

@ -1 +1 @@
Subproject commit 1c30f4a3c1f55974aed694b478ff77c0552a1576
Subproject commit 17219dab9f58e2bf2c243f745fecce2d8730f82f

View File

@ -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

View File

@ -12,7 +12,7 @@ RUN apt-get update \
curl \
file \
flex \
fuse3 \
fuse \
genisoimage \
git \
gperf \

@ -1 +1 @@
Subproject commit 14a07dc268ec41db87d4f453022ac8805b918d20
Subproject commit b3dd3aa5f0e1b3e56f4d3f06e45966fd53743367

2
relibc

@ -1 +1 @@
Subproject commit 65589f9c935a7eaaa2d1d8db4875fbb458b29edd
Subproject commit a7b2294b6200aa6a1971d1ac59c5dc33babbd9d6

View File

@ -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