Compare commits

...
This repository has been archived on 2024-03-14. You can view files and clone it, but cannot push or open issues or pull requests.

28 Commits

Author SHA1 Message Date
Jeremy Soller f1f98b4378
Merge branch 'master' of https://gitlab.redox-os.org/redox-os/redox 2024-03-13 08:51:12 -06:00
Jeremy Soller 55991001ff
Update submodules 2024-03-13 08:51:07 -06:00
Jeremy Soller 30e701d357
Update cookbook 2024-03-08 14:13:27 -07:00
Jeremy Soller d29b44a473
Update relibc 2024-03-04 15:50:19 -07:00
Jeremy Soller 026a0ba855
Update cookbook 2024-03-04 15:48:47 -07:00
Jeremy Soller 7fc6893d22 Merge branch 'pkg-size' into 'master'
Add pkg-size script

See merge request redox-os/redox!1430
2024-03-03 20:02:52 +00:00
Ron Williams 06c0fe8e32 Add pkg-size script 2024-03-03 02:31:37 -08:00
Jeremy Soller 554a854c7d
Update cookbook, redoxfs, and relibc 2024-03-01 08:03:28 -07:00
Jeremy Soller 047035c5d1
Update cookbook and relibc 2024-02-28 10:44:44 -07:00
Jeremy Soller 9e0aabe157 Merge branch 'remove_mac_cfg_file' into 'master'
Remove /etc/net/mac

See merge request redox-os/redox!1429
2024-02-28 12:59:53 +00:00
bjorn3 477580b936 Remove /etc/net/mac
The mac address is now always fetched directly from the network card
2024-02-28 09:40:46 +01:00
Jeremy Soller 4cf64316b9 Add cosmic-files to demo 2024-02-15 17:36:23 -07:00
Jeremy Soller c1df502cae
Add boxedwine and nushell to Jeremy config 2024-02-15 16:10:13 -07:00
Jeremy Soller bd6d5538bd
Update submodules 2024-02-15 16:08:23 -07:00
Jeremy Soller e56e39cd0a
Update relibc 2024-02-12 15:09:50 -07:00
Jeremy Soller 2a8eb92c08 Merge branch 'update-goal' into 'master'
Update goals and improve the guide

See merge request redox-os/redox!1428
2024-02-12 20:07:06 +00:00
Ribbon 580869cdf4 Update goals and improve the guide 2024-02-12 16:47:27 +00:00
Jeremy Soller 1fd8fee0e5 Merge branch 'add-zstd' into 'master'
Add zstd to the bootstrap script

See merge request redox-os/redox!1427
2024-02-11 13:26:53 +00:00
Jeremy Soller 7cef4fe6a3 Update cookbook 2024-02-10 18:55:13 -07:00
mattmadeofpasta a54af76a08
Add zstd 2024-02-10 21:42:42 +00:00
Jeremy Soller 49f13e7b4d
Merge branch 'master' of https://gitlab.redox-os.org/redox-os/redox 2024-02-10 14:28:37 -07:00
Jeremy Soller cdf31043e7
Update relibc 2024-02-10 14:28:32 -07:00
Jeremy Soller 1f93e814a9 Merge branch 'non-interactive-bootstrap' into 'master'
Bootstrap non-interactively

See merge request redox-os/redox!1424
2024-02-10 21:01:55 +00:00
Jeremy Soller 659dbb4a99 Merge branch 'master' of https://gitlab.redox-os.org/redox-os/redox 2024-02-10 10:40:02 -07:00
Jeremy Soller e3221aa0a8 Move bootloader to base template 2024-02-10 10:39:56 -07:00
Jeremy Soller be4db6b213 Merge branch 'fuse3-everywhere' into 'master'
Use `fusermount3` everywhere

See merge request redox-os/redox!1426
2024-02-10 15:01:28 +00:00
mattmadeofpasta 3f58996f32
Use fusermount3 everywhere 2024-02-10 13:19:27 +00:00
mattmadeofpasta 1575ef70b8
Bootstrap non-interactively 2024-02-10 09:59:39 +00:00
14 changed files with 127 additions and 53 deletions

View File

