diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e34370b6a..427fd5123 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -81,12 +81,14 @@ Once your GitLab account is created, you should add your Matrix or Discord usern ### Issues -To know how to create issues on the Redox GitLab, read the [Filing Issues](https://doc.redox-os.org/book/filing-issues.html) page. +We use issues to organize and track our current and pending work, to know how to create issues on the Redox GitLab read the [Filing Issues](https://doc.redox-os.org/book/filing-issues.html) page. Once you create an issue don't forget to post the link on the Dev or Support rooms of the chat, because the GitLab email notifications have distractions (service messages or spam) and most developers don't left their GitLab pages open to receive desktop notifications from the web browser (which require a custom setting to receive issue notifications). By doing this you help us to pay attention to your issues and avoid them to be accidentally forgotten. +You can see all issues on [this](https://gitlab.redox-os.org/groups/redox-os/-/issues) link. + ### Pull Requests Please follow [our process](https://doc.redox-os.org/book/creating-proper-pull-requests.html) for creating proper pull requests. @@ -135,7 +137,9 @@ If you don't know how to code in Rust, but know other programming languages: If you know how to code in Rust, but don't know operating system development: -- Look for issues labeled "good first issue", "easy", and/or "help wanted", e.g. [this GitLab filter](https://gitlab.redox-os.org/groups/redox-os/-/issues/?sort=updated_desc&state=opened&or%5Blabel_name%5D%5B%5D=good%20first%20issue&or%5Blabel_name%5D%5B%5D=Easy&or%5Blabel_name%5D%5B%5D=easy&or%5Blabel_name%5D%5B%5D=help%20wanted&first_page_size=20]). Worth noting the skill level varies between projects, but a large subset of these should be approachable by contributors familiar with regular Rust/Unix application programming. +- See the [easy](https://gitlab.redox-os.org/groups/redox-os/-/issues/?label_name[]=easy) issues +- See the "[good first issue](https://gitlab.redox-os.org/groups/redox-os/-/issues/?label_name[]=good%20first%20issue)" issues +- See the [help wanted](https://gitlab.redox-os.org/groups/redox-os/-/issues/?label_name[]=help%20wanted) issues (it's worth noting the skill level varies between projects, but a large subset of these should be approachable by contributors familiar with regular Rust/Unix application programming) - Improve the package manager, or other meta-tools like `redoxer` or `installer` - Improve the [Ion](https://gitlab.redox-os.org/redox-os/ion) shell, or other high-level or mid-level projects - Port Rust programs to Redox, possibly including dependencies, and C library extensions if necessary (also look for issues with the `port` label) @@ -163,10 +167,10 @@ For those who want to contribute to the Redox GUI, our GUI strategy has recently You can use the following GitLab label filters to know our development priorities on the moment: -- [Critical](https://gitlab.redox-os.org/redox-os/redox/-/issues/?sort=created_date&state=opened&label_name%5B%5D=critical&first_page_size=20) -- [High-priority](https://gitlab.redox-os.org/redox-os/redox/-/issues/?sort=created_date&state=opened&label_name%5B%5D=high-priority&first_page_size=20) -- [Medium-priority](https://gitlab.redox-os.org/redox-os/redox/-/issues/?sort=created_date&state=opened&label_name%5B%5D=medium-priority&first_page_size=20) -- [Low-priority](https://gitlab.redox-os.org/redox-os/redox/-/issues/?sort=created_date&state=opened&label_name%5B%5D=low-priority&first_page_size=20) +- [Critical](https://gitlab.redox-os.org/groups/redox-os/-/issues/?label_name[]=critical) +- [High-priority](https://gitlab.redox-os.org/groups/redox-os/-/issues/?label_name[]=high-priority) +- [Medium-priority](https://gitlab.redox-os.org/groups/redox-os/-/issues/?label_name[]=medium-priority) +- [Low-priority](https://gitlab.redox-os.org/groups/redox-os/-/issues/?label_name[]=low-priority) ## RFCs diff --git a/config/i686/demo.toml b/config/i686/demo.toml index 4230fc15e..eaaefbf10 100644 --- a/config/i686/demo.toml +++ b/config/i686/demo.toml @@ -9,6 +9,8 @@ filesystem_size = 768 # Package settings [packages] +rustpython = "ignore" # https://github.com/Alexhuszagh/rust-lexical/issues/218 + # Games dosbox = {} freedoom = {} diff --git a/config/i686/desktop.toml b/config/i686/desktop.toml index ab1670ba4..bb2ae9b81 100644 --- a/config/i686/desktop.toml +++ b/config/i686/desktop.toml @@ -11,4 +11,5 @@ include = ["../desktop.toml"] # Package settings [packages] -# example = {} \ No newline at end of file +# example = {} +rustpython = "ignore" # https://github.com/Alexhuszagh/rust-lexical/issues/218 \ No newline at end of file diff --git a/config/i686/dev.toml b/config/i686/dev.toml index ecd30849a..b717059e7 100644 --- a/config/i686/dev.toml +++ b/config/i686/dev.toml @@ -11,4 +11,5 @@ include = ["../dev.toml"] # Package settings [packages] -# example = {} \ No newline at end of file +# example = {} +rustpython = "ignore" # https://github.com/Alexhuszagh/rust-lexical/issues/218 \ No newline at end of file diff --git a/config/riscv64gc/demo.toml b/config/riscv64gc/demo.toml index 7d58679f3..1f6e59b5e 100644 --- a/config/riscv64gc/demo.toml +++ b/config/riscv64gc/demo.toml @@ -1,35 +1,3 @@ -# Minimal network configuration +# Configuration for demonstration -include = ["../minimal-net.toml"] - -# Override the default settings here - -# General settings -[general] -# Filesystem size in MiB -filesystem_size = 256 - -# Package settings -[packages] -orbdata = {} -orbital = {} -orbterm = {} -orbutils-background = {} -orbutils-launcher = {} -orbutils-orblogin = {} - -[[files]] -path = "/usr/lib/init.d/20_orbital" -data = """ -export VT 3 -orbital orblogin launcher -unset VT -""" - -# Override console config to not switch to VT 2 -[[files]] -path = "/usr/lib/init.d/30_console" -data = """ -getty 2 -getty /scheme/debug/no-preserve -J -""" +include = ["desktop.toml"] diff --git a/config/riscv64gc/desktop-minimal.toml b/config/riscv64gc/desktop-minimal.toml index 7d58679f3..d5872d0d6 100644 --- a/config/riscv64gc/desktop-minimal.toml +++ b/config/riscv64gc/desktop-minimal.toml @@ -1,35 +1,14 @@ -# Minimal network configuration +# Minimal desktop configuration -include = ["../minimal-net.toml"] +include = ["../desktop-minimal.toml"] # Override the default settings here # General settings [general] # Filesystem size in MiB -filesystem_size = 256 +# filesystem_size = 1024 # Package settings [packages] -orbdata = {} -orbital = {} -orbterm = {} -orbutils-background = {} -orbutils-launcher = {} -orbutils-orblogin = {} - -[[files]] -path = "/usr/lib/init.d/20_orbital" -data = """ -export VT 3 -orbital orblogin launcher -unset VT -""" - -# Override console config to not switch to VT 2 -[[files]] -path = "/usr/lib/init.d/30_console" -data = """ -getty 2 -getty /scheme/debug/no-preserve -J -""" +# example = {} diff --git a/config/riscv64gc/desktop.toml b/config/riscv64gc/desktop.toml index 7d58679f3..f523e7c23 100644 --- a/config/riscv64gc/desktop.toml +++ b/config/riscv64gc/desktop.toml @@ -1,35 +1,15 @@ -# Minimal network configuration +# Default build system configuration -include = ["../minimal-net.toml"] +include = ["../desktop.toml"] # Override the default settings here # General settings [general] # Filesystem size in MiB -filesystem_size = 256 +# filesystem_size = 1024 # Package settings [packages] -orbdata = {} -orbital = {} -orbterm = {} -orbutils-background = {} -orbutils-launcher = {} -orbutils-orblogin = {} - -[[files]] -path = "/usr/lib/init.d/20_orbital" -data = """ -export VT 3 -orbital orblogin launcher -unset VT -""" - -# Override console config to not switch to VT 2 -[[files]] -path = "/usr/lib/init.d/30_console" -data = """ -getty 2 -getty /scheme/debug/no-preserve -J -""" +# example = {} +netsurf = "ignore" # liborbital fails to link in due to mismatching float ABI diff --git a/config/riscv64gc/jeremy.toml b/config/riscv64gc/jeremy.toml index 7d58679f3..f3d8c0abc 100644 --- a/config/riscv64gc/jeremy.toml +++ b/config/riscv64gc/jeremy.toml @@ -1,35 +1,3 @@ -# Minimal network configuration +# Configuration for Jeremy Soller -include = ["../minimal-net.toml"] - -# Override the default settings here - -# General settings -[general] -# Filesystem size in MiB -filesystem_size = 256 - -# Package settings -[packages] -orbdata = {} -orbital = {} -orbterm = {} -orbutils-background = {} -orbutils-launcher = {} -orbutils-orblogin = {} - -[[files]] -path = "/usr/lib/init.d/20_orbital" -data = """ -export VT 3 -orbital orblogin launcher -unset VT -""" - -# Override console config to not switch to VT 2 -[[files]] -path = "/usr/lib/init.d/30_console" -data = """ -getty 2 -getty /scheme/debug/no-preserve -J -""" +include = ["desktop.toml"] diff --git a/config/riscv64gc/server.toml b/config/riscv64gc/server.toml index bcdb3af01..01f518228 100644 --- a/config/riscv64gc/server.toml +++ b/config/riscv64gc/server.toml @@ -1,6 +1,6 @@ -# Minimal network configuration +# Server configuration -include = ["../minimal-net.toml"] +include = ["../server.toml"] # Override the default settings here @@ -11,4 +11,4 @@ include = ["../minimal-net.toml"] # Package settings [packages] -# example = {} \ No newline at end of file +# example = {} diff --git a/config/server.toml b/config/server.toml index 89bc0a4ae..e5dd11790 100644 --- a/config/server.toml +++ b/config/server.toml @@ -11,7 +11,7 @@ filesystem_size = 512 [packages] bash = {} ca-certificates = {} -contain = {} +#contain = {} # needs to update dependencies coreutils = {} curl = {} diffutils = {} diff --git a/config/x86_64/jeremy.toml b/config/x86_64/jeremy.toml index f7b653bff..931599743 100644 --- a/config/x86_64/jeremy.toml +++ b/config/x86_64/jeremy.toml @@ -1,6 +1,6 @@ # Configuration for Jeremy Soller -include = ["../desktop.toml"] +include = ["demo.toml"] # General settings [general] @@ -10,31 +10,31 @@ filesystem_size = 8192 # Package settings [packages] # apps -#boxedwine = {} # not building +#boxedwine = {} +cosmic-player = {} +cosmic-reader = {} +#cosmic-settings = {} # requires recvmsg/sendmsg +cosmic-store = {} cosmic-term = {} cosmic-text = {} -periodictable = {} -pixelcannon = {} +qemu = {} schismtracker = {} -sodium = {} # cli -acid = {} cleye = {} ffmpeg6 = {} -gnu-grep = {} lua54 = {} nano = {} -nushell = {} +#nushell = {} perg = {} -relibc-tests = {} -ripgrep = {} +#relibc-tests = {} +russh = {} sed = {} shellharden = {} xz = {} # demos -cairodemo = {} +#cairodemo = {} #cmatrix = {} # addwstr cpal = {} gears = {} @@ -42,16 +42,14 @@ glutin = {} #hematite = {} # not building iced = {} libcosmic = {} -orbclient = {} osdemo = {} # does not show anything #pathfinder = {} # not building procedural-wallpapers-rs = {} -rodioplay = {} -rust-cairo = {} -rust-cairo-demo = {} +#rust-cairo = {} +#rust-cairo-demo = {} sdl2-gears = {} vttest = {} -webrender = {} +#webrender = {} winit = {} # dev @@ -64,43 +62,38 @@ gnu-make = {} nasm = {} patch = {} pkg-config = {} -rust = {} -rustpython = {} +#rust = {} +#rustpython = {} # games devilutionx = {} -dosbox = {} eduke32 = {} flycast = {} -freedoom = {} +freeciv = {} gigalomania = {} +love = {} mednafen = {} mgba = {} -neverball = {} openjazz = {} openjk = {} openttd = {} openttd-opengfx = {} openttd-openmsx = {} openttd-opensfx = {} -prboom = {} -redox-games = {} +quakespasm = {} #retroarch = {} # need to package cores rs-nes = {} # need game for testing rust64 = {} # need roms rustual-boy = {} # need game for testing scummvm = {} # need game for testing sm64ex = {} -sopwith = {} spacecadetpinball = {} -syobonaction = {} +#syobonaction = {} #vice = {} # broken on new toolchain #vvvvvv = {} # cannot find -lgcc_s # stuff -freepats = {} generaluser-gs = {} -intel-one-mono = {} jeremy = {} libc-bench = {} noto-color-emoji = {} diff --git a/config/x86_64/rustconf2025.toml b/config/x86_64/rustconf2025.toml new file mode 100644 index 000000000..b9e74c0ab --- /dev/null +++ b/config/x86_64/rustconf2025.toml @@ -0,0 +1,13 @@ +# Configuration for demonstration + +include = ["demo.toml"] + +# General settings +[general] +# Filesystem size in MiB +filesystem_size = 1536 + +# Package settings +[packages] +cosmic-reader = {} +rustconf2025 = {} diff --git a/cookbook b/cookbook index fc48fb9cf..5c17b6b07 160000 --- a/cookbook +++ b/cookbook @@ -1 +1 @@ -Subproject commit fc48fb9cf460833a91d0fd76911b39c1ef9d57bf +Subproject commit 5c17b6b073aa75f4b649f78cf197b0e2f68f4eb7 diff --git a/mk/ci.mk b/mk/ci.mk index 109807b1e..0eed1f6dc 100644 --- a/mk/ci.mk +++ b/mk/ci.mk @@ -31,7 +31,7 @@ else $(HOST_CARGO) build --manifest-path installer/Cargo.toml --release export PATH="$(PREFIX_PATH):$$PATH" && \ export COOKBOOK_HOST_SYSROOT="$(ROOT)/$(PREFIX_INSTALL)" && \ - PACKAGES="$$($(LIST_PACKAGES) $(LIST_PACKAGES_OPTS) -c config/$(ARCH)/ci.toml)" && \ + PACKAGES="$$($(LIST_PACKAGES) $(LIST_PACKAGES_OPTS) --short -c config/$(ARCH)/ci.toml)" && \ cd cookbook && \ ./fetch.sh "$${PACKAGES}" && \ ./repo.sh $(REPO_NONSTOP) "$${PACKAGES}" diff --git a/mk/config.mk b/mk/config.mk index 121e80577..e625b1a57 100644 --- a/mk/config.mk +++ b/mk/config.mk @@ -109,6 +109,7 @@ else export GNU_TARGET=$(TARGET) endif BUILD=build/$(ARCH)/$(CONFIG_NAME) +MOUNT_DIR=$(BUILD)/filesystem HOST_FSTOOLS=build/fstools INSTALLER=$(HOST_FSTOOLS)/bin/redox_installer INSTALLER_OPTS= diff --git a/mk/disk.mk b/mk/disk.mk index d09ca2a6b..3e0724c68 100644 --- a/mk/disk.mk +++ b/mk/disk.mk @@ -38,8 +38,8 @@ ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else mkdir -p $(BUILD) - -$(FUMOUNT) $(BUILD)/filesystem/ || true - rm -rf $@ $@.partial $(BUILD)/filesystem/ + -$(FUMOUNT) $(MOUNT_DIR) || true + rm -rf $@ $@.partial $(MOUNT_DIR) -$(FUMOUNT) /tmp/redox_installer || true FILESYSTEM_SIZE=$(FILESYSTEM_SIZE) && \ if [ -z "$$FILESYSTEM_SIZE" ] ; then \ @@ -47,31 +47,31 @@ else fi && \ truncate -s "$$FILESYSTEM_SIZE"m $@.partial $(REDOXFS_MKFS) $(REDOXFS_MKFS_FLAGS) $@.partial - mkdir -p $(BUILD)/filesystem/ - $(REDOXFS) $@.partial $(BUILD)/filesystem/ + mkdir -p $(MOUNT_DIR) + $(REDOXFS) $@.partial $(MOUNT_DIR) sleep 1 pgrep redoxfs - umask 002 && $(INSTALLER) $(INSTALLER_OPTS) -c $(FILESYSTEM_CONFIG) $(BUILD)/filesystem/ + umask 002 && $(INSTALLER) $(INSTALLER_OPTS) -c $(FILESYSTEM_CONFIG) $(MOUNT_DIR) sync - -$(FUMOUNT) $(BUILD)/filesystem/ || true - rm -rf $(BUILD)/filesystem/ + -$(FUMOUNT) $(MOUNT_DIR) || true + rm -rf $(MOUNT_DIR) mv $@.partial $@ endif mount: $(HOST_FSTOOLS) FORCE - mkdir -p $(BUILD)/filesystem/ - $(REDOXFS) $(BUILD)/harddrive.img $(BUILD)/filesystem/ + mkdir -p $(MOUNT_DIR) + $(REDOXFS) $(BUILD)/harddrive.img $(MOUNT_DIR) sleep 2 pgrep redoxfs mount_extra: $(HOST_FSTOOLS) FORCE - mkdir -p $(BUILD)/filesystem/ - $(REDOXFS) $(BUILD)/extra.img $(BUILD)/filesystem/ + mkdir -p $(MOUNT_DIR) + $(REDOXFS) $(BUILD)/extra.img $(MOUNT_DIR) sleep 2 pgrep redoxfs unmount: FORCE sync - -$(FUMOUNT) $(BUILD)/filesystem/ || true - rm -rf $(BUILD)/filesystem/ + -$(FUMOUNT) $(MOUNT_DIR) || true + rm -rf $(MOUNT_DIR) -$(FUMOUNT) /tmp/redox_installer || true diff --git a/mk/repo.mk b/mk/repo.mk index d8f232d81..dfbcacfe4 100644 --- a/mk/repo.mk +++ b/mk/repo.mk @@ -5,7 +5,7 @@ ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ else export PATH="$(PREFIX_PATH):$$PATH" && \ - PACKAGES="$$($(LIST_PACKAGES) $(LIST_PACKAGES_OPTS) -c $(FILESYSTEM_CONFIG))" && \ + PACKAGES="$$($(LIST_PACKAGES) $(LIST_PACKAGES_OPTS) --short -c $(FILESYSTEM_CONFIG))" && \ export COOKBOOK_HOST_SYSROOT="$(ROOT)/$(PREFIX_INSTALL)" && \ cd cookbook && \ ./fetch.sh $(REPO_NONSTOP) $(REPO_OFFLINE) "$${PACKAGES}" @@ -19,7 +19,7 @@ ifeq ($(PODMAN_BUILD),1) else export PATH="$(PREFIX_PATH):$$PATH" && \ export COOKBOOK_HOST_SYSROOT="$(ROOT)/$(PREFIX_INSTALL)" && \ - PACKAGES="$$($(LIST_PACKAGES) $(LIST_PACKAGES_OPTS) -c $(FILESYSTEM_CONFIG))" && \ + PACKAGES="$$($(LIST_PACKAGES) $(LIST_PACKAGES_OPTS) --short -c $(FILESYSTEM_CONFIG))" && \ cd cookbook && \ ./repo.sh $(REPO_NONSTOP) $(REPO_OFFLINE) --with-package-deps "$${PACKAGES}" mkdir -p $(BUILD) @@ -87,6 +87,34 @@ else fi endif +MOUNTED_TAG=$(MOUNT_DIR)~ + +# Push compiled package into existing image +# DO NOT RUN THIS WHILE QEMU ALIVE, THE DISK MIGHT CORRUPT IN DOING SO +p.%: $(FSTOOLS_TAG) FORCE + @rm -f $(MOUNTED_TAG) + @if [ ! -d "$(MOUNT_DIR)" ]; then \ + $(MAKE) mount; \ + touch $(MOUNTED_TAG); \ + fi +ifeq ($(PODMAN_BUILD),1) + $(PODMAN_RUN) make $@ +else + @if echo "$*" | grep -q ','; then \ + $(MAKE) $(foreach f,$(subst $(comma), ,$*),p.$(f)); \ + else \ + export RECIPE_PATH=cookbook/$(shell make find.$* | grep ^recipes) && \ + export RECIPE_STAGE=$$RECIPE_PATH/target/$(TARGET)/stage.pkgar && \ + ./cookbook/pkgar/target/release/pkgar extract $(MOUNT_DIR)/ --archive $$RECIPE_STAGE \ + --pkey ./cookbook/build/id_ed25519.pub.toml && \ + echo "extracted $$RECIPE_PATH"; \ + fi +endif + @if [ -f $(MOUNTED_TAG) ]; then \ + $(MAKE) unmount && rm -f $(MOUNTED_TAG); \ + else echo "Not unmounting by ourself, don't forget to do it"; \ + fi + # Invoke unfetch.sh for one or more targets separated by comma u.%: $(FSTOOLS_TAG) FORCE ifeq ($(PODMAN_BUILD),1) diff --git a/podman/rustinstall.sh b/podman/rustinstall.sh index 3cdd68643..3730d04db 100755 --- a/podman/rustinstall.sh +++ b/podman/rustinstall.sh @@ -3,7 +3,7 @@ # This script install the Rust toolchain and the build system dependencies # in Podman after the image has been built -curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain stable +curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain stable --profile minimal curl -sSLf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash cargo +stable binstall --no-confirm --force --version 0.10.0 sccache diff --git a/relibc b/relibc index fd9a1c966..2f0d5eb97 160000 --- a/relibc +++ b/relibc @@ -1 +1 @@ -Subproject commit fd9a1c9668c10d122eab9839d0f0f7f4d88703ab +Subproject commit 2f0d5eb970337f595128505d1435a1086f998600 diff --git a/rust-toolchain.toml b/rust-toolchain.toml index e34f9fb80..65eb22714 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,4 @@ [toolchain] channel = "nightly-2025-01-12" -components = ["rust-src"] +components = ["rust-src", "rustfmt", "clippy"] +profile = "minimal"