@ -15,7 +15,7 @@ before_script:
build-essential \
curl \
flex \
fuse \
fuse3 \
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.
## Suggestions for Contributions
## Important Places to Contribute
(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,46 +29,49 @@ 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)
- [Book](https://gitlab.redox-os.org/redox-os/book) - High-level documentation
- [Build System Configuration](https://gitlab.redox-os.org/redox-os/redox) - Our main repository
- [Cookbook](https://gitlab.redox-os.org/redox-os/cookbook) - Package system
- [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)
- [relibc](https://gitlab.redox-os.org/redox-os/relibc) - Redox C Library
- [Drivers](https://gitlab.redox-os.org/redox-os/drivers)
- [Drivers](https://gitlab.redox-os.org/redox-os/drivers) - Device daemons
- [Kernel](https://gitlab.redox-os.org/redox-os/kernel)
### Places to Contribute
### Skill Levels
If you aren't fluent in Rust:
- Write documentation
- 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)
- 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)
- 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)
- [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)
- Improve the program compatibility in relibc
- Improve the package manager
- Improve the [Ion](https://gitlab.redox-os.org/redox-os/ion) shell
If you are fluent in Rust, and have experience with operating system development:
- Familiarize yourself with the repository and codebase
- Familiarize yourself with the repository and code
- Grep for `TODO`, `FIXME`, `BUG`, `UNOPTIMIZED`, `REWRITEME`, `DOCME`, and `PRETTYFYME` and fix the code you find
- Update older code to remove warnings
- Update old code to remove warnings
- Improve and optimize code, especially in the kernel
- Write drivers
- Write device drivers
For those who want to contribute to the Redox GUI, our GUI strategy has recently changed.
- 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.
- 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.
- 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 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.
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.
## Build System

View File

@ -297,9 +297,17 @@ 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 \
@ -360,20 +368,34 @@ archLinux()
#sudo pacman -Syu
echo "Installing packages $packages..."
sudo pacman -S --needed $packages
sudo $pacman_install $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 the package manager to use
# $2 install non-interactively, boolean
# $3 the package manager to use
###############################################################################
ubuntu()
{
noninteractive=$2
package_manager=$3
echo "Detected Ubuntu/Debian"
echo "Updating system..."
sudo "$2" update
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
echo "Installing required packages..."
pkgs="\
ant \
@ -389,6 +411,7 @@ ubuntu()
doxygen \
file \
flex \
fuse3 \
g++ \
genisoimage \
git \
@ -426,17 +449,18 @@ 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 "$2" install $pkgs
sudo $install_command $pkgs
if [ "$1" == "qemu" ]; then
if [ -z "$(which qemu-system-x86_64)" ]; then
echo "Installing QEMU..."
sudo "$2" install qemu-system-x86 qemu-kvm
sudo "$2" install qemu-efi-arm qemu-system-arm
sudo $install_command qemu-system-x86 qemu-kvm
sudo $install_command qemu-efi-arm qemu-system-arm
else
echo "QEMU already installed!"
fi
@ -451,7 +475,7 @@ ubuntu()
exit 1
else
echo "Installing VirtualBox..."
sudo "$2" install virtualbox
sudo $install_command virtualbox
fi
else
echo "VirtualBox already installed!"
@ -466,19 +490,27 @@ 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
@ -548,19 +580,19 @@ fedora()
clang \
doxygen \
ant \
protobuf-compiler ; do rpm -q $pkg > /dev/null || echo $pkg; done)
protobuf-compiler \
zstd ; 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()
{
@ -817,6 +849,10 @@ 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"
@ -839,8 +875,10 @@ 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
@ -858,15 +896,21 @@ 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
if echo "$rustup" | grep -iq "^y" ;then
#install rustup
curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain nightly
curl https://sh.rustup.rs -sSf | sh -s -- $rustup_options
# 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
@ -966,7 +1010,9 @@ emulator="qemu"
defpackman="apt-get"
dependenciesonly=false
update=false
while getopts ":e:p:udhs" opt
noninteractive=false
while getopts ":e:p:udhys" opt
do
case "$opt" in
e) emulator="$OPTARG";;
@ -974,6 +1020,7 @@ 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
@ -981,7 +1028,7 @@ done
banner
rustInstall
rustInstall "$noninteractive"
if [ "$update" == "true" ]; then
git pull upstream master
@ -1000,10 +1047,10 @@ else
suse "$emulator"
# Debian or any derivative of it
elif hash 2>/dev/null apt-get; then
ubuntu "$emulator" "$defpackman"
ubuntu "$emulator" "$noninteractive" "$defpackman"
# Fedora
elif hash 2>/dev/null dnf; then
fedora "$emulator"
fedora "$emulator" "$noninteractive"
# Gentoo
elif hash 2>/dev/null emerge; then
gentoo "$emulator"
@ -1012,7 +1059,7 @@ else
solus "$emulator"
# Arch Linux
elif hash 2>/dev/null pacman; then
archLinux "$emulator"
archLinux "$emulator" "$noninteractive"
# FreeBSD
elif hash 2>/dev/null pkg; then
freebsd "$emulator"

View File

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

View File

@ -49,9 +49,3 @@ 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,7 +10,6 @@ filesystem_size = 512
# Package settings
[packages]
bash = {}
bootloader = {}
ca-certificates = {}
contain = {}
coreutils = {}

View File

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

View File

@ -10,6 +10,7 @@ filesystem_size = 8192
# Package settings
[packages]
# apps
boxedwine = {}
cosmic-edit = {}
cosmic-files = {}
cosmic-term = {}
@ -26,6 +27,7 @@ ffmpeg6 = {}
gnu-grep = {}
lua54 = {}
nano = {}
nushell = {}
perg = {}
relibc-tests = {}
ripgrep = {}

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

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

View File

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

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

2
relibc

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

27
scripts/pkg-size.sh Executable file
View File

@ -0,0 +1,27 @@
#!/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