Compare commits

...

616 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
Jeremy Soller 0aec2332db
Update installer and cookbook 2024-02-07 20:04:53 -07:00
Jeremy Soller 48262cb7be
Move redoxer configs here and update installer 2024-02-07 19:44:26 -07:00
Jeremy Soller 308b540816
config/x86_64/ci.toml: add mednafen 2024-02-06 18:44:00 -07:00
Jeremy Soller bb818fb2e2 Update cookbook 2024-02-03 14:46:28 -07:00
Jeremy Soller 38246195e2 Update cookbook 2024-02-03 14:27:21 -07:00
Jeremy Soller f92559a63b Update relibc 2024-02-03 13:17:50 -07:00
Jeremy Soller 2ab7768d53
Update relibc 2024-02-02 15:43:31 -07:00
Jeremy Soller e2450b0fd3 Update cookbook 2024-01-30 18:55:22 -07:00
Jeremy Soller c959953e0a Use REPO_NONSTOP in ci.mk 2024-01-28 16:17:07 +00:00
Jeremy Soller 5b1dc1e8bc Merge branch 'remove_redox-release' into 'master'
Remove /etc/redox-release

See merge request redox-os/redox!1423
2024-01-26 23:27:04 +00:00
bjorn3 312df3a563 Remove /etc/redox-release
Screenfetch now understands /etc/os-release
2024-01-26 21:18:25 +01:00
Jeremy Soller d7493046d4
Update submodules 2024-01-26 11:02:56 -07:00
Jeremy Soller ea2b2ed1b8 Merge branch 'enable-nano' into 'master'
Enable GNU nano by default

See merge request redox-os/redox!1422
2024-01-26 17:29:28 +00:00
Ribbon 2f3f552300 Enable GNU nano by default 2024-01-26 17:29:28 +00:00
Jeremy Soller da8d585c5d Merge branch 'fix_os_release' into 'master'
Fix the format of /etc/os-release

See merge request redox-os/redox!1420
2024-01-26 17:29:01 +00:00
Jeremy Soller 0df9d7ba0f Merge branch 'less_qemu_logs' into 'master'
Only enable -d cpu_reset for qemu when debugging

See merge request redox-os/redox!1419
2024-01-26 17:28:06 +00:00
bjorn3 5c85210900 Fix the format of /etc/os-release
The os-release crate can't handle parsing the current format, and the
python example on the /etc/os-release man page suggests that it is
invalid to have a space before the equal sign.
2024-01-25 17:57:03 +01:00
bjorn3 69364ba176 Only enable -d cpu_reset for qemu when debugging
It is only useful when debugging and otherwise just throws a whole bunch
of logs on every boot.
2024-01-25 15:22:03 +01:00
Jeremy Soller 000f0c4573 Merge branch 'master' into 'master'
Fix Developer FAQ Link

See merge request redox-os/redox!1416
2024-01-21 13:23:12 +00:00
Michael Wang 0dee515449 Fix Developer FAQ Link 2024-01-21 03:46:48 +00:00
Jeremy Soller b97dbbbb5f
Update cookbook 2024-01-18 16:00:07 -07:00
Jeremy Soller 33b33c6c20
Update cookbook 2024-01-18 15:19:34 -07:00
Jeremy Soller 6a90ec33b4
Remove dead binutils project from demo image 2024-01-18 14:14:07 -07:00
Jeremy Soller d86341734d
Update cookbook 2024-01-18 14:11:55 -07:00
Jeremy Soller 51f42325ac
Update installer 2024-01-18 13:43:40 -07:00
Jeremy Soller 0cab163684
Update cookbook 2024-01-18 13:41:50 -07:00
Jeremy Soller 015d2d660a
Update relibc 2024-01-18 13:27:34 -07:00
Jeremy Soller 57d747503c
Update cookbook and relibc 2024-01-18 12:59:22 -07:00
Jeremy Soller 1912a0ec02
Update relibc 2024-01-17 13:24:18 -07:00
Jeremy Soller 41045a5406 Merge branch 'usr_lib_initd' into 'master'
Move a couple of missed init files from /etc/init.d to /usr/lib/init.d

See merge request redox-os/redox!1415
2024-01-17 15:10:16 +00:00
bjorn3 f4b4d34cf6 Move a couple of missed init files from /etc/init.d to /usr/lib/init.d 2024-01-17 14:31:32 +01:00
Jeremy Soller 46ba4e0ce3 Merge branch 'new-script' into 'master'
Add a script to show the branches and commit hashes of some recipe source

See merge request redox-os/redox!1414
2024-01-17 03:02:31 +00:00
Ribbon d3ec68dc87 Add a script to show the branches and commit hashes of some recipe source 2024-01-17 03:02:31 +00:00
Jeremy Soller bca6e2214d
Update relibc 2024-01-16 19:50:03 -07:00
Jeremy Soller 178db06610
Update cookbook and relibc 2024-01-14 19:01:57 -07:00
Jeremy Soller 6a110b7dbf
Update cookbook 2024-01-12 15:50:55 -07:00
Jeremy Soller df1c8b031b
Update relibc 2024-01-12 15:44:38 -07:00
Jeremy Soller 4fbc3b066e
Update cookbook 2024-01-12 15:17:00 -07:00
Jeremy Soller 80466e71b1
config/x86_64/ci.toml: enable shared-mime-info 2024-01-12 13:05:36 -07:00
Jeremy Soller 33769cd851 Allow any just version 2024-01-12 13:04:29 -07:00
Jeremy Soller 4d88760fbf
Update relibc 2024-01-12 12:21:32 -07:00
Jeremy Soller 421649353b
Update relibc 2024-01-12 12:06:05 -07:00
Jeremy Soller 3184bd8b13
Update relibc 2024-01-12 11:54:06 -07:00
Jeremy Soller 025b4d4514 config/x86_64/demo.toml: add shared-mime-info 2024-01-12 11:47:09 -07:00
Jeremy Soller d5b6877298 config/x86_64/jeremy.toml: add shared-mime-info 2024-01-12 11:45:55 -07:00
Jeremy Soller 6a628a73d3
Update relibc 2024-01-12 11:29:41 -07:00
Jeremy Soller 65cf92f73a
Update cookbook 2024-01-12 11:23:00 -07:00
Jeremy Soller af62d768cd Merge branch 'less_ci_deps' into 'master'
Reduce time to run CI

See merge request redox-os/redox!1413
2024-01-12 14:26:31 +00:00
bjorn3 aa7edc6ef1 Zstd compress all images
I tried gzip, bzip2, xz and xzstd. Xz 22s for a 128MB disk image. Out of
all other options zstd was both the fastest to compress (<1s) and
produced the smallest file (28MB).
2024-01-11 21:18:21 +01:00
Jeremy Soller 461cbcb423 Merge branch 'fix_ci' into 'master'
Fix CI

See merge request redox-os/redox!1408
2024-01-11 20:12:52 +00:00
Jeremy Soller 4d0eeb1bf4
config/i686/ci.toml: add vim 2024-01-11 12:04:53 -07:00
bjorn3 e91d78ce4b Use cargo binstall to save 1.5min on building various build deps 2024-01-11 19:50:31 +01:00
bjorn3 0ded7946d0 Remove unused system dependencies from CI config 2024-01-11 19:26:19 +01:00
bjorn3 8ea1cde8f6 Fix CI 2024-01-11 18:55:43 +01:00
Jeremy Soller dac858b84e
Default to using kvm when arch is i686 and host is x86_64 2024-01-11 09:55:54 -07:00
Jeremy Soller 4eb06c8e36
config/x86_64/jeremy.toml: fix duplicate package 2024-01-11 09:41:44 -07:00
Jeremy Soller efa4a9e70a
Update relibc 2024-01-11 09:41:25 -07:00
Jeremy Soller 07fde7b608 Merge branch 'backtrace' into 'master'
add backtrace script and improve config file instructions

See merge request redox-os/redox!1412
2024-01-11 15:59:48 +00:00
Ron Williams d9b0556e7b add backtrace script and improve config file instructions 2024-01-11 06:27:28 -08:00
Jeremy Soller 76d1ba2ad8
Do not recurse submodules in git pull 2024-01-10 14:09:06 -07:00
Jeremy Soller a67519dcf2
Update cookbook and installer 2024-01-10 13:50:34 -07:00
Jeremy Soller 17e3c17c73
Do not use prefix rustc to determine host target 2024-01-10 11:08:31 -07:00
Jeremy Soller 7de457e022
Ensure lib/rustlib/HOST_TARGET/lib exists in prefix tarballs 2024-01-10 09:53:13 -07:00
Jeremy Soller 45d5fce901 Merge branch 'fix_ci_pkg_set' into 'master'
Update ci.toml to build required packages for the demo

See merge request redox-os/redox!1411
2024-01-10 16:48:14 +00:00
bjorn3 30951f8ae1 Update ci.toml to build required packages for the demo 2024-01-10 17:00:09 +01:00
Jeremy Soller ac35d73a87
Update cookbook and installer 2024-01-10 08:57:24 -07:00
Jeremy Soller 5831c26aef Merge branch 'no_rust_submodule' into 'master'
Remove the rust submodule

Closes #1389

See merge request redox-os/redox!1409
2024-01-10 15:03:38 +00:00
Jeremy Soller d1c4270e10 Merge branch 'cookbook-gui-fix' into 'master'
update cookbook

See merge request redox-os/redox!1410
2024-01-10 14:19:18 +00:00
bjorn3 34acc9cb04 Don't checkout rust submodule by default
It is no longer necessary for regular builds as of the previous commit.
This will drastically improve the time it takes to do the initial clone
of redox.
2024-01-10 15:19:06 +01:00
Ron Williams f95cb00cd8 update cookbook 2024-01-10 06:07:26 -08:00
bjorn3 da380dd368 Don't rebuild lib/rustlib/src in the rust sysroot
The prebuilt tarball already contains it now
2024-01-09 11:05:06 +01:00
Jeremy Soller 238b445056
Update relibc 2024-01-08 20:35:30 -07:00
Jeremy Soller 4888505cdb
Update cookbook 2024-01-08 15:56:48 -07:00
Jeremy Soller 8406fed3cd
Update cookbook 2024-01-08 14:54:12 -07:00
Jeremy Soller c70bac9630
Update cookbook 2024-01-08 14:52:46 -07:00
Jeremy Soller d599690326
Update relibc 2024-01-08 14:43:48 -07:00
Jeremy Soller deb3fe9040
Update cookbook 2024-01-08 14:00:25 -07:00
Jeremy Soller 5bddaf4b78
Update cookbook 2024-01-08 11:52:24 -07:00
Jeremy Soller e757a57f72 Merge branch 'simplify_config_mk' into 'master'
Somewhat simplify config.mk

See merge request redox-os/redox!1407
2024-01-08 18:26:38 +00:00
bjorn3 5ce30e6da6 Somewhat simplify config.mk
* nproc exists on FreeBSD too
* REDOX_MAKE is generally make, so use that as default with per-OS
  override if necessary.
* HOST_TARGET can be fetched directly from rustc.
2024-01-08 19:24:14 +01:00
Jeremy Soller bb64eb8117 Merge branch 'os-release' into 'master'
Use the standard os-release instead of redox specific redox-release

See merge request redox-os/redox!1402
2024-01-08 18:23:52 +00:00
bjorn3 cf04f50d86 Use sparse files for the generated disk images on all OSes
Rather than just on macOS. This can save quite a bit of space depending
on the amount of free space on the root filesystem of the disk image.
2024-01-08 19:09:51 +01:00
bjorn3 4cab6ca334 Use the standard os-release instead of redox specific redox-release
This allows programs not specifically written for Redox OS to discover
information about the OS it is running on.
2024-01-08 18:17:30 +01:00
Jeremy Soller f04bb44e55 Merge branch 'clear_tmp_on_boot' into 'master'
Clear /tmp when booting

See merge request redox-os/redox!1403
2024-01-08 16:16:55 +00:00
bjorn3 fc4a6d43c6 Add uutils to base 2024-01-08 17:11:22 +01:00
Jeremy Soller 9944576af5
Update cookbook 2024-01-08 09:09:06 -07:00
Jeremy Soller 3011b75132 Merge branch 'usr_lib_initd' into 'master'
Move all system init configs to /usr/lib/init.d

See merge request redox-os/redox!1404
2024-01-08 16:02:11 +00:00
Jeremy Soller 09f4e110a1
Update relibc 2024-01-08 09:00:30 -07:00
bjorn3 5887119311 Move all system init configs to /usr/lib/init.d
This keeps /etc/init.d for local overrides without risking them getting
overwritten by system updates.
2024-01-07 18:15:34 +01:00
Jeremy Soller 1f49ccaee3 scripts/dual-boot.sh: fix bootloader path 2024-01-07 08:28:48 -07:00
bjorn3 52a3aa4980 Clear /tmp when booting
This matches the behavior of most UNIX systems and ensures that the disk
doesn't eventually fills entirely with unused temporary files.
2024-01-06 18:47:35 +01:00
Jeremy Soller 161788988c Merge branch 'swap_usrmerge' into 'master'
Make /{bin,lib,share,include} a symlink to /usr/{bin,lib,share,include}

See merge request redox-os/redox!1400
2024-01-06 17:12:29 +00:00
bjorn3 21561d1642 Make /{bin,lib,share,include} a symlink to /usr/{bin,lib,share,include}
This matches the directory layout of modern Linux systems.
2024-01-06 18:01:51 +01:00
Jeremy Soller d7e3bc0b87 Merge branch 'installer_groups' into 'master'
Move /etc/group generation to the installer

See merge request redox-os/redox!1401
2024-01-06 16:56:54 +00:00
bjorn3 a17c81df0c Move /etc/group generation to the installer
This ensures that the gid's for the auto-generated user groups stay in
sync with the gid in /etc/passwd. It also makes it easier to evolve the
format of /etc/group in the future.
2024-01-06 17:56:11 +01:00
Jeremy Soller d82216bcca
Update relibc 2024-01-05 12:28:27 -07:00
Jeremy Soller a1a0a7318d Merge branch 'tty-config' into 'master'
add /dev/tty and other libc: links

See merge request redox-os/redox!1399
2024-01-05 19:28:01 +00:00
Ron Williams 0a739ba2a4 add /dev/tty and other libc: links 2024-01-05 06:27:09 -08:00
Jeremy Soller 42ddca03c4
Use desktop template for jeremy configs 2024-01-04 14:10:10 -07:00
Jeremy Soller d3b13b4c9d
Update cookbook 2024-01-04 13:47:44 -07:00
Jeremy Soller 4d202c47cc
Adapt desktop-contain to use templates 2024-01-04 13:46:01 -07:00
Jeremy Soller 96044654b0
Template for dev 2024-01-04 13:43:32 -07:00
Jeremy Soller bbb147cdba
Use desktop template as base for demo configs 2024-01-04 13:40:42 -07:00
Jeremy Soller c54bfd99ce
Make template desktop and server configs 2024-01-04 13:40:31 -07:00
Jeremy Soller 275b9065f5
Remove broken aarch64 configs 2024-01-04 13:29:42 -07:00
Jeremy Soller 8f51fda66e
Move some init into net.toml 2024-01-04 13:27:25 -07:00
Jeremy Soller 72365aca16
Move escalated, ipcd, and ptyd to base 2024-01-04 13:15:16 -07:00
Jeremy Soller 0b737f0a0f
Use templates for acid, desktop-minimal, resist, server-minimal 2024-01-04 12:25:27 -07:00
Jeremy Soller 0427420717
Use installer to resolve filesystem size 2024-01-04 12:22:43 -07:00
Jeremy Soller e75d6a3796
Update installer 2024-01-04 12:18:54 -07:00
Jeremy Soller 13a3953bcd
Update installer 2024-01-04 11:58:32 -07:00
Jeremy Soller d7573cb074
Update installer 2024-01-04 11:55:04 -07:00
Jeremy Soller 7ff5b1bd30
Use template for all server-minimal configs 2024-01-04 11:45:40 -07:00
Jeremy Soller 0811cf7246
Two missing removals 2024-01-04 11:41:17 -07:00
Jeremy Soller 03ed74d02c
Move group configuration to base 2024-01-04 11:40:24 -07:00
Jeremy Soller bc36226dd7
Move user configuration to base 2024-01-04 11:36:45 -07:00
Jeremy Soller 297153b19c
Move boostrap, initfs, kernel to base 2024-01-04 11:23:14 -07:00
Jeremy Soller a0e7ff99df
Add net config template 2024-01-04 11:08:53 -07:00
Jeremy Soller 28f04a167a
Update cookbook 2024-01-04 08:39:21 -07:00
Jeremy Soller 18d968ea83 Merge branch 'config_include' into 'master'
Use the new config include functionality for creating the base system files

See merge request redox-os/redox!1398
2024-01-04 15:24:17 +00:00
Jeremy Soller 548d7a8775
Update installer 2024-01-04 08:24:05 -07:00
bjorn3 d130e9f73c Use the new config include functionality for creating the base system files 2024-01-04 15:31:44 +01:00
bjorn3 3c6aa4fff9 Finalize move of games from /games to /usr/games 2024-01-03 21:51:37 +01:00
Jeremy Soller c910e7c358
Update cookbook 2024-01-03 13:09:00 -07:00
Jeremy Soller 745b6da860
Update relibc 2024-01-03 13:02:59 -07:00
Jeremy Soller 618ec56e0e
Update cookbook 2024-01-03 12:29:07 -07:00
Jeremy Soller 83e90a64d5
Update installer, redoxfs, relibc 2024-01-03 12:27:13 -07:00
Jeremy Soller 27c3d69aed Merge branch 'sparse_extra' into 'master'
Use sparse allocation of extra.img on Linux too

See merge request redox-os/redox!1391
2024-01-03 19:23:46 +00:00
Jeremy Soller 17271e73dd Merge branch 'contain' into 'master'
Add desktop-contain.toml

See merge request redox-os/redox!1394
2024-01-03 19:22:34 +00:00
Ron Williams 3619030bd1 Add desktop-contain.toml 2024-01-03 19:22:34 +00:00
Jeremy Soller f8e6c534c8 Merge branch 'category-script' into 'master'
Add script to run make targets in a recipe category

See merge request redox-os/redox!1393
2024-01-03 19:20:35 +00:00
Ron Williams 5813905973 Add script to run make targets in a recipe category 2024-01-03 19:20:35 +00:00
Jeremy Soller e123e7a5aa
Update cookbook and relibc 2024-01-03 12:16:43 -07:00
Jeremy Soller 90e6204280 Merge branch 'ribbon-scripts' into 'master'
add nonstop, uc and ucf to build, plus scripts include-recipes.sh and show-package.sh

See merge request redox-os/redox!1396
2024-01-03 19:15:30 +00:00
Ron Williams 6258becc3c add nonstop, uc and ucf to build, plus scripts include-recipes.sh and show-package.sh 2024-01-03 19:15:30 +00:00
Jeremy Soller 4598a164df
Update relibc 2024-01-03 09:46:22 -07:00
Jeremy Soller dc4f61cc8e Merge branch 'podman-cbindgen' into 'master'
add cbindgen to Podman build

See merge request redox-os/redox!1392
2023-12-17 23:00:29 +00:00
Ron Williams 54cb2ecf26 add cbindgen to Podman build 2023-12-17 14:39:01 -08:00
Jeremy Soller e1b238d078 Merge branch 'ivan/config' into 'master'
add raspi3b config

See merge request redox-os/redox!1390
2023-12-17 11:59:06 +00:00
bjorn3 ffd64a8703 Use sparse allocation of extra.img on Linux too
fallocate immediately allocates the full size of the file, even though
it likely won't end up being used.
2023-12-17 12:44:32 +01:00
Ivan Tan 097c6876bf add raspi3b config 2023-12-17 10:16:42 +08:00
Jeremy Soller 2be98db644 ci: disable jansson 2023-12-16 09:54:47 -07:00
Jeremy Soller 1afef4aef0 Merge branch 'ivan/board_var' into 'master'
aarch64: support building Redox for different motherboard.

See merge request redox-os/redox!1388
2023-12-15 23:18:38 +00:00
Jeremy Soller e5ff3c59c7 Merge branch 'cbindgen' into 'master'
Add checks and install cbindgen in bootstrap.sh.

See merge request redox-os/redox!1389
2023-12-15 23:15:20 +00:00
4lDO2 e3013ac40b
Add checks and install cbindgen in bootstrap.sh. 2023-12-14 15:32:54 +01:00
Ivan Tan 584e6fb548 aarch64: support building Redox for different motherboard. 2023-12-14 12:29:20 +00:00
Jeremy Soller 2dadc977e7 Merge branch 'improve-errors-in-bootstrap-scripts' into 'master'
Improve errors in bootstrap scripts

See merge request redox-os/redox!1387
2023-12-14 05:12:06 +00:00
Jeremy Soller d5318bccf1
Update cookbook 2023-12-13 15:54:31 -07:00
Jeremy Soller 5121c47bb2
Update cookbook and installer 2023-12-13 14:41:50 -07:00
Jeremy Soller fb1478d9bf
Replace rebuild-recipe with make cr.recipe and make ucr.recipe 2023-12-13 14:41:38 -07:00
mattmadeofpasta cb42d21c64
Improve errors in bootstrap scripts 2023-12-13 20:51:55 +00:00
Jeremy Soller 7bec121856
Fix clean prefix build 2023-12-13 12:10:42 -07:00
Jeremy Soller 979933b739
Update cookbook 2023-12-12 19:49:21 -07:00
Jeremy Soller 79f359fe75
Update cookbook 2023-12-12 14:12:21 -07:00
Jeremy Soller 8c1f0a88d5
Add more ABI versions to CI packages 2023-12-12 13:56:45 -07:00
Jeremy Soller 89749d3722
Copy relibc source to prefix to prevent problems when running multiple arch builds at once 2023-12-12 13:49:45 -07:00
Jeremy Soller 8dbb328ca2
Update installer and redoxfs 2023-12-12 13:49:11 -07:00
Jeremy Soller 5fa75583b9
Update cookbook 2023-12-12 13:20:42 -07:00
Jeremy Soller 06a60d2e38
Update installer and redoxfs 2023-12-12 11:12:05 -07:00
Jeremy Soller 7e26a335b4
Update cookbook 2023-12-12 10:12:47 -07:00
Jeremy Soller dbe65587c0
Add more API versions to packages 2023-12-12 09:21:37 -07:00
Jeremy Soller 2bbb7eabb0
Update submodules 2023-12-12 09:21:28 -07:00
Jeremy Soller b865c04adc
Adjust package names after API separation 2023-12-12 08:14:27 -07:00
Jeremy Soller 71406afe4f
Adjust i686 qemu parameters and allow kvm to be specified 2023-12-12 08:06:12 -07:00
Jeremy Soller 9552a1cc67
Fix kernel symbols path 2023-12-12 08:05:51 -07:00
Jeremy Soller 224b703802
config/i686/demo.toml: increase filesystem size to 512MiB 2023-12-12 08:05:35 -07:00
Jeremy Soller 5ccaab791d
Update submodules 2023-12-12 08:05:13 -07:00
Jeremy Soller 24ef509a8a
Update cookbook 2023-12-11 09:50:40 -07:00
Jeremy Soller 31d3c828fa
Remove fuse from ubuntu depends 2023-12-11 09:50:08 -07:00
Jeremy Soller b8ca11658d Merge branch 'add-missing-debian-packages' into 'master'
Add missing debian packages

See merge request redox-os/redox!1386
2023-12-11 16:47:03 +00:00
mattmadeofpasta ec394f1dcb
Add missing debian packages 2023-12-11 16:32:24 +00:00
Jeremy Soller d2f3c5bd44
Update cookbook and relibc 2023-12-11 09:10:47 -07:00
Jeremy Soller fc90fb9e0d Merge branch 'ivan/raspi3bp' into 'master'
add command to support qemu-arm64 and qemu-raspi3b

See merge request redox-os/redox!1385
2023-12-11 16:08:52 +00:00
Jeremy Soller 1d7c4b297f Merge branch 'fix-links' into 'master'
Add new sections and fix a hyperlink

See merge request redox-os/redox!1384
2023-12-11 16:06:09 +00:00
Ivan Tan 636df55a51 add command to support qemu-arm64 and qemu-raspi3b 2023-12-08 23:51:12 +08:00
Ribbon a97ad2229b Add new sections and fix a hyperlink 2023-12-07 20:01:51 +00:00
Jeremy Soller 8171a4598c
Update submodules 2023-12-07 08:46:05 -07:00
Jeremy Soller a53db94ffa Merge branch 'fix_desktop_minimal_config' into 'master'
Fix orbital startup for the desktop-minimal config

See merge request redox-os/redox!1383
2023-12-07 15:41:49 +00:00
Jeremy Soller b1447312e0 Merge branch 'add-just' into 'master'
Add `just` to the build dependencies

See merge request redox-os/redox!1382
2023-12-07 15:36:14 +00:00
Jeremy Soller ba1fb3bcee Merge branch 'simplify-contributing' into 'master'
Improve and cleanup the CONTRIBUTING

See merge request redox-os/redox!1381
2023-12-07 15:35:26 +00:00
bjorn3 ecadeac063 Fix orbital startup for the desktop-minimal config 2023-11-29 14:41:54 +01:00
mattmadeofpasta b86622d73b
Add `just` to the build dependencies 2023-11-23 21:40:00 +00:00
Ribbon 5a12caef3a Improve and cleanup the CONTRIBUTING 2023-11-18 22:45:35 +00:00
Jeremy Soller 15d94b2fd6
Add cosmic-icons and intel-one-mono to jeremy config 2023-11-15 16:11:12 -07:00
Jeremy Soller 72fe19c323
Include intel-one-mono font in demo image 2023-11-15 15:58:56 -07:00
Jeremy Soller f61eb6af3b
Update cookbook 2023-11-15 15:56:35 -07:00
Jeremy Soller 65037a0495
Install icons in demo image 2023-11-15 15:34:28 -07:00
Jeremy Soller 7376420240
Move cosmic-edit from desktop to demo 2023-11-15 14:53:57 -07:00
Jeremy Soller c6ee5673d7
Rename games to redox-games 2023-11-15 12:52:00 -07:00
Jeremy Soller 88e792a70f
Update cookbook 2023-11-15 11:16:29 -07:00
Jeremy Soller a76f96c5cf
Update cookbook 2023-11-15 10:30:27 -07:00
Jeremy Soller 3e9464c936
Add cosmic-edit to jeremy config 2023-11-15 10:29:12 -07:00
Jeremy Soller 8df4c8b4b8
Update submodules 2023-11-15 10:28:36 -07:00
Jeremy Soller 008bb5c4c4 Merge branch 'disable-wget-progress-bar' into 'master'
Disable the wget progress bar in CI

See merge request redox-os/redox!1377
2023-11-15 17:23:51 +00:00
Jeremy Soller 84a93e472f Merge branch 'ybalrid-hardware' into 'master'
Add ASUS ROG g55vw to HARDWARE.md

See merge request redox-os/redox!1378
2023-11-15 17:23:22 +00:00
Arthur Brainville 3f4b2b1082 Add ASUS ROG g55vw to HARDWARE.md 2023-11-15 17:23:22 +00:00
Jeremy Soller 24f984e606 Merge branch 'improve-hardware' into 'master'
Improve HARDWARE.md

See merge request redox-os/redox!1379
2023-11-15 17:23:01 +00:00
Jeremy Soller d795bd2954 Merge branch 'fix_make_gdb' into 'master'
Fix kernel sym path in make gdb.

See merge request redox-os/redox!1380
2023-11-15 17:21:17 +00:00
4lDO2 6b60e3e95b
Fix kernel sym path in make gdb. 2023-11-14 17:30:11 +01:00
Ribbon 7c74b327c5 Improve HARDWARE.md 2023-11-12 02:18:01 +00:00
mattmadeofpasta 315f5e8c43
Disable the wget progress bar in CI 2023-11-10 18:00:18 +00:00
Jeremy Soller c439d044b0 Merge branch 'reenable-dash' into 'master'
Reenable dash

See merge request redox-os/redox!1373
2023-11-05 15:13:58 +00:00
mattmadeofpasta 7624d9c503
Reenable dash 2023-11-05 13:40:34 +00:00
Jeremy Soller e0fddec2db Merge branch 'rw_van_231024' into 'master'
Update config.mk to support changed option name for REPO_BINARY=1

See merge request redox-os/redox!1371
2023-11-05 12:56:28 +00:00
Ron Williams 5ad0f9900a Update config.mk to support changed option name for REPO_BINARY=1 2023-11-05 12:56:28 +00:00
Jeremy Soller 16812b36c7 Merge branch 'improve-readme' into 'master'
Improve/cleanup the README

See merge request redox-os/redox!1372
2023-11-04 18:36:48 +00:00
Jeremy Soller 1e04422369
Update cookbook and relibc 2023-11-04 12:24:02 -06:00
Jeremy Soller 5c4f103ccf
config/x86_64/jeremy: disable cargo due to openssl issues 2023-11-04 12:22:45 -06:00
Ribbon cb1e9a0cbd Improve/cleanup the README 2023-10-29 18:32:57 +00:00
Jeremy Soller 234dc59639
Update relibc 2023-10-19 10:32:00 -06:00
Jeremy Soller 3f41e1fda7
Update relibc 2023-10-19 09:08:49 -06:00
Jeremy Soller 5cc93a2d22 Merge branch 'disable_mic' into 'master'
Switch qemu sound device from hda-duplex to hda-output

See merge request redox-os/redox!1370
2023-10-19 14:57:05 +00:00
bjorn3 3bea19f266 Switch qemu sound device from hda-duplex to hda-output
hda-duplex allows recording too. At least for XFCE this results in a
scary mic recording icon even when nothing inside the VM is actually
recording anything.
2023-10-18 22:51:41 +02:00
Jeremy Soller 3a1b3de8f7
config/x86_64/ci.toml: enable ffmpeg 2023-10-10 12:58:38 -06:00
Jeremy Soller 3d5fd0b166 Update submodules 2023-10-09 13:37:17 -06:00
Jeremy Soller a55f8bfab0 Merge branch 'minor_cleanup' into 'master'
Two minor build system cleanups

See merge request redox-os/redox!1369
2023-10-08 12:49:01 +00:00
bjorn3 84bccb1d60 Build redoxfs and redoxfs-mkfs at the same time
This should be a bit faster.
2023-10-03 16:07:03 +02:00
bjorn3 577ca92715 Remove unused rule for gzip compressing files 2023-10-03 16:06:34 +02:00
Jeremy Soller 225e435292
Update cookbook 2023-09-25 08:56:15 -06:00
Jeremy Soller bb5118b123 Merge branch 'missing_bootloader_build' into 'master'
Fix building and running for the server-minimal config

See merge request redox-os/redox!1368
2023-09-22 14:03:29 +00:00
bjorn3 436f86b1ff Remove inputd init entry from server-minimal.toml
It doesn't get built
2023-09-22 15:59:54 +02:00
bjorn3 7a32bee728 Increase disk size for server-minimal to 128MB
64MB is no longer enough
2023-09-22 15:54:52 +02:00
bjorn3 c8a9f83c66 Add missing bootloader package entry to server-minimal.toml
Without it building fails
2023-09-22 15:50:12 +02:00
Jeremy Soller b7158212e2
Update cookbook, add openjk to jeremy config 2023-09-20 15:26:28 -06:00
Jeremy Soller d5f1d198a4
Update cookbook 2023-09-20 14:33:49 -06:00
Jeremy Soller 419d68052b
config/x86_64/jeremy: add more recipes 2023-09-20 10:51:04 -06:00
Jeremy Soller bebb92906e
Update cookbook 2023-09-20 10:50:39 -06:00
Jeremy Soller e4ee2628de
Update cookbook 2023-09-20 09:46:42 -06:00
Jeremy Soller 3a91854a43
Update relibc 2023-09-13 11:50:00 -06:00
Jeremy Soller 7137eb2cf4 Merge branch 'rw_van_230912' into 'master'
Add nushell to demo and ci configs

See merge request redox-os/redox!1367
2023-09-13 14:49:23 +00:00
Ron Williams 172761067e Add nushell to demo and ci configs 2023-09-12 18:19:11 -07:00
Jeremy Soller 69183b3bd8
Clean relibc before build 2023-09-11 12:44:10 -06:00
Jeremy Soller 984823d22c
Change d.recipe to u.recipe 2023-09-11 11:22:27 -06:00
Jeremy Soller adeac79e3e
Update relibc 2023-09-11 10:30:08 -06:00
Jeremy Soller 8edbb4765b
config/x86_64/ci: disable vice 2023-09-11 10:24:31 -06:00
Jeremy Soller ec2d83f7e2
config/x86_64/jeremy: disable vice 2023-09-11 10:02:20 -06:00
Jeremy Soller 5ab8000776
Update cookbook 2023-09-11 09:58:36 -06:00
Jeremy Soller 2899916e1b
Update relibc 2023-09-11 09:55:36 -06:00
Jeremy Soller 0ddacf08f7
Add dos2unix to ubuntu bootstrap 2023-09-11 09:28:25 -06:00
Jeremy Soller ecaac1b327
Update cookbook and relibc 2023-09-11 09:21:15 -06:00
Jeremy Soller 0125db9cca
Update cookbook 2023-09-11 08:34:58 -06:00
Jeremy Soller 87a4b14cd9
Merge branch 'master' of https://gitlab.redox-os.org/redox-os/redox 2023-09-11 08:13:28 -06:00
Jeremy Soller a17165d3c7
Update cookbook 2023-09-11 08:13:22 -06:00
Jeremy Soller 55bf0d1dc7 Use filesystem image instead of harddrive image for dual boot script 2023-09-10 20:56:54 -06:00
Jeremy Soller f338d6e86e Add dual boot script (for use with Pop) 2023-09-10 20:49:18 -06:00
Jeremy Soller d7d19ca927
Update cookbook 2023-09-09 20:04:33 -06:00
Jeremy Soller 9acc333bf6
Update cookbook 2023-09-09 19:09:11 -06:00
Jeremy Soller 3d6917e94b
Update cookbook 2023-09-09 19:02:59 -06:00
Jeremy Soller 364fa39683
Update relibc 2023-09-09 18:59:33 -06:00
Jeremy Soller 492739f877
Update cookbook and relibc 2023-09-09 12:18:22 -06:00
Jeremy Soller 10794f3c2b
Disable dash in CI due to compilation errors 2023-09-09 12:17:32 -06:00
Jeremy Soller 4400396b09
Add d.package target for unfetching, update cookbook 2023-09-09 09:15:55 -06:00
Jeremy Soller 0207a9b982
Update cookbook and relibc 2023-09-09 09:12:56 -06:00
Jeremy Soller 3d7424e8b3
Update cookbook 2023-09-09 07:54:31 -06:00
Jeremy Soller 95a419e5c6
Update cookbook 2023-09-09 07:23:02 -06:00
Jeremy Soller 0c0aa0cd08
Add xxd and libmpfr-dev to ubuntu bootstrap 2023-09-08 15:22:52 -06:00
Jeremy Soller 498deea753
Fix name of binutils tarball 2023-09-08 14:18:17 -06:00
Jeremy Soller 46677b214a
Update cookbook 2023-09-08 13:25:20 -06:00
Jeremy Soller 6f171b0ac0
Update binutils and gcc 2023-09-08 13:23:41 -06:00
Jeremy Soller ff77c39cdb
Update rust 2023-09-07 21:10:32 -06:00
Jeremy Soller 48d494f06a
Update rust to nightly-2023-09-07 2023-09-07 20:13:54 -06:00
Jeremy Soller f196ddf764 Merge branch 'master' into 'master'
Add libfuse3-dev to podman container build

See merge request redox-os/redox!1365
2023-09-01 17:28:39 +00:00
Ross Schulman d464bf3cad Add libfuse3-dev to podman container build 2023-09-01 13:11:36 -04:00
Jeremy Soller 5cd9bcf0f8 Merge branch 'rw_van_230901' into 'master'
update SHA to use fixed zlib recipe

See merge request redox-os/redox!1364
2023-08-31 23:05:41 +00:00
Ron Williams a4962bf616 update SHA to use fixed zlib recipe 2023-08-31 16:00:47 -07:00
Jeremy Soller 079025ad87 Merge branch 'add-protobuf-compiler' into 'master'
Add protobuf-compiler package

See merge request redox-os/redox!1363
2023-08-25 15:05:53 +00:00
Ribbon c8011954b6 Add protobuf-compiler package 2023-08-25 13:42:14 +00:00
Jeremy Soller 77c95bd7f6 Merge branch 'quote-tips' into 'master'
Quote the development tips on CONTRIBUTING

See merge request redox-os/redox!1362
2023-08-21 19:42:44 +00:00
Ribbon 88afdafc0b Quote the development tips on CONTRIBUTING 2023-08-21 19:35:56 +00:00
Jeremy Soller e1f665bec6
Update submodules 2023-08-21 09:43:31 -06:00
Jeremy Soller e79b5125ad Merge branch 'quote-developer-faq' into 'master'
Add the Developer FAQ on CONTRIBUTING

See merge request redox-os/redox!1361
2023-08-21 15:40:16 +00:00
Ribbon 7f3b636540 Add the Developer FAQ on CONTRIBUTING 2023-08-21 15:31:52 +00:00
Jeremy Soller 0b143007f9 Merge branch 'fix-build' into 'master'
Fix the out of space error on make image

See merge request redox-os/redox!1359
2023-08-12 00:57:06 +00:00
Jeremy Soller 9bcb69e9da Merge branch 'add-ant-package' into 'master'
Add ant package

See merge request redox-os/redox!1360
2023-08-12 00:56:14 +00:00
Ribbon 32ae16e3c3 Add ant package 2023-08-11 10:42:40 +00:00
Ribbon 6278ed9c2e Fix the out of space error on make image 2023-08-11 06:24:18 +00:00
Jeremy Soller 48562716a3 Merge branch 'add-recipes' into 'master'
Add recipes and new config on x86_64, i686 and ARM64

See merge request redox-os/redox!1358
2023-08-09 23:05:39 +00:00
Ribbon 73e0f46b5c Add recipes and new config on x86_64, i686 and ARM64 2023-08-09 21:36:17 +00:00
Jeremy Soller c23b6f3538
Update cookbook 2023-08-07 14:22:17 -06:00
Jeremy Soller df79669bab
Update relibc 2023-08-07 09:35:31 -06:00
Jeremy Soller 7925e99942 Merge branch 'cleanup' into 'master'
Improve/cleanup the HARDWARE.md

See merge request redox-os/redox!1357
2023-08-02 21:53:36 +00:00
Ribbon 932a1c699e Improve/cleanup the HARDWARE.md 2023-08-02 21:53:36 +00:00
Jeremy Soller 0115e89579
Merge branch 'master' of https://gitlab.redox-os.org/redox-os/redox 2023-08-02 12:04:31 -06:00
Jeremy Soller b8e1caa926
Update cookbook 2023-08-02 12:04:26 -06:00
Jeremy Soller 7b138cfa25 Merge branch 'add-packages' into 'master'
Add Lua/g++ packages and format the commands vertically

See merge request redox-os/redox!1355
2023-08-02 15:28:18 +00:00
Jeremy Soller c595f96713 Merge branch 'convert-hardware' into 'master'
Convert "HARDWARE.md" to global compatibility

See merge request redox-os/redox!1356
2023-08-02 15:25:59 +00:00
Jeremy Soller 2a3632cd48 Merge branch 'master' into 'master'
configs: misc changes for VT switching

See merge request redox-os/redox!1354
2023-08-02 15:11:15 +00:00
Ribbon ea16670e3e Convert "HARDWARE.md" to global compatibility 2023-07-27 19:09:29 +00:00
Ribbon e062980e4e Add Lua/g++ packages and format the commands vertically 2023-07-25 22:25:28 +00:00
Anhad Singh b33f12e6d2
configs: misc changes for VT switching
Signed-off-by: Anhad Singh <andypythonappdeveloper@gmail.com>
2023-07-25 19:26:38 +10:00
Jeremy Soller 7c9a6721e8
ci: disable pango, it is not compiling 2023-07-17 08:01:28 -06:00
Jeremy Soller a8db3fc7af Merge branch 'tracking-issues-index' into 'master'
Add tracking issues index on CONTRIBUTING

See merge request redox-os/redox!1352
2023-07-11 13:26:09 +00:00
Ribbon da6bf005d2 Add tracking issues index on CONTRIBUTING 2023-07-08 02:42:11 +00:00
Jeremy Soller 5feed0a7c6
Update cookbook 2023-07-07 09:29:42 -06:00
Jeremy Soller 3a1b960bd4
Add option for virtio networking 2023-07-07 09:23:52 -06:00
Jeremy Soller 5e89a28c5a
Add vga=virtio qemu option 2023-07-07 08:47:44 -06:00
Jeremy Soller 26cde4388c
Update jeremy configs 2023-07-07 08:24:29 -06:00
Jeremy Soller f9f8faf037
Update submodules 2023-07-07 08:22:40 -06:00
Jeremy Soller 287df06afe
Add QEMU option for rtl8139 2023-07-07 08:21:57 -06:00
Jeremy Soller d05eb5ea42 Merge branch 'master' into 'master'
configs: misc changes for GPU drivers

See merge request redox-os/redox!1351
2023-07-07 14:09:15 +00:00
Anhad Singh 8d4c36ec5e
configs: misc changes for GPU drivers
* Do not pass the display path to orbital
* Getty should open at display/vesa:2

Signed-off-by: Anhad Singh <andypythonappdeveloper@gmail.com>
2023-07-07 17:52:44 +10:00
Anhad Singh c8054080e9
configs: do not pass the display path to orbital
Signed-off-by: Anhad Singh <andypythonappdeveloper@gmail.com>
2023-07-06 16:29:44 +10:00
Jeremy Soller 7884a276a4 Merge branch 'porting-page-quote' into 'master'
Quote the "Porting Applications using Recipes" page on CONTRIBUTING

See merge request redox-os/redox!1347
2023-07-05 00:42:37 +00:00
Jeremy Soller c38794225b Merge branch 'update-tracking-issues' into 'master'
Update tracking issues

See merge request redox-os/redox!1349
2023-07-04 11:38:19 +00:00
Ribbon e6364f5ba5 Update tracking issues 2023-07-01 16:18:38 +00:00
Jeremy Soller 31ef260146
Update relibc 2023-06-30 14:54:03 -06:00
Jeremy Soller 4c7ffb7fea
Update relibc 2023-06-24 19:52:05 -06:00
Jeremy Soller c95aebe9cc Merge branch 'makefile_delete_repo' into 'master'
Delete cookbook/repo during clean

See merge request redox-os/redox!1348
2023-06-22 22:02:36 +00:00
joshua Williams 95f7597e43 Delete cookbook/repo during clean 2023-06-22 22:02:36 +00:00
Jeremy Soller ed729eb426
Update relibc 2023-06-13 07:54:30 -06:00
Ribbon 6d00f68cc9 Quote the "Porting Applications using Recipes" page on CONTRIBUTING 2023-06-11 00:30:20 +00:00
Jeremy Soller b968d2b82e
Update cookbook 2023-06-09 12:46:47 -06:00
Jeremy Soller ed0ae90353
Add pixelcannon to i686 demo 2023-06-09 12:24:37 -06:00
Jeremy Soller 3d14903793
scripts/ventoy.sh: also build and copy demo config, sync after finishing 2023-06-09 12:24:15 -06:00
Jeremy Soller 6c5658e140
Update cookbook and relibc 2023-06-09 12:24:14 -06:00
Jeremy Soller 4d86de55f4 Merge branch 'live-fix' into 'master'
Force rebuild live target like an image target

See merge request redox-os/redox!1346
2023-06-09 18:10:42 +00:00
uuuvn d8f24a0037
Force rebuild live target like an image target 2023-06-08 10:37:35 +00:00
Jeremy Soller 58243cb56b Merge branch 'build-on-aarch64-host' into 'master'
Build redox on aarch64 host

See merge request redox-os/redox!1345
2023-06-07 13:41:46 +00:00
uuuvn cdee3406af
Add server config for aarch64 target 2023-06-07 11:32:40 +00:00
uuuvn 5554ba3cd6
Allow KVM if host architecture is the same as a guest's one 2023-06-07 11:28:15 +00:00
uuuvn 28268bf703
Add support for non-x86 hosts 2023-06-06 15:31:47 +00:00
uuuvn 417c417588
Make libc6-dev-i386 and syslinux-utils required only on x86 hosts because they aren't exist in ubuntu arm repos 2023-06-06 15:31:47 +00:00
Jeremy Soller 7ce1b6d50a Merge branch 'fix-broken-bootstrap' into 'master'
Fix bootstrap.sh broken by 0661eb5d

See merge request redox-os/redox!1344
2023-06-06 15:01:24 +00:00
uuuvn 799323be97
Fix bootstrap.sh broken by 0661eb5d 2023-06-06 14:32:16 +00:00
Jeremy Soller 0661eb5d1d Merge branch 'update-platform-support' into 'master'
Complete platform support

See merge request redox-os/redox!1343
2023-06-05 23:07:40 +00:00
Ribbon dfb9e115b8 Complete platform support 2023-06-05 23:07:40 +00:00
Jeremy Soller b128c6e6b8
Update cookbook and relibc 2023-05-31 19:14:56 -06:00
Jeremy Soller 099362f546 Merge branch 'rw_van_230525' into 'master'
update cookbook SHA, correct bootstrap and containerfile libraries

See merge request redox-os/redox!1342
2023-05-27 12:43:15 +00:00
Ron Williams a970e0620f fix error in containerfile 2023-05-26 18:11:40 -07:00
Ron Williams f4ac3742d5 correct typo in Fedora libraries 2023-05-26 18:01:36 -07:00
Ron Williams 47aa0b4010 update cookbook SHA, correct bootstrap and containerfile libraries 2023-05-26 03:09:21 -07:00
Jeremy Soller e9e9cc7dda Merge branch 'rust-build-std' into 'master'
Build rustlib/src together with prefix

See merge request redox-os/redox!1340
2023-05-22 15:55:13 +00:00
uuuvn 0da79d81b4
Build rustlib/src together with prefix 2023-05-22 08:42:41 +00:00
Jeremy Soller 10e7b59314 Merge branch 'restore-libpng-dev' into 'master'
Restore libpng-dev (fix NetSurf compilation)

See merge request redox-os/redox!1339
2023-05-22 01:42:17 +00:00
Ribbon 1d79518b6b Restore libpng-dev 2023-05-22 01:04:28 +00:00
Jeremy Soller ce4ee49e7a Merge branch 'update-contributing' into 'master'
Improve/update CONTRIBUTING

See merge request redox-os/redox!1338
2023-05-21 22:53:03 +00:00
Ribbon 4737597fbb Improve/update CONTRIBUTING 2023-05-21 22:12:51 +00:00
Jeremy Soller 9ba9bc13d1 Merge branch 'master' into 'master'
Remove unused packages and add doxygen

See merge request redox-os/redox!1337
2023-05-21 11:36:39 +00:00
Jeremy Soller a288411f25
Disable retroarch recipe, update cookbook 2023-05-19 13:45:14 -06:00
Ribbon 9e6c078a97 Add doxygen package 2023-05-19 07:29:29 +00:00
Ribbon e94ddce3bc Remove unused packages 2023-05-18 23:58:33 +00:00
Jeremy Soller 7ac208cf30
Update cookbook 2023-05-18 13:18:21 -06:00
Jeremy Soller 133ed1cfef
Update cookbook 2023-05-18 12:18:52 -06:00
Jeremy Soller 20b70cdfc0
Update cookbook and relibc 2023-05-17 09:19:36 -06:00
Jeremy Soller 8afa0fed2a
Update relibc 2023-05-12 13:05:33 -06:00
Jeremy Soller fca5cc30a3
Update relibc 2023-05-11 21:00:32 -06:00
Jeremy Soller 07a483a127
Merge branch 'master' of https://gitlab.redox-os.org/redox-os/redox 2023-05-11 17:18:31 -06:00
Jeremy Soller dc6c34fcb4
Update relibc 2023-05-11 17:18:25 -06:00
Jeremy Soller f169c355a6 Merge branch 'master' into 'master'
Remove Lua packages

See merge request redox-os/redox!1336
2023-05-11 22:31:26 +00:00
Jeremy Soller 81e54a31d4
Update cookbook 2023-05-11 16:20:25 -06:00
Ribbon cb7a9e16ea Remove Lua packages 2023-05-11 22:19:25 +00:00
Jeremy Soller 5b6ef5fdcb
Update relibc 2023-05-11 14:46:55 -06:00
Jeremy Soller 4c63c0a95f
Merge branch 'master' of https://gitlab.redox-os.org/redox-os/redox 2023-05-11 12:50:46 -06:00
Jeremy Soller 59ce838bb4
Update relibc and rust 2023-05-11 12:50:41 -06:00
Jeremy Soller cefad848d7 Merge branch 'master' into 'master'
Update maintainers

See merge request redox-os/redox!1335
2023-05-11 18:17:20 +00:00
Ribbon 7129de67df Update maintainers 2023-05-11 18:17:20 +00:00
Jeremy Soller 93e81d1023 Merge branch 'master' into 'master'
Add packages

See merge request redox-os/redox!1334
2023-05-11 17:07:57 +00:00
Ribbon 827ee06fd7 Add packages 2023-05-11 17:07:57 +00:00
Jeremy Soller 08c2589611
Update relibc 2023-05-11 10:42:02 -06:00
Jeremy Soller a88aded540
Update relibc and rust 2023-05-11 08:06:49 -06:00
Jeremy Soller 7cbd57a0ec
Add ventoy script 2023-05-10 20:25:07 -06:00
Jeremy Soller b8dd0cc8cb
Add cookbook 2023-05-08 08:14:16 -06:00
Jeremy Soller 51a08c66f7
Update cookbook 2023-05-06 12:51:14 -06:00
Jeremy Soller b23109cec5
Name QEMU windows 2023-05-06 12:51:07 -06:00
Jeremy Soller b3d4e87480
Add flycast to jeremy config 2023-05-06 12:32:33 -06:00
Jeremy Soller 20d4369c27
Update cookbook and relibc 2023-05-06 08:21:44 -06:00
Jeremy Soller ce9daf6c9d
Update cookbook 2023-05-05 13:40:07 -06:00
Jeremy Soller 92ed5c09f1 Merge branch 'master' into 'master'
Fix running qemu with aarch64 on MacOS

See merge request redox-os/redox!1332
2023-05-01 13:02:08 +00:00
Jeremy Soller abe631aaa2 Merge branch 'master' into 'master'
Add build system documentation section.

See merge request redox-os/redox!1333
2023-05-01 13:01:13 +00:00
Ribbon c5d1999960 Add build system documentation section. 2023-04-30 07:26:04 +00:00
Will Angenent 025cf84c86 Fix running qemu with aarch64 on MacOS 2023-04-29 15:27:20 +01:00
Jeremy Soller a2cec65548
Update nghttp2 hash 2023-04-28 08:41:22 -06:00
Jeremy Soller 18c97102aa
Update cookbook 2023-04-27 17:35:02 -06:00
Jeremy Soller d35f81ee3a
Merge branch 'master' of https://gitlab.redox-os.org/redox-os/redox 2023-04-26 11:44:27 -06:00
Jeremy Soller e02b811d21
Update cookbook 2023-04-26 11:44:22 -06:00
Jeremy Soller 1187726034
Update cookbook 2023-04-19 10:03:12 -06:00
Jeremy Soller 94acfbe2d3
Disable relibc-tests in CI 2023-04-18 17:11:50 -06:00
Jeremy Soller e3150f7d4d
Enable cargo in CI 2023-04-18 08:41:30 -06:00
Jeremy Soller 2ae7a392a7 Merge branch 'unset-cc-and-cxx-in-prefix-build' into 'master'
Two fixes for the MacOS prefix build

Closes #1372

See merge request redox-os/redox!1331
2023-04-17 14:27:44 +00:00
Will Angenent 9b842be049 Added texinfo as a dependency for building prefix in MacOS 2023-04-15 18:41:42 +01:00
Will Angenent 2b1619c1e0 Unset CC and CXX before building prefix, since they could interfere 2023-04-15 18:33:35 +01:00
Jeremy Soller 226954e8b4
Update cookbook 2023-04-15 07:14:43 -06:00
Jeremy Soller 54465ff83c
Update relibc 2023-04-15 07:11:45 -06:00
Jeremy Soller b0ba3431be
Enable Rust recipe 2023-04-14 08:05:36 -06:00
Jeremy Soller 1cf2966573 Merge branch 'update-bootstrap-brew-macfuse' into 'master'
Update brew macfuse package

See merge request redox-os/redox!1330
2023-04-12 22:12:10 +00:00
Will Angenent 697befac25 Update brew macfuse package 2023-04-12 21:57:22 +01:00
Jeremy Soller a49bdac459 Merge branch 'update-installer' into 'master'
Update installer submodule

See merge request redox-os/redox!1329
2023-04-06 14:29:04 +00:00
Will Angenent f3a1d18cd5 Update installer submodule 2023-04-05 22:38:30 +01:00
Jeremy Soller 34ecb3c2d2 Merge branch 'update-cookbook' into 'master'
Update cookbook

See merge request redox-os/redox!1328
2023-04-05 17:50:49 +00:00
Jeremy Soller 4c17eaf028 Merge branch 'fix-missing-findutils-macos-dependency' into 'master'
Add findutils dependency for MacOS

See merge request redox-os/redox!1327
2023-04-05 14:56:11 +00:00
Will Angenent 0866e5e868 Update cookbook 2023-04-04 23:13:25 +00:00
Will Angenent 59ab34d479 Add findutils dependency for MacOS 2023-04-04 20:03:37 +01:00
Jeremy Soller 8d53d7188a
Support aarch64 GUI 2023-04-04 08:14:43 -06:00
Jeremy Soller d6a7d6b4ad
Update cookbook 2023-04-03 14:12:12 -06:00
Jeremy Soller 74272b5660
Disable cargo recipe on CI 2023-04-03 13:26:04 -06:00
Jeremy Soller 46f36939eb
Update cookbook 2023-04-03 12:44:48 -06:00
Jeremy Soller 3b7d6fc18a
Increase x86_64 demo filesystem size to 1024 MiB 2023-04-03 12:40:03 -06:00
Jeremy Soller 218ca1a534
Add makefile target to run popsicle with the live ISO 2023-04-03 12:39:43 -06:00
Jeremy Soller d7f7c399c0
Update submodules 2023-04-03 11:31:51 -06:00
Jeremy Soller 3098e30a04 Merge branch 'macos-compilation-fixes' into 'master'
A couple of MacOS build fixes

See merge request redox-os/redox!1325
2023-04-03 17:16:53 +00:00
Will Angenent 8f90fc620a Add MacOS ninja and po4a build dependencies 2023-04-02 11:29:15 +01:00
Will Angenent 09eca87a41 Fix missing ftruncate on MacOS 2023-04-02 11:16:09 +01:00
Will Angenent 9463599948 Remove unnecessary sudo from MacOS umount 2023-04-02 11:16:09 +01:00
Will Angenent 7b41f437a0 Use -u when unsetting env for better portability.
Fixes the MacOS build.
2023-04-02 11:16:09 +01:00
Jeremy Soller 0de308313c Merge branch 'fix-missing-orbutils-calculator-gentoo-dependency' into 'master'
Fix gentoo dependency for orbutils/calculator

See merge request redox-os/redox!1324
2023-03-25 13:56:16 +00:00
Will Angenent 7bf83b05ac Fix gentoo dependency for orbutils/calculator 2023-03-23 19:04:48 +00:00
Jeremy Soller 79288b2d8f Merge branch 'update-installer-and-cookbook-submodules' into 'master'
Update installer and cookbook submodules

See merge request redox-os/redox!1323
2023-03-21 21:16:09 +00:00
Jeremy Soller 5acde0ab8b Merge branch 'fix-fusermount-for-gentoo' into 'master'
Detect installed fusermount or fusermount3 binary

See merge request redox-os/redox!1322
2023-03-21 20:12:53 +00:00
Will Angenent 7ee0e985fd Update installer and cookbook submodules 2023-03-21 03:28:37 +00:00
Will Angenent b0feb1b423 Detect installed fusermount or fusermount3 binary 2023-03-21 03:02:07 +00:00
Jeremy Soller dabd655621
Update redoxfs 2023-03-20 10:24:32 -06:00
Jeremy Soller 41b0f31a2e Merge branch 'master' into 'master'
Add vim package for Fedora target.

See merge request redox-os/redox!1321
2023-03-20 12:28:43 +00:00
Ribbon ff254088b4 Add vim as Fedora dependency. 2023-03-19 12:29:02 +00:00
Jeremy Soller ce9ce1b54b
Also build redoxfs-mkfs as part of fstools 2023-03-14 12:26:34 -06:00
Jeremy Soller 90dd7bb295 Merge branch 'master' into 'master'
Add/enable recipes on TOML config files.

See merge request redox-os/redox!1320
2023-03-14 16:30:02 +00:00
Ribbon cfa08ac360 Fix typo. 2023-03-14 16:25:56 +00:00
Ribbon 933e73f203 Organize recipes in alphabetical order. 2023-03-14 16:17:19 +00:00
Jeremy Soller acb0645deb
ci: add cosmic-text 2023-03-14 09:05:10 -06:00
Ribbon 3a43bda50f Add recipes on CI. 2023-03-14 00:04:55 +00:00
Ribbon d43080272c Enable recipes on CI. 2023-03-14 00:02:21 +00:00
Ribbon cc3f639f5f Add packages on x86_64 demo build. 2023-03-11 16:56:49 +00:00
Jeremy Soller c148826057
Update relibc 2023-03-10 11:34:43 -07:00
Jeremy Soller 56288468f0
Update relibc 2023-03-10 11:24:13 -07:00
Jeremy Soller 68920ba34d
Update relibc 2023-03-10 10:45:30 -07:00
Jeremy Soller 58355aa875
Update relibc 2023-03-10 10:31:39 -07:00
Jeremy Soller 8c594c9ccc
Add acid tests to demo config 2023-03-10 09:57:16 -07:00
Jeremy Soller 7be83d4254
Add new recipes to jeremy config 2023-03-10 09:57:07 -07:00
Jeremy Soller 9bba207598
Update relibc 2023-03-10 08:41:34 -07:00
Jeremy Soller 61e516cfbd
Add rebuild-recipe script 2023-03-10 07:37:26 -07:00
Jeremy Soller bdbfaae59d Merge branch 'master' into 'master'
Remove drivers-041 from x86_64 CI.

See merge request redox-os/redox!1318
2023-03-10 14:16:13 +00:00
Jeremy Soller fe3f8a7e65
Update installer 2023-03-10 07:15:47 -07:00
Jeremy Soller a729c952af Merge branch 'rw_van_230310' into 'master'
enable build from mixed source/binary packages

See merge request redox-os/redox!1319
2023-03-10 14:15:26 +00:00
Ron Williams be957aa4d7 enable build from mixed source/binary packages 2023-03-09 23:30:33 -08:00
Ribbon d3bb5a8f6d Remove drivers-041 from x86_64 CI. 2023-03-10 04:21:33 +00:00
Jeremy Soller 189d7218f2
Update relibc 2023-03-09 20:19:39 -07:00
Jeremy Soller 4b50410d3b
Update cookbook 2023-03-09 15:02:44 -07:00
Jeremy Soller 7f40e64fde
Ensure build directory exists before touching fstools tag 2023-03-09 12:23:16 -07:00
Jeremy Soller ade8e7085a Merge branch 'rw_van_230306' into 'master'
Improve dependencies on build tools

See merge request redox-os/redox!1315
2023-03-08 20:06:11 +00:00
Jeremy Soller 0385ca384b Merge branch 'master' into 'master'
Update section of CONTRIBUTING.

See merge request redox-os/redox!1317
2023-03-08 14:31:22 +00:00
Ribbon 8b43df7ee8 Update section. 2023-03-08 02:43:45 +00:00
Jeremy Soller 062b4d2f6b Merge branch 'master' into 'master'
New section/change section title on CONTRIBUTING.

See merge request redox-os/redox!1316
2023-03-08 02:14:59 +00:00
Jeremy Soller 12b35d8495
Update cookbook 2023-03-07 16:20:02 -07:00
Ribbon bf450087e5 Improve Tracking Issues section. 2023-03-07 02:57:07 +00:00
Ribbon a6a317e064 New section/change section title. 2023-03-07 02:39:20 +00:00
Ron Williams 374e37d5b9 Improve dependencies on build tools 2023-03-06 12:41:45 -08:00
Jeremy Soller c3170d09f2
Add dosbox, games, and freepats to i686 demo 2023-03-03 20:06:25 -07:00
Jeremy Soller 09962073e2
Update relibc 2023-03-03 19:58:13 -07:00
Jeremy Soller cc100326b3
Merge branch 'master' of https://gitlab.redox-os.org/redox-os/redox 2023-03-03 19:48:31 -07:00
Jeremy Soller 730ea6bf5b
Add dash and netsurf to i686 configs 2023-03-03 19:48:02 -07:00
Jeremy Soller 13509c283d Merge branch 'master' into 'master'
Move Chat section on CONTRIBUTING.

See merge request redox-os/redox!1314
2023-03-02 22:32:27 +00:00
Ribbon 671b5e52cc Move Chat section. 2023-03-02 22:09:50 +00:00
Jeremy Soller da88bc90be Merge branch 'master' into 'master'
More improvements/cleanup of CONTRIBUTING/README.

See merge request redox-os/redox!1313
2023-03-02 15:17:00 +00:00
Ribbon c152347ffa More cleanup. 2023-03-02 08:06:59 +00:00
Ribbon 9fc9b754a1 Restore GitLab screenshots. 2023-03-02 07:54:52 +00:00
Ribbon 6d68bf5a4f Big README cleanup/improvements. 2023-03-02 07:40:53 +00:00
Ribbon d006ce6c0f Cleanup of CONTRIBUTING. 2023-03-02 07:16:12 +00:00
Ribbon 5f15a75f7a Little changes. 2023-03-01 23:03:41 +00:00
Jeremy Soller 71b1a30e98 Merge branch 'master' into 'master'
Little changes on CONTRIBUTING.

See merge request redox-os/redox!1312
2023-03-01 21:45:26 +00:00
Ribbon 6845f811f1 Little changes. 2023-03-01 21:36:59 +00:00
Jeremy Soller e125b4fba0 Merge branch 'master' into 'master'
Small CONTRIBUTING improvements.

See merge request redox-os/redox!1311
2023-03-01 21:03:12 +00:00
Ribbon 0f666cecb9 Little change on CONTRIBUTING. 2023-03-01 20:55:37 +00:00
Ribbon 3bd033a533 Improve CONTRIBUTING. 2023-03-01 20:47:51 +00:00
Jeremy Soller b4b657ecd1
ci: add freepats package 2023-03-01 13:47:08 -07:00
Jeremy Soller 9145a42b23 Merge branch 'master' into 'master'
Correct License information.

See merge request redox-os/redox!1310
2023-03-01 20:27:37 +00:00
Jeremy Soller cee3cef510
Build installer before make ci-img 2023-03-01 13:27:09 -07:00
Ribbon c5194362a1 Correct License information. 2023-03-01 20:18:19 +00:00
Jeremy Soller cdf9a708f0
GitLab CI: Set REPO_BINARY=1 2023-03-01 13:04:58 -07:00
Jeremy Soller bfde266b90
Restore dependency install from old CI script 2023-03-01 12:44:37 -07:00
Jeremy Soller bcb81e3e3f
GitLab CI: Set PATH to include rustup before bootstrap 2023-03-01 12:11:51 -07:00
Jeremy Soller b568b4d53e
Go back to GIT_STRATEGY clone for gitlab CI 2023-03-01 12:00:13 -07:00
Jeremy Soller 1ff5252a3a
Go back to default GIT_STRATEGY 2023-03-01 11:50:15 -07:00
Jeremy Soller a347c53de6
Do not use sudo for gitlab CI 2023-03-01 11:49:58 -07:00
Jeremy Soller d4bc4c38a1
Install curl for gitlab CI 2023-03-01 11:42:57 -07:00
Jeremy Soller 29f8be9f65
Force clone in gitlab CI 2023-03-01 11:38:18 -07:00
Jeremy Soller a675725d7a
Install rustup in gitlab CI 2023-03-01 11:36:51 -07:00
Jeremy Soller b5d5d69589
Fix bootstrap script path in gitlab CI 2023-03-01 11:32:53 -07:00
Jeremy Soller 4db6bc6da5
Simplify Redox CI 2023-03-01 11:22:47 -07:00
Jeremy Soller d213812197 Merge branch 'master' into 'master'
Fix book link.

See merge request redox-os/redox!1309
2023-03-01 16:29:12 +00:00
Ribbon 6c0d200c08 Fix book link. 2023-03-01 16:09:22 +00:00
Jeremy Soller 359a3b30c2 Merge branch 'master' into 'master'
Improvements/cleanup on CONTRIBUTING.

See merge request redox-os/redox!1308
2023-03-01 15:15:30 +00:00
Ribbon 2eb18ab097 Move a list of repositories from Community website page. 2023-03-01 04:22:45 +00:00
Ribbon 74316e71e9 More cleanup of CONTRIBUTING. 2023-03-01 00:07:12 +00:00
Ribbon 0d8656c3e4 Improve organization and cleanup. 2023-02-28 23:53:52 +00:00
Ribbon cbd5868956 Move section from book and new section. 2023-02-28 21:05:55 +00:00
Jeremy Soller f26bbff55e Merge branch 'master' into 'master'
Cleanup CONTRIBUTING (deduplication/old stuff).

See merge request redox-os/redox!1306
2023-02-28 12:30:15 +00:00
Ribbon 65687a1962 Add a "License" section. 2023-02-28 09:23:53 +00:00
Ribbon 0f4a97e919 More cleanup/improvements. 2023-02-28 08:52:59 +00:00
Ribbon 84f87c2892 Remove kernel section/HTML syntax and update internal hyperlinks. 2023-02-28 08:18:45 +00:00
Ribbon f42a7ebb16 Cleanup CONTRIBUTING (deduplication/old stuff). 2023-02-27 19:42:16 +00:00
Jeremy Soller 4238c91f20
Update cookbook 2023-02-25 10:05:46 -07:00
Jeremy Soller b87fb11f7f
Ensure symlinks are located in find-recipe.sh 2023-02-25 09:35:43 -07:00
Jeremy Soller 0eb41b7820
Remove old changelog.sh 2023-02-25 09:33:00 -07:00
Jeremy Soller 1156bf27e6
Add find-recipe.sh, move changelog.sh to scripts 2023-02-25 09:32:35 -07:00
Jeremy Soller bbeb98c7e9 Merge branch 'master' into 'master'
Update Fedora dependencies.

See merge request redox-os/redox!1305
2023-02-25 15:54:34 +00:00
Jeremy Soller 383003220c
Add f.recipe target to fetch recipes 2023-02-25 08:48:08 -07:00
Alberto Souza 0b596d60d3 Update Fedora dependencies. 2023-02-25 03:21:48 +00:00
Jeremy Soller cc0988389a ci: disable pkg-config 2023-02-24 18:31:36 -07:00
Jeremy Soller 4533e67721 Do not build orbutils split packages 2023-02-24 18:25:59 -07:00
Jeremy Soller a772152eea
Update cookbook 2023-02-24 08:31:42 -07:00
Jeremy Soller 3a276cac3b Merge branch 'master' into 'master'
Delete Podman README.

See merge request redox-os/redox!1304
2023-02-21 19:48:32 +00:00
Alberto Souza 36c154b311 Delete Podman README. 2023-02-21 19:42:57 +00:00
Jeremy Soller 3c63648d19
Remove all references to xargo 2023-02-21 11:53:37 -07:00
Jeremy Soller 91dc948dd6
Update relibc 2023-02-13 08:32:22 -07:00
Jeremy Soller 454560ce59
Update cookbook 2023-02-11 20:17:16 -07:00
Jeremy Soller bbfbb4f501
Update cookbook 2023-02-11 20:02:08 -07:00
Jeremy Soller fa8e72b3eb
Add cargo to jeremy config 2023-02-11 17:06:31 -07:00
Jeremy Soller 534d3d943f
Update cookbook 2023-02-11 17:05:57 -07:00
Jeremy Soller 58bd82c249
Update cookbook 2023-02-11 16:54:54 -07:00
Jeremy Soller 5a0567d25a
Update submodules 2023-02-11 14:52:32 -07:00
Jeremy Soller acb1675eca
Update cookbook 2023-02-11 14:06:40 -07:00
Jeremy Soller 0427f3ff8c
Update Rust to nightly-2023-01-21 2023-02-11 14:01:00 -07:00
Jeremy Soller f52ec7e30f Merge branch 'master' into 'master'
Restore a command (deleted in my branch to fix MR conflict).

See merge request redox-os/redox!1303
2023-02-08 19:52:47 +00:00
Alberto Souza 32d763e65d Restore a command (deleted in my branch to fix MR conflict). 2023-02-08 19:49:53 +00:00
Jeremy Soller 8760b5a47a Merge branch 'master' into 'master'
Add book maintainer, improve the build section and cleanup old stuff.

See merge request redox-os/redox!1302
2023-02-08 19:41:30 +00:00
Alberto Souza 0561954977 Add book maintainer, improve the build section and cleanup old stuff. 2023-02-08 19:39:27 +00:00
Jeremy Soller fea33aaec5 Merge branch 'hatred_45-master-patch-05095' into 'master'
Update Redox chat link, cleanup old stuff, add "make rebuild" command and update contribute link.

See merge request redox-os/redox!1300
2023-02-06 13:13:00 +00:00
Alberto Souza 7d45f8a106 Improve explanation. 2023-02-06 11:02:34 +00:00
Alberto Souza 2b6d8d9615 Add/cleanup stuff. 2023-02-06 10:50:45 +00:00
Alberto Souza 4a5bfa56fd Update Redox chat and cleanup old stuff. 2023-02-06 10:19:55 +00:00
Jeremy Soller a3200daca9 Merge branch 'master' into 'master'
Add new Fedora packages to fix compilation errors on bootstrap.

See merge request redox-os/redox!1298
2023-02-05 12:57:38 +00:00
Alberto Souza ac651d93bc Add new Fedora packages to fix compilation errors on bootstrap. 2023-02-05 06:42:48 +00:00
Jeremy Soller 9792ff63a0
Add i686 demos 2023-01-30 10:56:02 -07:00
Jeremy Soller 8f37e0deb5 Add vga=multi argument 2023-01-20 11:53:29 -07:00
Jeremy Soller b42080deca Add clean target for individual recipes 2023-01-20 11:53:05 -07:00
Jeremy Soller 0cc2a5e4f4 Update cookbook 2023-01-20 10:53:54 -07:00
Jeremy Soller a02a19e871 Update cookbook 2023-01-20 10:44:06 -07:00
Jeremy Soller eb49efa7ba Update cookbook 2023-01-20 09:39:20 -07:00
Jeremy Soller d9e4a899f6 Update cookbook 2023-01-18 11:00:34 -07:00
Jeremy Soller c98b91258f Update relibc 2023-01-17 22:12:02 -07:00
Jeremy Soller 1ccf80862e Update cookbook 2023-01-12 21:20:25 -07:00
Jeremy Soller 4bd7cf6246 Add installer-gui to all desktop configurations 2023-01-12 09:40:46 -07:00
Jeremy Soller 7f0e2a8f98 Update relibc 2023-01-12 08:14:10 -07:00
Jeremy Soller 8fe50e761b Update cookbook 2023-01-12 07:17:09 -07:00
Jeremy Soller 48a011a66a Make image target remove live disk too 2023-01-11 21:31:21 -07:00
Jeremy Soller f823cce0aa Update installer 2023-01-11 14:12:16 -07:00
Jeremy Soller b199398c1d Fix qemu disk argument 2023-01-11 11:01:09 -07:00
Jeremy Soller 163953aa22 Merge branch 'rw_van_221221' into 'master'
Set PODMAN_BUILD=1 in .config

See merge request redox-os/redox!1297
2022-12-21 07:26:45 +00:00
Ron Williams 45bc844d85 Set PODMAN_BUILD=1 in .config 2022-12-20 20:20:42 -08:00
Jeremy Soller 7cdff1157e
Update cookbook 2022-12-19 13:26:06 -07:00
Jeremy Soller 9624682161
Update cookbook and relibc 2022-12-19 10:21:52 -07:00
Jeremy Soller 291f29df91 Update cookbook and relibc 2022-12-19 09:10:30 -07:00
Jeremy Soller 5b4ee80e10 Build Rust source tarball as part of rust-install 2022-12-18 08:06:28 -07:00
Jeremy Soller 8a69678ea5
Update cookbook 2022-12-17 07:25:26 -07:00
Jeremy Soller ffa17eaeb1 Merge branch 'rw_van_221216' into 'master'
Add image and r.PACKAGE targets

See merge request redox-os/redox!1296
2022-12-17 03:33:05 +00:00
Ron Williams 1bc9362245 Add image and r.PACKAGE targets 2022-12-16 19:23:19 -08:00
Jeremy Soller 8a4b12150b Add mednafen to jeremy config 2022-12-16 20:16:46 -07:00
Jeremy Soller 26e94389bc Update cookbook and relibc 2022-12-16 20:16:37 -07:00
Jeremy Soller c8aaa9b635
Update cookbook 2022-12-16 14:39:05 -07:00
Jeremy Soller 1ddf22a3d6
Add pathfinder to jeremy config 2022-12-16 10:31:58 -07:00
Jeremy Soller 09a231886e
Update cookbook 2022-12-16 10:29:03 -07:00
Jeremy Soller 1627808cf4
Add webrender to jeremy config 2022-12-15 11:56:57 -07:00
Jeremy Soller 42727be046
Merge branch 'master' of https://gitlab.redox-os.org/redox-os/redox 2022-12-15 11:56:24 -07:00
Jeremy Soller 8c48292181
Update cookbook 2022-12-15 11:56:17 -07:00
Jeremy Soller 2368bf774c Add hematite to jeremy config 2022-12-14 20:08:17 -07:00
Jeremy Soller 7203d2965c Add noto emoji and re-enable libcosmic in jeremy config 2022-12-09 11:43:40 -07:00
Jeremy Soller 83ad194b85 Update cookbook 2022-12-09 11:37:26 -07:00
Jeremy Soller e116e662e5
Update cookbook 2022-12-08 09:15:56 -07:00
Jeremy Soller 34219da199 Update cookbook 2022-12-07 22:36:16 -07:00
Jeremy Soller 7ae94b8776
Update cookbook 2022-12-06 15:36:05 -07:00
Jeremy Soller 3e19af6055
Add pop icon theme to jeremy config, update cookbook 2022-12-06 09:48:04 -07:00
Jeremy Soller 5a73d24240
Update cookbook 2022-12-06 08:44:20 -07:00
Jeremy Soller ef1f52fb67
Add iced and re-inable winit in jeremy config 2022-12-06 07:25:35 -07:00
Jeremy Soller 93fcb74f84
Add more packages to jeremy i686 config 2022-12-05 14:32:33 -07:00
Jeremy Soller c21467e4ac
Update cookbook 2022-12-05 14:29:46 -07:00
Jeremy Soller a994894017
Update cookbook 2022-12-05 08:54:12 -07:00
Jeremy Soller b779976c5c Merge branch 'podman-fontconfig' into 'master'
Add libfontconfig to podman container file

See merge request redox-os/redox!1295
2022-12-04 14:51:34 +00:00
Florian Blasius c0abcd39ac Update podman/redox-base-containerfile 2022-12-04 14:46:19 +00:00
Jeremy Soller 42acdf1089
Fix CI image build 2022-12-02 17:22:44 -07:00
Jeremy Soller 9d9ca8cba8
Update cookbook 2022-12-02 10:45:32 -07:00
Jeremy Soller 72f120a70d
Update cookbook 2022-12-02 08:26:06 -07:00
Jeremy Soller 40f7f9796d
Update relibc and rust 2022-12-02 08:15:52 -07:00
Jeremy Soller ed5197f9fd
Update rust 2022-12-01 20:05:34 -07:00
Jeremy Soller dc02cb7898
Update cookbook and rust 2022-12-01 18:47:32 -07:00
Jeremy Soller 939f81a0b5
Update relibc 2022-12-01 18:33:10 -07:00
Jeremy Soller ea5fe6b3cd
Disable winit (due to missing tzset) 2022-12-01 14:55:25 -07:00
Jeremy Soller 85dbbd0269
Add pixelcannon to demo 2022-12-01 14:36:33 -07:00
Jeremy Soller 5dfb24f01b
Update relibc 2022-12-01 14:31:10 -07:00
Jeremy Soller 9a1d06a48c
Update cookbook 2022-12-01 14:30:57 -07:00
Jeremy Soller 0534532e8f
Add crates.io index to dev config 2022-11-30 18:14:52 -07:00
Jeremy Soller 78650fed61
Update cookbook 2022-11-30 18:14:36 -07:00
Jeremy Soller 862342041a
Update cookbook 2022-11-30 08:16:55 -07:00
Jeremy Soller 8c657e50fb Merge branch 'rw_van_221126' into 'master'
Add dependencies for Neverball, plus podman.mk fixes

See merge request redox-os/redox!1294
2022-11-27 10:10:44 +00:00
Ron Williams eb49e17fc2 Fix indents in bootstrap.sh 2022-11-26 21:11:47 -08:00
Ron Williams aea97d0a11 Update podman and bootstrap for Neverball 2022-11-26 21:07:04 -08:00
Jeremy Soller e82bbf053e Merge branch 'hw_lenovo_g570' into 'master'
HARDWARE.md: Add Lenovo G570

See merge request redox-os/redox!1293
2022-11-24 20:55:03 +00:00
Nagy Tibor 64ce34d957 HARDWARE.md: Add Lenovo G570 2022-11-24 21:46:15 +01:00
Jeremy Soller 42a29bb903 Merge branch 'hw_asus_x554l' into 'master'
HARDWARE.md: Add Asus X554L

See merge request redox-os/redox!1292
2022-11-24 14:09:28 +00:00
Nagy Tibor e9160396ed HARDWARE.md: Add Asus X554L 2022-11-24 14:25:57 +01:00
78 changed files with 2765 additions and 3263 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
/build/
/prefix/
.config
**/my_*

View File

@ -1,11 +1,12 @@
image: "ubuntu:20.04"
image: "ubuntu:22.04"
variables:
GIT_STRATEGY: "pull"
GIT_STRATEGY: "clone"
GIT_SUBMODULE_STRATEGY: "recursive"
GIT_CHECKOUT: "true"
before_script:
# Disable the wget progress bar
- echo 'show-progress = off' >> ~/.wgetrc
- |
export DEBIAN_FRONTEND=noninteractive
apt-get update -qq &&
@ -13,31 +14,27 @@ before_script:
bison \
build-essential \
curl \
dosfstools \
flex \
fuse \
genisoimage \
fuse3 \
git \
gnupg \
libfuse-dev \
nasm \
parted \
pkg-config \
software-properties-common \
syslinux \
syslinux-utils \
texinfo \
wget &&
wget \
zstd &&
curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none
img:
script:
- |
source "$HOME/.cargo/env" &&
cargo install --version 0.1.1 cargo-config &&
cargo install cargo-xbuild &&
cargo install --version 0.3.20 xargo &&
make ci-img IMG_TAG=$CI_COMMIT_REF_NAME
curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash &&
cargo binstall --no-confirm --version 0.1.1 cargo-config &&
cargo binstall --no-confirm --version 1.16.0 just &&
cargo binstall --no-confirm --version 0.26.0 cbindgen &&
cargo build --manifest-path installer/Cargo.toml --release &&
make ci-img IMG_TAG=$CI_COMMIT_REF_NAME REPO_BINARY=1
artifacts:
paths:
- build/img/

3
.gitmodules vendored
View File

@ -9,7 +9,8 @@
[submodule "rust"]
path = rust
url = https://gitlab.redox-os.org/redox-os/rust.git
branch = redox-2022-03-18
branch = redox-2023-09-07
update = none
[submodule "redoxfs"]
path = redoxfs
url = https://gitlab.redox-os.org/redox-os/redoxfs.git

View File

@ -1,205 +1,141 @@
# Contributing to Redox
_**Thank you for your interest in contributing to Redox!** This document will outline the basics of where to start if you wish to contribute to the project. There are many ways to help us out and and we appreciate all of them. We look forward to **your contribution**!_
**Thank you for your interest in contributing to Redox!**
## Index
This document will outline the basics of where to start if you wish to contribute to the project. There are many ways to help us out and and we appreciate all of them. We look forward to **your contribution!**
* [Communication](#communication)
* [Chat](#chat)
* [GitLab Issues](#issues)
* [Pull Requests](#prs)
* [Discourse](#discourse)
* [Reddit](#reddit)
* [News](#news)
* [Code Contributions](#code-contributions)
* [Low-Hanging Fruit - Easy Targets for Newbies](#easy-targets)
* [Creating a Pull Request](#creating-a-pr)
* [Best Practices/Guidelines](#best-practices)
* [General](#general)
* [Kernel](#kernel)
* [Testing Practices](#testing-practices)
* [Style Guidelines](#style-guidelines)
* [Rust](#rust-style-guidelines)
* [Git](#git-style-guidelines)
* [Other Ways to Contribute](#other)
* [Graphic Design](#graphic-design)
* [Patreon](#patreon)
## Code Of Conduct
## <a name="extern-links"> Other External Links </a>
We follow the [Rust Code Of Conduct](https://www.rust-lang.org/policies/code-of-conduct).
* [redox-os.org](https://redox-os.org)
* [rust-os-comparison](https://github.com/flosse/rust-os-comparison)
* [rust-lang.org](http://rust-lang.org)
## License
## <a name="communication"> Communication </a>
In general, your contributions to Redox are governed by the [MIT License](https://en.wikipedia.org/wiki/MIT_License). Each project repository has a `LICENSE` file that provides the license terms for that project.
### <a name="chat"> Chat </a>
Please review the LICENSE for the project you are contributing to.
The quickest and most open way to **communicate with the Redox team** is on our **chat server**. Currently, you can only get an invite by sending an email request to [info@redox-os.org](mailto:info@redox-os.org), which might take a little while, since it's not automated. Simply say you'd like to join the chat. We're working on an better way to do this, but this is the best way right now.
On [this](https://doc.redox-os.org/book/ch01-02-philosophy.html) page we explain why we use the MIT license.
### <a name="issues"> GitLab Issues </a>
## Chat
A bit more formal way of communication with fellow Redox devs, but a little less quick and convenient like the chat. Submit an issue when you run into problems compiling, testing, or just would like to discuss a certain topic, be it _features, code style, code inconsistencies, minor changes and fixes, etc._
Join us on [Matrix Chat](https://doc.redox-os.org/book/ch13-01-chat.html) to discuss issues or ask questions.
### <a name="prs"> Pull Requests </a>
## Important Places to Contribute
It's fine to just submit a small pull request without first making an issue or asking in the chat, **unless** it's a significant change that will require a lot of planning and reviewing. Also see [Creating a Pull Request](#creating-a-pr) and [Git Style Guidelines](#git-style-guidelines).
(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/))
### <a name="discourse"> Discourse </a>
You can contribute to the Redox documentation and code on these repositories:
We have a **discourse forum** at [discourse.redox-os.org](https://discourse.redox-os.org). This is the best way to discuss more general topics that aren't about specific things that need to be addressed one way or another. You can sign up like any other website.
(The order is based on difficulty, easy things first)
### <a name="reddit"> Reddit </a>
- [Website](https://gitlab.redox-os.org/redox-os/website)
- [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) - 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) - Device daemons
- [Kernel](https://gitlab.redox-os.org/redox-os/kernel)
You can also find **Redox on Reddit** in [/r/rust/](https://www.reddit.com/r/rust) and [/r/redox/](https://www.reddit.com/r/redox). Redox news and discussion is posted on the latter, and Rust news and discussion, as well as some Redox posts, is on the former.
### Skill Levels
### <a name="news"> News </a>
If you aren't fluent in Rust:
News and updates for Redox are posted at [redox-os.org/news](https://redox-os.org/news). It's more one-way than the other things on this list, but it should provide a good summary of what's been going on with the project lately. It's usually updated weekly, but with some exceptions. A mailing list may be included eventually, but it's not set up right now.
- 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)
- Write unit tests (may require minimal knowledge of Rust)
## <a name="code-contributions"> Code Contributions </a>
If you are fluent in Rust, but not operating system Development:
### <a name="easy-targets"> Low-Hanging Fruit - Easy Targets for Newbies </a>
- 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
#### If you're not fluent in Rust:
If you are fluent in Rust, and have experience with operating system development:
* Writing _documentation_
* **Using/testing Redox**, filing issues for bugs and needed features
* **Web development** ([Redox website, separate repo](https://gitlab.redox-os.org/redox-os/website))
* **Writing unit tests** (may require minimal knowledge of rust)
- Familiarize yourself with the repository and code
- Grep for `TODO`, `FIXME`, `BUG`, `UNOPTIMIZED`, `REWRITEME`, `DOCME`, and `PRETTYFYME` and fix the code you find
- Update old code to remove warnings
- Improve and optimize code, especially in the kernel
- Write device drivers
#### If you are fluent in Rust, but not OS Development:
For those who want to contribute to the Redox GUI, our GUI strategy has recently changed.
* **Apps** development
* **Shell** ([Ion](https://gitlab.redox-os.org/redox-os/ion)) development
* **Package management** ([pkgutils](https://gitlab.redox-os.org/redox-os/pkgutils)) development
* Other high-level code tasks
- 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.
#### If you are fluent in Rust, and have experience with OS Dev:
## Tracking Issues Index
* Familiarize yourself with the repository and codebase
* Grep for `TODO`, `FIXME`, `BUG`, `UNOPTIMIZED`, `REWRITEME`, `DOCME`, and `PRETTYFYME` and fix the code you find.
* **Improve and optimize code, especially in the kernel**
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.
### <a name="creating-a-pr"> Creating a Pull Request </a>
## Build System
**1**. _**Fork**_ the repository
You can find the Redox build system organization and commands on [this](https://doc.redox-os.org/book/ch08-06-build-system-reference.html) page.
**2**. Clone the _original repository_ to your local PC using one of the following commands based on the protocol you are using:
* HTTPS:`git clone https://gitlab.redox-os.org/redox-os/redox.git --origin upstream --recursive`
* SSH:`git clone git@gitlab.redox-os.org:redox-os/redox.git --origin upstream --recursive`
* Then rebase: `git rebase upstream master`
If you use HTTPS, you will have to log in each time when pushing to your fork. (Recommended: learn about git SSH support, it logs in automatically using SSH keys)
**3**. **Add** your fork with
* HTTPS:`git remote add origin https://gitlab.redox-os.org/your-username/redox.git`
* SSH:`git remote add origin git@gitlab.redox-os.org:your-username/redox.git`
**4**. Alternatively, if you already have a fork and copy of the repo, you can simply check to **make sure you're up-to-date**
* Pull the upstream:`git pull upstream --rebase`
* Update the submodules:`git submodule update --recursive --init`
**5**. Create a _**separate branch**_ (recommended if you're making multiple changes simultaneously) (`git checkout -b my-branch`)
## Developer FAQ
**6**. _Make changes_
You can see the most common questions and problems on [this](https://doc.redox-os.org/book/ch09-07-developer-faq.html) page.
**7**. **Commit** (`git add <item(s) you changed>; git commit`) and write your commit message
## Porting Software
**8**. Optionally run [rustfmt](https://github.com/rust-lang-nursery/rustfmt) on the _files you changed_ and commit again if it did anything (check with `git diff` first)
You can read how to use the Cookbook recipe system to port applications on [this](https://doc.redox-os.org/book/ch09-03-porting-applications.html) page.
**9**. Test your changes by **cleaning** (`make clean; git clean -Xfd`) and **building** with `make qemu` (you might have to use `make qemu kvm=no`) or `make virtualbox`.
(see [Best Practices and Guidelines](#best-practices))
## Libraries and APIs
**10**. _**Pull**_ from upstream (`git pull upstream --rebase`) (Note: Make sure to include `--rebase`, as it will apply your changes on top of the changes you just pulled, allowing for a much cleaner merge)
You can read [this](https://doc.redox-os.org/book/ch09-06-libraries-apis.html) page to learn about the libraries and APIs used in Redox.
**11**. Repeat step **9** to make sure the rebase still builds and starts
## Development Tips
**12**. Push to **your fork** (`git push origin <branch>`), `<branch>` being the branch you created earlier
You can find important tips on [this](https://doc.redox-os.org/book/ch09-02-coding-and-building.html#development-tips) section.
**13**. Create a _pull request_
## References
**14**. If your changes are _minor_, you can just describe them in a paragraph or less. If they're _major_, please fill out the provided form.
We maintain a list of wikis, articles and videos to learn Rust, OS development and computer science on [this](https://doc.redox-os.org/book/ch09-08-references.html) page.
**15. Submit!**
If you are skilled there's a possibility that they could improve your knowledge in some way.
## <a name="best-practices"> Best Practices and Guidelines </a>
## Best Practices and Guidelines
### <a name="general"> General </a>
You can read the best practices and guidelines on [this](https://doc.redox-os.org/book/ch11-00-best-practices.html) chapter.
* **Remember to do a `git rebase -i upstream/master` before you send your patch!**
* **Make sure your code is readable, commented, and well-documented.**
* **Don't hesitate to ask for help, comments or suggestions!**
* **Before implementing something, discuss it! Open an issue, or ask in the chat.**
## Style Guidelines
##### On the more technical side:
* Test, test, and test!
* Follow the style conventions (See [rust style guidelines](#rust-style-guidelines))
* Use `std::mem::replace` and `std::mem::swap` when you can.
* `libredox` should be 1-to-1 with the official `libstd`.
* Prefer `.into()` and `.to_owned()` over `.to_string()`.
* Prefer passing references to the data over owned data. (Don't take `String`, take `&str`. Don't take `Vec<T>` take `&[T]`).
* Use generics, traits, and other abstractions Rust provides.
* Avoid using lossy conversions (for example: don't do `my_u32 as u16 == my_u16`, prefer `my_u32 == my_u16 as u32`).
* Prefer in place (`box` keyword) when doing heap allocations.
* Prefer platform independently sized integer over pointer sized integer (`u32` over `usize`, for example).
* Follow the usual idioms of programming, such as "composition over inheritance", "let your program be divided in smaller pieces", and "resource acquisition is initialization".
* When `unsafe` is unnecessary, don't use it. **Longer safe code is better than shorter unsafe code!**
* Be sure to mark parts that need work with `TODO`, `FIXME`, `BUG`, `UNOPTIMIZED`, `REWRITEME`, `DOCME`, and `PRETTYFYME`. Always elaborate on these messages, too. Nothing is more annoying than seeing a `TODO` and not knowing how to actually fix it.
* Use the compiler hint attributes, such as `#[inline]`, `#[cold]`, etc. when it makes sense to do so.
* Check the [chat](#chat), [the website](http://redox-os.org/news), and [the Rust subreddit](https://www.reddit.com/r/rust) frequently.
### Rust
### <a name="kernel"> Kernel </a>
Since **Rust** is a relatively small and new language compared to others like C and C++, there's really only one standard. Just follow the official Rust standards for formatting, and maybe run `rustfmt` on your changes, until we setup the CI system to do it automatically.
* When trying to access a slice, **always** use the `common::GetSlice` trait and the `.get_slice()` method to get a slice without causing the kernel to panic.
The problem with slicing in regular Rust, e.g. `foo[a..b]`, is that if someone tries to access with a range that is out of bounds of an array/string/slice, it will cause a panic at runtime, as a safety measure. Same thing when accessing an element.
Always use `foo.get(n)` instead of `foo[n]` and try to cover for the possibility of `Option::None`. Doing the regular way may work fine for applications, but never in the kernel. No possible panics should ever exist in kernel space, because then the whole OS would just stop working.
### Git
### <a name="testing-practices"> Testing Practices </a>
Please follow our [Git style](https://doc.redox-os.org/book/ch12-04-creating-proper-pull-requests.html) for pull requests.
* It's always better to test boot (`make qemu` or `make virtualbox`) every time you make a change, because it is important to see how the OS boots and works after it compiles.
Even though Rust is a safety-oriented language, something as unstable and low-level as an in-dev operating system will almost certainly have problems in many cases and may completely break on even the slightest critical change.
Also, make sure you check how the unmodified version runs on your machine before making any changes. Else, you won't have anything to compare to, and it will generally just lead to confusion. TLDR: Rebuild and test boot often.
## GitLab
* To run the **ZFS** tests:
* Create the zfs.img only once. If one has not been created, run `make filesystem/apps/zfs/zfs.img` before booting into Redox.
* Run `open zfs.img` to open the created ZFS image.
* Run `file /home/LICENSE.md` twice to ensure ARC isn't broken.
### Issues
## <a name="style-guidelines"> Style Guidelines </a>
To know how to create issues on the Redox GitLab, read [this](https://doc.redox-os.org/book/ch12-05-filing-issues.html) page.
### <a name="rust-style-guidelines"> Rust </a>
### Pull Requests
Since **Rust** is a relatively small and new language compared to others like _C_, there's really only one standard. Just follow the official Rust standards for formatting, and maybe run `rustfmt` on your changes, until we setup the CI system to do it automatically.
Please follow [our process](https://doc.redox-os.org/book/ch12-04-creating-proper-pull-requests.html) for creating proper pull requests.
### <a name="git-style-guidelines"> Git </a>
## Other Ways to Contribute
* You should have a fork of the repository on **GitHub** and a local copy on your computer. The local copy should have two remotes; `upstream` and `origin`, `upstream` should be set to the main repository and `origin` should be your fork.
* When you start to make changes, you will want to create a separate branch, and keep the `master` branch of your fork identical to the main repository, so that you can compare your changes with the main branch and test out a more stable build if you need to.
* Usually, when syncing your local copy with the master branch, you'll want to rebase instead of merge. This is because it will create duplicate commits that don't actually do anything when merged into the master branch. You can do this in one command with `git pull upstream --rebase`. This will pull from the upstream, then roll back to the current state of the upstream, and "replay" your changes on top of it. Make sure you commit before doing this, though. Git won't be able to rebase if you don't.
* Prefer to omit the `-m` when using `git commit`. This opens your editor and should help get you in the habit of writing longer commit messages.
* Commit messages should describe their changes in present tense, e.g. "`Add stuff to file.ext`" instead of "`added stuff to file.ext`". This makes sense as sometimes when you revert back, then run through commits one-by-one, you want to see what a commit will do, instead of just what the person did when they made the commit. It's also just being consistent.
* Try to remove useless duplicate/merge commits from PRs as these don't do anything except clutter up history and make it harder to read.
If you aren't good on coding, but you still want to help keep the project going, you can contribute and support in a variety of ways! We'll try to find a way to use anything you have to offer.
## <a name="other"> Other Ways to Contribute </a>
### Design
If you're not big on coding, but you still want to help keep the project going, you can still contribute/support in a variety of ways! We'll try to find a way to use anything you have to offer.
If you're a good designer, whether it's 2D graphics, 3D graphics, interfaces, web design, you can help. We need logos, UI design, UI skins, app icons, desktop backgrounds, etc.
### <a name="design"> Design </a>
- [Redox backgrounds](https://gitlab.redox-os.org/redox-os/backgrounds) - You can send your wallpapers on this repository.
- [Redox assets](https://gitlab.redox-os.org/redox-os/assets) - You can send your logos, icons and themes on this repository.
If you're a good designer, whether it's _2D graphics, 3D graphics, interfaces, web design, you can help. We need logos, UI design, UI skins, app icons, desktop backgrounds, etc_. More information to come on this in the future, for now just join [the chat](#chat) and ask about graphic design.
If you have questions about the graphic design, ask us on the [Chat](https://doc.redox-os.org/book/ch13-01-chat.html).
### <a name="patreon"> Patreon </a>
Our **BDFL**, [jackpot51](https://gitlab.redox-os.org/jackpot51), has a [Patreon campaign](https://www.patreon.com/redox_os)! **All money received will go towards Redox OS development**. If you donate, you will be listed in the **Redox credits** as one of the people that made Redox OS possible. You'll also get other rewards the more you donate. However, please don't donate if you can't afford it.
<!--
POSSIBLE OTHER TOPICS TO INCLUDE
- Merch (maybe in the future)
- Sound Design (things like notifications, popups, etc. for orbital)
- Video Production/Motion Graphics (tutorials, introduction videos, etc.)
- Non-Rust programming, scripting, etc. (if we even have a need for this)
- Hosting/download/git mirrors (this is not needed right now, but when downloads increase it may be necessary)
-->
### Donate to Redox
If you are interested in donating to the Redox OS Nonprofit, you can find instructions [here](https://www.redox-os.org/donate/).

View File

@ -1,123 +1,327 @@
# Redox 0.8.0 Hardware Compatibility
# Hardware Compatibility
Updated on November 11, 2022 in preparation for the 0.8.0 release. Systems are
rated on a scale of 🚫 Broken, ⚠️ Booting, and ✅ Recommended. Broken means the
system cannot boot to a desktop, booting means the system boots to a desktop
but has issues, and recommended means the system provides all implemented
features.
This document tracks the current hardware compatibility of Redox.
- [Status](#status)
- [General](#general)
- [Template](#template)
- [x86-64](#x86-64)
- [System76](#system76)
- [Dell](#dell)
- [HP](#hp)
- [ASUS](#asus)
- [Lenovo](#lenovo)
- [Toshiba](#toshiba)
- [Custom](#custom)
- [i686](#i686)
- [Dell](#dell-1)
- [ASUS](#asus-1)
- [Lenovo](#lenovo-1)
- [Toshiba](#toshiba-1)
- [Panasonic](#panasonic)
- [Custom](#custom-1)
- [ARM64](#arm64)
- [Custom](#custom-2)
## Status
- Broken - The system can't boot.
- Booting - The system boots with some issues.
- Recommended - The system start with all features working.
## General
Due to incomplete USB support, desktops are generally not recommended.
This section cover things to consider.
- USB support is incomplete
- Wireless networking is not supported
- ACPI support is incomplete (some things are hardcoded on the kernel)
- USB support is incomplete (desktops are generally not recommended)
- Wi-Fi is not supported
- GPU drivers aren't supported (only VESA and GOP)
- Automatic operating system discovery on boot loader is not implemented (remember this before installing Redox)
## x86_64
## Template
Test performed using https://static.redox-os.org/img/x86_64/redox_desktop_x86_64_2022-11-11_629_livedisk.iso
You will use this template to insert your computer.
### Lenovo IdeaPad Y510P
- **Computer model**
Status: ✅ Recommended
```
Status - (Broken, Booting or Recommended)
Redox version - 0.0.0
Variant - (server-minimal, desktop-minimal, server, desktop, demo, dev or customized)
Image date - day-month-year
- Booted using both BIOS and UEFI
- Boots to desktop
- Additional details goes here as items
```
### System76 Galago Pro (galp5)
## x86-64
Status: ✅ Recommended
Computers using a 64 bits Intel/AMD CPU.
### System76
- **System76 Galago Pro (galp5)**
```
Status - Recommended
Redox version - 0.8.0
Variant - desktop
Image date - 11-11-2022
- Booted using UEFI
- Boots to desktop
```
### System76 Lemur Pro (lemp9)
- **System76 Lemur Pro (lemp9)**
Status: ✅ Recommended
```
Status - Recommended
Redox version - 0.8.0
Variant - desktop
Image date - 11-11-2022
- Booted using UEFI
- Boots to desktop
```
### Dell XPS 13 (9350)
- **System76 Oryx Pro (oryp10)**
Status: ⚠️ Booting
- Booted using both BIOS and UEFI
- Boots to desktop
- NVMe driver livelocks
### HP Dev One
Status: ⚠️ Booting
- Booted using UEFI
- Boots to desktop
- No touchpad support, requires I2C HID
### System76 Oryx Pro (oryp10)
Status: ⚠️ Booting
```
Status - Booting
Redox version - 0.8.0
Variant - desktop
Image date - 11-11-2022
- Booted using UEFI
- Boots to desktop
- No touchpad support, though it should be working
```
### System76 Pangolin (pang12)
- **System76 Pangolin (pang12)**
Status: ⚠️ Booting
```
Status - Booting
Redox version - 0.8.0
Variant - desktop
Image date - 11-11-2022
- Booted using UEFI
- Boots to desktop
- No touchpad support, requires I2C HID
```
### Toshiba Satellite L500
### Dell
Status: ⚠️ Booting
- **Dell XPS 13 (9350)**
```
Status - Booting
Redox version - 0.8.0
Variant - desktop
Image date - 11-11-2022
- Booted using both BIOS and UEFI
- Boots to desktop
- NVMe driver livelocks
```
### HP
- **HP Dev One**
```
Status - Booting
Redox version - 0.8.0
Variant - desktop
Image date - 11-11-2022
- Booted using UEFI
- Boots to desktop
- No touchpad support, requires I2C HID
```
### ASUS
- **ASUS X554L**
```
Status - Booting
Redox version - 0.8.0
Variant - desktop
Image date - 11-11-2022
- Booted using BIOS
- Boots to desktop
- No audio, HDA driver cannot find output pins
```
- **ASUS ROG g55vw**
```
Satus - Booting
Redox version - 0.8.0
Variant - desktop
Image date - 11-11-2023
- Booted using BIOS
- Boots to desktop
- UEFI panic in SETUP
```
### Lenovo
- **Lenovo IdeaPad Y510P**
```
Status - Recommended
Redox version - 0.8.0
Variant - desktop
Image date - 11-11-2022
- Booted using both BIOS and UEFI
- Boots to desktop
```
- **Lenovo G570**
```
Status - Broken
Redox version - 0.8.0
Variant - desktop
Image date - 11-11-2022
- Booted using BIOS
- Correct video mode not offered, this is a firmware issue
- Bootloader panics in alloc_zeroed_page_aligned
```
### Toshiba
- **Toshiba Satellite L500**
```
Status - Booting
Redox version - 0.8.0
Variant - desktop
Image date - 11-11-2022
- Booted using BIOS
- Correct video mode not offered, this is a firmware issue
- Boots to desktop
- No ethernet driver
```
### Custom
If you have a customized computer, put it here.
## i686
Test performed using https://static.redox-os.org/img/i686/redox_desktop_i686_2022-11-11_629_livedisk.iso
Computers with a 32 bits Intel/AMD CPU.
### Asus Eee PC 900
### Dell
Status: ⚠️ Booting
- **Dell XPS 13 (9350)**
- Booted using BIOS
- Correct video mode not offered, this is a firmware issue
- Boots to desktop
- No ethernet driver
### Dell XPS 13 (9350)
Status: ⚠️ Booting
```
Status - Booting
Redox version - 0.8.0
Variant - desktop
Image date - 11-11-2022
- Booted using BIOS
- Boots to desktop
- NVMe driver livelocks
```
### Lenovo IdeaPad Y510P
### ASUS
Status: 🚫 Broken
- **ASUS Eee PC 900**
```
Status - Booting
Redox version - 0.8.0
Variant - desktop
Image date - 11-11-2022
- Booted using BIOS
- Correct video mode not offered, this is a firmware issue
- Boots to desktop
- No ethernet driver
```
### Lenovo
- **Lenovo IdeaPad Y510P**
```
Status - Broken
Redox version - 0.8.0
Variant - desktop
Image date - 11-11-2022
- Booted using BIOS
- Panics on phys_to_virt overflow, probably having invalid mappings for 32-bit
```
### Panasonic Toughbook CF-18
### Toshiba
Status: 🚫 Broken
- **Toshiba Satellite L500**
- Booted using BIOS
- Hangs after PIT initialization
### Toshiba Satellite L500
Status: 🚫 Broken
```
Status - Broken
Redox version - 0.8.0
Variant - desktop
Image date - 11-11-2022
- Booted using BIOS
- Correct video mode not offered, this is a firmware issue
- Panics on phys_to_virt overflow, probably having invalid mappings for 32-bit
```
### Panasonic
- **Panasonic Toughbook CF-18**
```
Status - Broken
Redox version - 0.8.0
Variant - desktop
Image date - 11-11-2022
- Booted using BIOS
- Hangs after PIT initialization
```
### Custom
If you have a customized computer, put it here.
## ARM64
Computers using a 64 bits ARM CPU.
### Raspberry Pi
- **Raspberry Pi 3 Model B+**
```
Status - Booting
Redox version - 0.8.0
Variant - server
Image date - None
- Booted using Uboot
- Boots to UART serial console
- a bcm2835-sdhci/mmc driver
- pl011 UART
```
### Custom
If you have a customized ARM board, put it here.

View File

@ -6,7 +6,20 @@ include mk/depends.mk
all: $(BUILD)/harddrive.img
live: $(BUILD)/livedisk.iso
live:
-$(FUMOUNT) $(BUILD)/filesystem/ || true
-$(FUMOUNT) /tmp/redox_installer/ || true
rm -f $(BUILD)/livedisk.iso
$(MAKE) $(BUILD)/livedisk.iso
popsicle: $(BUILD)/livedisk.iso
popsicle-gtk $(BUILD)/livedisk.iso
image:
-$(FUMOUNT) $(BUILD)/filesystem/ || true
-$(FUMOUNT) /tmp/redox_installer/ || true
rm -f $(BUILD)/harddrive.img $(BUILD)/livedisk.iso
$(MAKE) all
rebuild:
-$(FUMOUNT) $(BUILD)/filesystem/ || true
@ -19,6 +32,7 @@ ifeq ($(PODMAN_BUILD),1)
$(PODMAN_RUN) $(MAKE) $@
else
cd cookbook && ./clean.sh
-rm -rf cookbook/repo
cargo clean --manifest-path cookbook/pkgutils/Cargo.toml
cargo clean --manifest-path installer/Cargo.toml
cargo clean --manifest-path redoxfs/Cargo.toml
@ -37,7 +51,7 @@ else
endif
pull:
git pull --recurse-submodules
git pull
git submodule sync --recursive
git submodule update --recursive --init
@ -48,6 +62,9 @@ repo: $(BUILD)/repo.tag
# Podman build recipes and vars
include mk/podman.mk
# Disk Imaging and Cookbook tools
include mk/fstools.mk
# Cross compiler recipes
include mk/prefix.mk
@ -73,15 +90,11 @@ else
endif
gdb: FORCE
gdb cookbook/recipes/kernel/build/kernel.sym --eval-command="target remote localhost:1234"
gdb cookbook/recipes/core/kernel/target/$(TARGET)/build/kernel.sym --eval-command="target remote localhost:1234"
# An empty target
FORCE:
# Gzip any binary
%.gz: %
gzip -k -f $<
# Wireshark
wireshark: FORCE
wireshark $(BUILD)/network.pcap

205
README.md
View File

@ -2,31 +2,65 @@
<img alt="Redox" width="346" src="https://gitlab.redox-os.org/redox-os/assets/raw/master/logos/redox/logo.png">
</p>
**Redox** is an operating system written in Rust, a language with focus on safety and high performance. Redox, following the microkernel design, aims to be secure, usable, and free. Redox is inspired by previous kernels and operating systems, such as SeL4, MINIX, Plan 9, and BSD.
[Redox](https://www.redox-os.org) is an operating system written in Rust, a language with focus on safety, efficiency and high performance. Redox, following the microkernel design, aims to be reliable, secure, usable, correct and free. Redox is inspired by previous operating systems, such as seL4, MINIX, Plan 9, Linux and BSD.
Redox _is not_ just a kernel, it's a **full-featured Operating System**, providing packages (memory allocator, file system, display manager, core utilities, etc.) that together make up a functional and convenient operating system. You can loosely think of it as the GNU or BSD ecosystem, but in a memory safe language and with modern technology. See [this list](#ecosystem) for overview of the ecosystem.
Redox _is not_ just a kernel, it's a **full-featured operating system**, providing components (memory allocator, file system, display manager, core utilities, etc.) that together make up a functional and convenient operating system. You can loosely think of it as the GNU or BSD ecosystem, but in a memory safe language and with modern technology.
The website can be found at https://www.redox-os.org. For hardware compatibility, see [HARDWARE.md](HARDWARE.md).
Please make sure you use the **latest nightly** of `rustc` before building (for more troubleshooting, see ["Help! Redox won't compile!"](#compile-help)).
[![Travis Build Status](https://travis-ci.org/redox-os/redox.svg?branch=master)](https://travis-ci.org/redox-os/redox)
[![Downloads](https://img.shields.io/github/downloads/redox-os/redox/total.svg)](https://gitlab.redox-os.org/redox-os/redox/tags)
[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
![Rust Version](https://img.shields.io/badge/rust-nightly%202017--10--03-lightgrey.svg)
## Contents
## Guide
* [What it looks like](#screenshots)
* [Ecosystem](#ecosystem)
* [Help! Redox won't compile](#compile-help)
* [Contributing to Redox](#contributing)
* [Cloning, Building and running](#cloning-building-running)
* [Quick Setup](#quick-setup)
* [Manual Setup](#manual-setup)
* [Setup Using Docker](#setup-using-docker)
This is the main repository of the Redox GitLab where the build system files are stored, this README is used to guide new developers.
## <a name="screenshots"> What it looks like </a>
You can find the most important pages below:
- [Book](https://doc.redox-os.org/book/)
- [Contribute](CONTRIBUTING.md)
- [Hardware Compatibility](HARDWARE.md)
- [Trying Out Redox](https://doc.redox-os.org/book/ch02-04-trying-out-redox.html)
- [Building Redox](https://doc.redox-os.org/book/ch02-05-building-redox.html)
- [Build System Documentation](https://doc.redox-os.org/book/ch08-06-build-system-reference.html)
- [Developer FAQ](https://doc.redox-os.org/book/ch09-07-developer-faq.html)
- [Chat/Discussions/Help](https://doc.redox-os.org/book/ch13-01-chat.html)
## Ecosystem
These are the most important repositories available on the Redox GitLab:
| Name (lexicographic order) | Maintainer
|--------------------------------------------------------------------------------------|---------------------------
| [acid (kernel integration tests)](https://gitlab.redox-os.org/redox-os/acid) | **@jackpot51**
| [binutils](https://gitlab.redox-os.org/redox-os/binutils) | **@jackpot51**
| [cookbook](https://gitlab.redox-os.org/redox-os/cookbook) | **@jackpot51** **@hatred_45** **@ids1024**
| [coreutils](https://gitlab.redox-os.org/redox-os/coreutils) | **@jackpot51**
| [extrautils](https://gitlab.redox-os.org/redox-os/extrautils) | **@jackpot51**
| [games](https://gitlab.redox-os.org/redox-os/games) | **@fabiao**
| [Ion (shell)](https://gitlab.redox-os.org/redox-os/ion) | **@jackpot51**
| [ipcd](https://gitlab.redox-os.org/redox-os/ipcd) | **@jackpot51**
| [kernel](https://gitlab.redox-os.org/redox-os/kernel) | **@jackpot51**
| [libextra](https://gitlab.redox-os.org/redox-os/libextra) | **@jackpot51**
| [libpager](https://gitlab.redox-os.org/redox-os/libpager) | **@jackpot51**
| [netstack](https://gitlab.redox-os.org/redox-os/netstack) | **@jackpot51**
| [netutils](https://gitlab.redox-os.org/redox-os/netutils) | **@jackpot51**
| [orbclient (Orbital client)](https://gitlab.redox-os.org/redox-os/orbclient) | **@jackpot51** **@FloVanGH**
| [orbdata](https://gitlab.redox-os.org/redox-os/orbdata) | **@jackpot51**
| [orbgame (Orbital 2D game engine)](https://gitlab.redox-os.org/redox-os/orbgame) | **@FloVanGH**
| [Orbital (windowing and compositing system)](https://gitlab.redox-os.org/redox-os/orbital) | **@jackpot51**
| [orbtk (Orbital toolkit)](https://gitlab.redox-os.org/redox-os/orbtk) | **@FloVanGH**
| [orbutils (Orbital utilities)](https://gitlab.redox-os.org/redox-os/orbutils) | **@jackpot51**
| [pkgutils (current package manager)](https://gitlab.redox-os.org/redox-os/pkgutils) | **@jackpot51**
| [ralloc](https://gitlab.redox-os.org/redox-os/ralloc) | **@jackpot51**
| [RANSID (Rust ANSI driver)](https://gitlab.redox-os.org/redox-os/ransid) | **@jackpot51**
| [redoxfs (default filesystem)](https://gitlab.redox-os.org/redox-os/redoxfs) | **@jackpot51**
| [relibc (C Library in Rust)](https://gitlab.redox-os.org/redox-os/relibc) | **@jackpot51**
| [small (stack String and other collections)](https://gitlab.redox-os.org/redox-os/small) | **@jackpot51**
| [syscall](https://gitlab.redox-os.org/redox-os/syscall) | **@jackpot51**
| [Sodium (Vim-inspired text editor)](https://gitlab.redox-os.org/redox-os/sodium) | **@jackpot51**
| [The Redox book](https://gitlab.redox-os.org/redox-os/book) | **@hatred_45**
| [userutils](https://gitlab.redox-os.org/redox-os/userutils) | **@jackpot51**
## What it looks like
<img alt="Redox" height="150" src="https://gitlab.redox-os.org/redox-os/assets/raw/master/screenshots/Senza%20titolo.jpeg">
<img alt="Redox" height="150" src="https://gitlab.redox-os.org/redox-os/assets/raw/master/screenshots/redox running.jpeg">
@ -36,137 +70,4 @@ Please make sure you use the **latest nightly** of `rustc` before building (for
<img alt="Redox" height="150" src="https://gitlab.redox-os.org/redox-os/assets/raw/master/screenshots/Boot.png">
<img alt="Redox" height="150" src="https://gitlab.redox-os.org/redox-os/assets/raw/master/screenshots/IMG_1459.PNG">
## <a name="ecosystem"> Ecosystem </a>
The ecosystem and software Redox OS provides is listed below.
| Name (lexicographic order) | Maintainer
|--------------------------------------------------------------------------------------|---------------------------
| [acid (kernel integration tests)](https://gitlab.redox-os.org/redox-os/acid) | **@jackpot51** **@NilSet**
| [binutils](https://gitlab.redox-os.org/redox-os/binutils) | **vacant**
| [cookbook](https://gitlab.redox-os.org/redox-os/cookbook) | **@jackpot51** **@ids1024** **@sajattack**
| [coreutils](https://gitlab.redox-os.org/redox-os/coreutils) | **vacant**
| [extrautils](https://gitlab.redox-os.org/redox-os/extrautils) | **vacant**
| [games](https://gitlab.redox-os.org/redox-os/games) | **@enrico** (AKA **@HenryTheCat**) **@fabiao**
| [Ion (shell)](https://gitlab.redox-os.org/redox-os/ion) | **@mmstick** **@stratact**
| [ipcd](https://gitlab.redox-os.org/redox-os/ipcd) | **@jD91mZM2**
| [kernel](https://gitlab.redox-os.org/redox-os/kernel) | **@jackpot51**
| [libextra](https://gitlab.redox-os.org/redox-os/libextra) | **vacant**
| [libpager](https://gitlab.redox-os.org/redox-os/libpager) | **vacant**
| [netstack](https://gitlab.redox-os.org/redox-os/netstack) | **@batonius** **@dlrobertson**
| [netutils](https://gitlab.redox-os.org/redox-os/netutils) | **@jackpot51**
| [orbclient (Orbital client)](https://gitlab.redox-os.org/redox-os/orbclient) | **@jackpot51** **@FloVanGH**
| [orbdata](https://gitlab.redox-os.org/redox-os/orbdata) | **@jackpot51**
| [orbgame (Orbital 2D game engine)](https://gitlab.redox-os.org/redox-os/orbgame) | **@FloVanGH**
| [Orbital (windowing and compositing system)](https://gitlab.redox-os.org/redox-os/orbital) | **@jackpot51**
| [orbtk (Orbital toolkit)](https://gitlab.redox-os.org/redox-os/orbtk) | **@FloVanGH**
| [orbutils (Orbital utilities)](https://gitlab.redox-os.org/redox-os/orbutils) | **@jackpot51**
| [pkgutils (current package manager)](https://gitlab.redox-os.org/redox-os/pkgutils) | **@jackpot51**
| [ralloc](https://gitlab.redox-os.org/redox-os/ralloc) | **@Tommoa** **@NilSet**
| [RANSID (Rust ANSI driver)](https://gitlab.redox-os.org/redox-os/ransid) | **@jackpot51**
| [redoxfs (old filesystem)](https://gitlab.redox-os.org/redox-os/redoxfs) | **@jackpot51**
| [relibc (C Library in Rust)](https://gitlab.redox-os.org/redox-os/relibc) | **@jD91mZM2** **@sajattack** **@Tommoa** **@stratact**
| [small (stack String and other collections)](https://gitlab.redox-os.org/redox-os/small) | **@Tommoa**
| [syscall](https://gitlab.redox-os.org/redox-os/syscall) | **@jackpot51**
| [Sodium (Vim-inspired text editor)](https://gitlab.redox-os.org/redox-os/sodium) | **vacant**
| [TFS ((ticki) **T**he **F**ile **S**ystem)](https://gitlab.redox-os.org/redox-os/tfs) | **@Tommoa**
| [The Redox book](https://gitlab.redox-os.org/redox-os/book) | **vacant**
| [userutils](https://gitlab.redox-os.org/redox-os/userutils) | **@jackpot51**
## <a name="compile-help"> Help! Redox won't compile! </a>
Sometimes things go wrong when compiling. Try the following before opening an issue:
1. Run `rustup update`
1. Run `make clean pull`.
1. Make sure you have **the latest version of Rust nightly!** ([rustup.rs](https://www.rustup.rs) is recommended for managing Rust versions. If you already have it, run `rustup`).
1. Update **GNU Make**, **NASM** and **QEMU/VirtualBox**.
1. Pull the upstream master branch (`git remote add upstream git@gitlab.redox-os.org:redox-os/redox.git; git pull upstream master`).
1. Update submodules (`git submodule update --recursive --init`).
and then rebuild!
## <a name="contributing"> Contributing to Redox </a>
If you're interested in this project, and you'd like to help us out, [here](CONTRIBUTING.md) is a list of ways you can do just that.
## <a name="cloning-building-running"> Cloning, Building and Running </a>
Redox is big, even compressed. Downloading the full history may take a lot of bandwidth, and can even be costly on some data plans. Clone at your own risk!
### <a name="quick-setup" /> Quick Setup </a>
```bash
$ cd path/to/your/projects/folder/
# Run bootstrap setup
$ curl -sf https://gitlab.redox-os.org/redox-os/redox/raw/master/bootstrap.sh -o bootstrap.sh && bash -e bootstrap.sh
# Change to project directory
$ cd redox
# Build Redox
$ make all
# Launch using QEMU
$ make qemu
# Launch using QEMU without using KVM (Kernel-based Virtual Machine). Try if QEMU gives an error.
$ make qemu kvm=no
```
#### QEMU with KVM
To use QEMU with KVM (Kernel-based Virtual Machine), which is faster than without KVM, you need a CPU with Intel® Virtualization Technology (Intel® VT) or AMD Virtualization™ (AMD-V™) support. Most systems have this disabled by default, so you may need to reboot, go into the BIOS, and enable it.
### <a name="manual-setup"> Manual Setup </a>
To manually clone, build and run Redox using a Unix-based host, run the following commands (with exceptions, be sure to read the comments):
```bash
$ cd path/to/your/projects/folder/
# HTTPS
$ git clone https://gitlab.redox-os.org/redox-os/redox.git --origin upstream --recursive
# SSH
$ git clone git@gitlab.redox-os.org:redox-os/redox.git --origin upstream --recursive
$ cd redox/
# Install/update dependencies
$ ./bootstrap.sh -d
# Install rustup.rs
$ curl https://sh.rustup.rs -sSf | sh
$ source $HOME/.cargo/env
# Install the sysroot manager Xargo and cargo-config
$ cargo install xargo cargo-config
# For successive builds start here. If this is your first build, just continue
# Update git submodules
$ git submodule update --recursive --init
# Build Redox
$ make all
# Launch using QEMU
$ make qemu
# Launch using QEMU without using KVM (Kernel-based Virtual Machine). Try if QEMU gives an error.
$ make qemu kvm=no
# Launch using QEMU without using KVM (Kernel-based Virtual Machine) nor Graphics
make qemu kvm=no vga=no
```
### <a name="setup-using-docker"> Setup using Docker </a>
We also provide docker image. After cloning this repository, please follow README under the `docker` directory.
### Updating the codebase using the Makefile
To update the codebase run:
```
make pull; make fetch
```
`make pull` pulls and updates the submodules, and `make fetch` updates the sources for cookbook recipes.
See [Redox in Action](https://www.redox-os.org/screens/) for photos and videos.

View File

@ -1,5 +1,7 @@
#!/usr/bin/env bash
set -e
##########################################################
# This function is simply a banner to introduce the script
##########################################################
@ -92,11 +94,15 @@ osx_macports()
install_macports_pkg "git"
if [ "$1" == "qemu" ]; then
if [ "$1" == "qemu" ]; then
install_macports_pkg "qemu" "qemu-system-x86_64"
else
elif [ "$1" == "virtualbox" ]; then
install_macports_pkg "virtualbox"
fi
else
echo "Unknown emulator: $1"
exit 1
fi
install_macports_pkg "coreutils"
install_macports_pkg "findutils"
@ -106,6 +112,45 @@ osx_macports()
install_macports_pkg "osxfuse"
install_macports_pkg "x86_64-elf-gcc"
install_macports_pkg "cmake"
install_macports_pkg "ninja"
install_macports_pkg "po4a"
install_macports_pkg "findutils"
install_macports_pkg "texinfo"
install_macports_pkg "autoconf"
install_macports_pkg "openssl3"
install_macports_pkg "openssl11"
install_macports_pkg "bison"
install_macports_pkg "curl"
install_macports_pkg "wget"
install_macports_pkg "file"
install_macports_pkg "flex"
install_macports_pkg "gperf"
install_macports_pkg "expat"
install_macports_pkg "gmp"
install_macports_pkg "libpng"
install_macports_pkg "jpeg"
install_macports_pkg "libsdl12"
install_macports_pkg "libsdl2_ttf"
install_macports_pkg "libtool"
install_macports_pkg "m4"
install_macports_pkg "ninja"
install_macports_pkg "meson"
install_macports_pkg "python311"
install_macports_pkg "py37-mako"
install_macports_pkg "xdg-utils"
install_macports_pkg "zip"
install_macports_pkg "unzip"
install_macports_pkg "llvm-16"
install_macports_pkg "clang-16"
install_macports_pkg "perl5.24"
install_macports_pkg "p5-html-parser"
install_macports_pkg "doxygen"
install_macports_pkg "gpatch"
install_macports_pkg "automake"
install_macports_pkg "scons"
install_macports_pkg "gmake"
install_macports_pkg "lua"
install_macports_pkg "protobuf-c"
}
###############################################################################
@ -122,11 +167,15 @@ osx_homebrew()
install_brew_pkg "git"
if [ "$1" == "qemu" ]; then
if [ "$1" == "qemu" ]; then
install_brew_pkg "qemu" "qemu-system-x86_64"
else
elif [ "$1" == "virtualbox" ]; then
install_brew_pkg "virtualbox"
fi
else
echo "Unknown emulator: $1"
exit 1
fi
install_brew_pkg "automake"
install_brew_pkg "bison"
@ -137,7 +186,40 @@ osx_homebrew()
install_brew_pkg "gcc@7" "gcc-7"
install_brew_pkg "pkg-config"
install_brew_pkg "cmake"
install_brew_pkg "Caskroom/cask/osxfuse"
install_brew_pkg "ninja"
install_brew_pkg "po4a"
install_brew_pkg "macfuse"
install_brew_pkg "findutils"
install_brew_pkg "texinfo"
install_brew_pkg "openssl@1.1"
install_brew_pkg "openssl@3.0"
install_brew_pkg "autoconf"
install_brew_pkg "curl"
install_brew_pkg "wget"
install_brew_pkg "flex"
install_brew_pkg "gperf"
install_brew_pkg "expat"
install_brew_pkg "gmp"
install_brew_pkg "libpng"
install_brew_pkg "jpeg"
install_brew_pkg "sdl12-compat"
install_brew_pkg "sdl2_ttf"
install_brew_pkg "perl"
install_brew_pkg "libtool"
install_brew_pkg "m4"
install_brew_pkg "ninja"
install_brew_pkg "meson"
install_brew_pkg "python@3.11"
install_brew_pkg "zip"
install_brew_pkg "unzip"
install_brew_pkg "llvm"
install_brew_pkg "doxygen"
install_brew_pkg "gpatch"
install_brew_pkg "automake"
install_brew_pkg "scons"
install_brew_pkg "lua"
install_brew_pkg "ant"
install_brew_pkg "protobuf"
install_brew_pkg "redox-os/gcc_cross_compilers/x86_64-elf-gcc" "x86_64-elf-gcc"
}
@ -149,51 +231,135 @@ osx_homebrew()
###############################################################################
freebsd()
{
set -xe
set -x
echo "FreeBSD detected!"
echo "Installing missing packages..."
install_freebsd_pkg "git"
if [ "$1" == "qemu" ]; then
install_freebsd_pkg "qemu" "qemu-system-x86_64"
else
install_freebsd_pkg "virtualbox"
fi
if [ "$1" == "qemu" ]; then
install_freebsd_pkg "qemu" "qemu-system-x86_64"
elif [ "$1" == "virtualbox" ]; then
install_freebsd_pkg "virtualbox"
else
echo "Unknown emulator: $1"
exit 1
fi
install_freebsd_pkg "coreutils"
install_freebsd_pkg "findutils"
install_freebsd_pkg "gcc"
install_freebsd_pkg "nasm"
install_freebsd_pkg "pkgconf"
install_freebsd_pkg "fusefs-libs"
install_freebsd_pkg "fusefs-libs3"
install_freebsd_pkg "cmake"
install_freebsd_pkg "gmake"
install_freebsd_pkg "wget"
install_freebsd_pkg "openssl"
install_freebsd_pkg "texinfo"
install_freebsd_pkg "python"
install_freebsd_pkg "automake"
install_freebsd_pkg "gettext"
install_freebsd_pkg "bison"
install_freebsd_pkg "gperf"
set +xe
install_freebsd_pkg "autoconf"
install_freebsd_pkg "curl"
install_freebsd_pkg "file"
install_freebsd_pkg "flex"
install_freebsd_pkg "expat2"
install_freebsd_pkg "gmp"
install_freebsd_pkg "png"
install_freebsd_pkg "libjpeg-turbo"
install_freebsd_pkg "sdl12"
install_freebsd_pkg "sdl2_ttf"
install_freebsd_pkg "perl5.36"
install_freebsd_pkg "p5-HTML-Parser"
install_freebsd_pkg "libtool"
install_freebsd_pkg "m4"
install_freebsd_pkg "po4a"
install_freebsd_pkg "syslinux"
install_freebsd_pkg "ninja"
install_freebsd_pkg "meson"
install_freebsd_pkg "xdg-utils"
install_freebsd_pkg "zip"
install_freebsd_pkg "unzip"
install_freebsd_pkg "llvm"
install_freebsd_pkg "doxygen"
install_freebsd_pkg "patch"
install_freebsd_pkg "automake"
install_freebsd_pkg "scons"
install_freebsd_pkg "lua54"
install_freebsd_pkg "py-protobuf-compiler"
set +x
}
###############################################################################
# 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 git gperf perl-html-parser nasm wget texinfo bison flex po4a"
packages="cmake \
fuse \
git \
gperf \
perl-html-parser \
nasm \
wget \
texinfo \
bison \
flex \
po4a \
autoconf \
curl \
file \
patch \
automake \
scons \
waf \
expat \
gmp \
libtool \
libpng \
libjpeg-turbo \
sdl12-compat \
m4 \
pkgconf \
po4a \
syslinux \
meson \
python \
python-mako \
make \
xdg-utils \
zip \
unzip \
llvm \
clang \
perl \
doxygen \
lua \
ant \
protobuf"
if [ "$1" == "qemu" ]; then
packages="$packages qemu"
elif [ "$1" == "virtualbox" ]; then
packages="$packages virtualbox"
else
echo "Unknown emulator: $1"
exit 1
fi
# Scripts should not cause a system update in order to just install a couple
# of packages. If pacman -S --needed is going to fail, let it fail and the
# user will figure out the issues (without updating if required) and rerun
@ -202,65 +368,121 @@ 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..."
sudo "$2" install \
pkgs="\
ant \
autoconf \
automake \
autopoint \
bison \
build-essential \
clang \
cmake \
curl \
dos2unix \
doxygen \
file \
flex \
fuse3 \
g++ \
genisoimage \
git \
gperf \
libc6-dev-i386 \
intltool \
libexpat-dev \
libfuse-dev \
libgmp-dev \
libhtml-parser-perl \
libjpeg-dev \
libmpfr-dev \
libpng-dev \
libsdl1.2-dev \
libsdl2-ttf-dev \
libtool \
llvm \
lua5.4 \
m4 \
make \
meson \
nasm \
ninja-build \
patch \
perl \
pkg-config \
po4a \
syslinux-utils \
protobuf-compiler \
python3 \
python3-mako \
rsync \
scons \
texinfo \
libsdl1.2-dev \
ninja-build \
meson \
python3-mako
unzip \
wget \
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
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
else
elif [ "$1" == "virtualbox" ]; then
if [ -z "$(which virtualbox)" ]; then
echo "Installing VirtualBox..."
sudo "$2" install virtualbox
if grep '^ID=debian$' /etc/os-release > /dev/null; then
echo "Virtualbox is not in the official debian packages"
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
else
echo "Installing VirtualBox..."
sudo $install_command virtualbox
fi
else
echo "VirtualBox already installed!"
fi
else
echo "Unknown emulator: $1"
exit 1
fi
}
@ -268,69 +490,234 @@ 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
else
elif [ "$1" == "virtualbox" ]; then
if [ -z "$(which virtualbox)" ]; then
echo "Installing VirtualBox..."
sudo dnf install virtualbox
echo "Please install VirtualBox and re-run this script,"
echo "or run with -e qemu"
exit 1
else
echo "VirtualBox already installed!"
fi
else
echo "Unknown emulator: $1"
exit 1
fi
# Use rpm -q <package> to check if it's already installed
PKGS=$(for pkg in gcc gcc-c++ glibc-devel.i686 nasm make fuse-devel cmake texinfo gettext-devel bison flex perl-HTML-Parser po4a openssl patch automake libtool perl-Pod-Html perl-FindBin gperf libpng-devel; do rpm -q $pkg > /dev/null || echo $pkg; done)
PKGS=$(for pkg in file \
autoconf \
vim \
bison \
flex \
genisoimage \
gperf \
glibc-devel.i686 \
expat \
expat-devel \
fuse-devel \
fuse3-devel \
gmp-devel \
libpng-devel \
perl \
perl-HTML-Parser \
libtool \
libjpeg-turbo-devel \
SDL2_ttf-devel \
sdl12-compat-devel \
m4 \
nasm \
po4a \
syslinux \
texinfo \
ninja-build \
meson \
waf \
python3-mako \
make \
gcc \
gcc-c++ \
openssl \
patch \
automake \
perl-Pod-Html \
perl-FindBin \
gperf \
curl \
gettext-devel \
perl-Pod-Xhtml \
pkgconf-pkg-config \
cmake \
llvm \
zip \
unzip \
lua \
luajit \
make \
clang \
doxygen \
ant \
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()
{
echo "Detected SUSE Linux"
packages=(
"gcc"
"gcc-c++"
"glibc-devel-32bit"
"nasm"
"make"
"fuse-devel"
"cmake"
"openssl"
"automake"
"gettext-tools"
"libtool"
"po4a"
"patch"
"flex"
"gperf"
"autoconf"
"bison"
"curl"
"wget"
"file"
"libexpat-devel"
"gmp-devel"
"libpng16-devel"
"libjpeg8-devel"
"perl"
"perl-HTML-Parser"
"m4"
"patch"
"scons"
"pkgconf"
"syslinux-utils"
"ninja"
"meson"
"python-Mako"
"xdg-utils"
"zip"
"unzip"
"llvm"
"clang"
"doxygen"
"lua54"
"ant"
"protobuf"
)
if [ -z "$(which git)" ]; then
echo "Installing git..."
zypper install git
echo "Will install git ..."
packages+=(git)
fi
if [ "$1" == "qemu" ]; then
if [ -z "$(which qemu-system-x86_64)" ]; then
echo "Installing QEMU..."
sudo zypper install qemu-x86 qemu-kvm
echo "Will install QEMU..."
packages+=(qemu-x86 qemu-kvm)
else
echo "QEMU already installed!"
fi
else
elif [ "$1" == "virtualbox" ]; then
if [ -z "$(which virtualbox)" ]; then
echo "Please install VirtualBox and re-run this script,"
echo "or run with -e qemu"
exit
exit 1
else
echo "VirtualBox already installed!"
fi
else
echo "Unknown emulator: $1"
exit 1
fi
echo "Installing necessary build tools..."
sudo zypper install gcc gcc-c++ glibc-devel-32bit nasm make fuse-devel cmake openssl automake gettext-tools libtool po4a patch flex gperf
# We could install all the packages in a single zypper command with:
#
# zypper install package1 package2 package3
#
# But there is an issue with this: zypper returns a success code if at
# least one of the packages was correctly installed, but we need it to fail
# if any of the packages is missing.
#
# To confirm that the packages are available, we try to install them one by
# one with --dry-run.
# We still install all the packages in a single zypper command so that the
# user has to confirm only once.
for p in ${packages[@]}; do
if rpm -q "${p}" > /dev/null ; then
echo "${p} is already installed"
else
# Zypper shows a confirmation prompt and the "y" answer even with
# --non-interactive and --no-confirm:
#
# 1 new package to install.
# Overall download size: 281.7 KiB. Already cached: 0 B. After the operation, additional 394.6 KiB will be used.
# Continue? [y/n/v/...? shows all options] (y): y
#
# That could make the user think that the package was installed,
# when it was only a dry run.
# To avoid the confusion, we hide the output unless there was an
# error.
if out="$(zypper --non-interactive install --no-confirm --dry-run --force-resolution ${p} 2>&1)" ; then
echo "${p} can be installed"
else
echo "no"
echo ""
echo "Zypper output:"
echo ""
echo "${out}"
echo ""
echo "Could not find how to install '${p}', try running:"
echo ""
echo " zypper install ${p}"
echo ""
exit 1
fi
fi
done
zypper install ${packages[@]}
}
##############################################################################
@ -349,23 +736,40 @@ gentoo()
echo "Installing git..."
sudo emerge dev-vcs/git
fi
if [ -z "$(which fusermount)" ]; then
if [ -z "$(which fusermount 2>/dev/null)" ] && [ -z "$(which fusermount3 2>/dev/null)" ]; then
echo "Installing fuse..."
sudo emerge sys-fs/fuse
fi
if [ "$2" == "qemu" ]; then
if [ "$1" == "qemu" ]; then
if [ -z "$(which qemu-system-x86_64)" ]; then
echo "Please install QEMU and re-run this script"
echo "Step1. Add QEMU_SOFTMMU_TARGETS=\"x86_64\" to /etc/portage/make.conf"
echo "Step2. Execute \"sudo emerge app-emulation/qemu\""
exit 1
else
echo "QEMU already installed!"
fi
elif [ "$1" == "virtualbox" ]; then
if [ -z "$(which virtualbox)" ]; then
echo "Please install VirtualBox and re-run this script,"
echo "or run with -e qemu"
exit 1
else
echo "VirtualBox already installed!"
fi
else
echo "Unknown emulator: $1"
exit 1
fi
if [ -z "$(which cmake)" ]; then
echo "Installing cmake..."
sudo emerge dev-util/cmake
fi
if [ -z "$(ldconfig -p | grep fontconfig)" ]; then
sudo emerge media-libs/fontconfig
fi
}
##############################################################################
@ -383,19 +787,47 @@ solus()
else
echo "QEMU already installed!"
fi
else
elif [ "$1" == "virtualbox" ]; then
if [ -z "$(which virtualbox)" ]; then
echo "Please install VirtualBox and re-run this script,"
echo "or run with -e qemu"
exit
exit 1
else
echo "VirtualBox already installed!"
fi
else
echo "Unknown emulator: $1"
exit 1
fi
echo "Installing necessary build tools..."
#if guards are not necessary with eopkg since it does nothing if latest version is already installed
sudo eopkg it fuse-devel git gcc g++ libgcc-32bit libstdc++-32bit nasm make cmake binutils-gold glibc-devel pkg-config fuse2-devel linux-headers rsync automake autoconf m4 libtool-devel po4a patch bison flex gperf libpng-devel perl-html-parser
sudo eopkg it fuse-devel \
git \
gcc \
g++ \
libgcc-32bit \
libstdc++-32bit \
nasm \
make \
cmake \
binutils-gold \
glibc-devel \
pkg-config \
fuse2-devel \
linux-headers \
rsync \
automake \
autoconf \
m4 \
libtool-devel \
po4a \
patch \
bison \
flex \
gperf \
libpng-devel \
perl-html-parser
}
######################################################################
@ -417,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"
@ -439,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
@ -453,20 +891,26 @@ rustInstall() {
sudo /usr/local/lib/rustlib/uninstall.sh
else
echo "Please manually uninstall multirust and any other versions of rust, then re-run bootstrap."
exit
exit 1
fi
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."
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 [ "$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
@ -481,7 +925,7 @@ rustInstall() {
echo "Please either run the script again, accepting rustup install"
echo "or install rustc nightly manually (not recommended) via:"
echo "\#curl -sSf https://static.rust-lang.org/rustup.sh | sh -s -- --channel=nightly"
exit
exit 1
else
echo "Your Rust install looks good!"
fi
@ -561,11 +1005,14 @@ elif [ "$1" == "-s" ]; then
exit
fi
host_arch=$(uname -m)
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";;
@ -573,14 +1020,15 @@ 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;;
\?) echo "I don't know what to do with that option, try -h for help"; exit 1;;
esac
done
banner
rustInstall
rustInstall "$noninteractive"
if [ "$update" == "true" ]; then
git pull upstream master
@ -599,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"
@ -611,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"
@ -622,7 +1070,8 @@ else
fi
cargoInstall cargo-config 0.1.1
cargoInstall xargo 0.3.20
cargoInstall just 1.16.0
cargoInstall cbindgen 0.26.0
if [ "$dependenciesonly" = false ]; then
boot

3
config/aarch64/acid.toml Normal file
View File

@ -0,0 +1,3 @@
# Configuration for using acid
include = ["../acid.toml"]

213
config/aarch64/ci.toml Normal file
View File

@ -0,0 +1,213 @@
# This is the CI configuration file
# General settings
[general]
# Do not prompt if settings are not defined
prompt = false
# Package settings
[packages]
acid = {}
atk = {}
audiod = {}
autoconf = {}
automake = {}
bash = {}
binutils = {}
bootloader = {}
bootstrap = {}
ca-certificates = {}
cairo = {}
cairodemo = {}
#calculator = {}
cargo = {}
cleye = {}
#cmatrix = {} # needs ncursesw now
contain = {}
coreutils = {}
cosmic-edit = {}
cosmic-icons = {}
cosmic-text = {}
cpal = {}
curl = {}
dash = {}
diffutils = {}
dosbox = {}
drivers = {}
drivers-initfs = {}
duktape = {}
eduke32 = {}
escalated = {}
exampled = {}
expat = {}
extrautils = {}
#fal
#fd = {} # ctrlc-3.1.1
#ffmpeg6 = {} # undefined references
findutils = {}
fontconfig = {}
#freeciv = {}
freedoom = {}
#freeglut = {}
freepats = {}
freetype2 = {}
#friar = {} # mio patch
fribidi = {}
#game-2048 = {} # rustc-serialize
#gawk = {} # langinfo.h
gcc13 = {}
gdbserver = {}
#gdk-pixbuf = {} # shared-mime-info
gears = {}
generaluser-gs = {}
gettext = {}
gigalomania = {}
git = {}
glib = {}
glium = {}
glutin = {}
gnu-binutils = {}
gnu-grep = {}
gnu-make = {}
#gstreamer = {} # conflict with thread local errno
harfbuzz = {}
#hematite = {} # needs crate patches for redox-unix
init = {}
initfs = {}
installer = {}
installer-gui = {}
intel-one-mono = {}
ion = {}
ipcd = {}
jansson = {}
kernel = {}
keyboard-sfx = {}
lci = {}
libc-bench = {}
libffi = {}
libgmp = {}
libiconv = {}
libjpeg = {}
libogg = {}
liborbital = {}
libpng = {}
libsodium = {}
libvorbis = {}
libxml2 = {}
llvm = {}
logd = {}
lua54 = {}
#mdp = {} # ncursesw
mesa = {}
mesa-glu = {}
mgba = {}
#miniserve = {} # actix
nano = {}
nasm = {}
#ncdu = {} # fails to link with ncurses
ncurses = {}
#ncursesw = {} # mkstemp configure hang
netdb = {}
netstack = {}
netsurf = {}
netutils = {}
neverball = {}
#newlib = {} # obsolete
#newlibtest = {} # obsolete
nghttp2 = {}
openjazz = {}
openssl1 = {}
openttd = {}
openttd-opengfx = {}
openttd-openmsx = {}
openttd-opensfx = {}
orbclient = {}
orbdata = {}
orbital = {}
orbterm = {}
orbutils = {}
#orbutils-background = {} # needs recipe update
#orbutils-launcher = {} # needs recipe update
#orbutils-orblogin = {} # needs recipe update
osdemo = {}
#pango = {} # undefined references to std::__throw_system_error(int)
#pastel = {} # needs crate patches for redox-unix
patch = {}
#pathfinder = {} # servo-fontconfig
#pciids = {}
pcre = {}
perg = {}
periodictable = {}
#perl = {} # ctermid, tempnam, ttyname
pixelcannon = {}
pixman = {}
#pkgar = {} # uses virtual Cargo.toml, needs recipe update
pkg-config = {}
pkgutils = {}
pop-icon-theme = {}
#powerline = {} # dirs
prboom = {}
procedural-wallpapers-rs = {}
ptyd = {}
#python = {} # getaddrinfo
#qemu = {}
ramfs = {}
randd = {}
readline = {}
redoxerd = {}
redox-fatfs = {}
redoxfs = {}
redox-games = {}
redox-ssh = {}
relibc = {}
#relibc-tests = {} # madvise link error
resist = {}
#retroarch = {} # OS_TLSIndex not declared
ripgrep = {}
rodioplay = {}
rs-nes = {}
rust = {}
rust64 = {}
rust-cairo = {}
rust-cairo-demo = {}
rustual-boy = {}
schismtracker = {}
scummvm = {}
sdl-gfx = {}
#sdl-player = {} # wctype_t
sdl1 = {}
sdl1-image = {}
sdl1-mixer = {}
sdl1-ttf = {}
sdl2 = {}
sdl2-gears = {}
sdl2-image = {}
sdl2-mixer = {}
sdl2-ttf = {}
sed = {}
#servo = {} # some more crates to port
#shared-mime-info = {} # intltool-update out of date
shellharden = {}
shellstorm = {}
smith = {}
sodium = {}
sopwith = {}
#ssh = {}
strace = {}
syobonaction = {}
terminfo = {}
#termplay = {} # backtrace cannot find link.h
timidity = {}
ttf-hack = {}
userutils = {}
uutils = {}
vice = {}
vim = {}
vttest = {}
vvvvvv = {}
#webrender = {} # unwind
#wesnoth = {}
#winit = {} # tzset
xz = {}
zerod = {}
zlib = {}

View File

@ -0,0 +1,14 @@
# Default desktop configuration
include = ["../desktop-minimal.toml"]
# Override the default settings here
# General settings
[general]
# Filesystem size in MiB
# filesystem_size = 1024
# Package settings
[packages]
# example = {}

View File

@ -1,191 +0,0 @@
# Default desktop configuration
# General settings
[general]
# Filesystem size in MiB
filesystem_size = 256
# Do not prompt if settings are not defined
prompt = false
# Package settings
[packages]
audiod = {}
bootloader = {}
bootstrap = {}
ca-certificates = {}
contain = {}
coreutils = {}
dash = {}
diffutils = {}
#drivers = {} # more porting work
#escalated = {} # porting
extrautils = {}
findutils = {}
initfs = {}
#installer = {} # failure to build ring
ion = {}
ipcd = {}
kernel = {}
netdb = {}
netstack = {}
#netsurf = {} # lots of porting issues
netutils = {}
orbdata = {}
orbital = {}
orbterm = {}
orbutils = {}
#pkgutils = {} # failure to build ring
ptyd = {}
redoxfs = {}
relibc = {}
resist = {}
smith = {}
userutils = {}
uutils = {}
# User settings
[users.root]
password = "password"
uid = 0
gid = 0
name = "root"
home = "/root"
[users.user]
# Password is unset
password = ""
[[files]]
path = "/etc/init.d/00_base"
data = """
ipcd
ptyd
pcid /etc/pcid.d/
escalated
"""
[[files]]
path = "/etc/init.d/10_net"
data = """
smolnetd
dnsd
dhcpd -b
"""
[[files]]
path = "/etc/init.d/20_orbital"
data = """
audiod
orbital display:3/activate orblogin launcher
"""
[[files]]
path = "/etc/init.d/30_console"
data = """
getty display:2
getty debug: -J
"""
[[files]]
path = "/etc/net/dns"
data = """
208.67.222.222
"""
[[files]]
path = "/etc/net/ip"
data = """
10.0.2.15
"""
[[files]]
path = "/etc/net/ip_router"
data = """
10.0.2.2
"""
[[files]]
path = "/etc/net/ip_subnet"
data = """
255.255.255.0
"""
[[files]]
path = "/etc/net/mac"
data = """
54-52-00-ab-cd-ef
"""
[[files]]
path = "/etc/pkg.d/50_redox"
data = "https://static.redox-os.org/pkg"
[[files]]
path = "/etc/redox-release"
data = "0.8.0"
[[files]]
path = "/etc/group"
data = """
root;0;root
user;1000;user
sudo;1;user
"""
[[files]]
path = "/etc/hostname"
data = """
redox
"""
[[files]]
path = "/usr/bin"
data = "../bin"
symlink = true
[[files]]
path = "/usr/games"
data = "../games"
symlink = true
[[files]]
path = "/usr/include"
data = "../include"
symlink = true
[[files]]
path = "/usr/lib"
data = "../lib"
symlink = true
[[files]]
path = "/usr/share"
data = "../share"
symlink = true
[[files]]
path = "/tmp"
data = ""
directory= true
# 0o1777
mode = 1023
[[files]]
path = "/dev/null"
data = "null:"
symlink = true
[[files]]
path = "/dev/random"
data = "rand:"
symlink = true
[[files]]
path = "/dev/urandom"
data = "rand:"
symlink = true
[[files]]
path = "/dev/zero"
data = "zero:"
symlink = true

View File

@ -0,0 +1,10 @@
# Minimal configuration
include = ["../../server-minimal.toml"]
# General settings
[general]
# Filesystem size in MiB
filesystem_size = 256
# EFI partition size in MiB
efi_partition_size = 128

View File

@ -0,0 +1,3 @@
# Configuration for using resist
include = ["../resist.toml"]

View File

@ -0,0 +1,14 @@
# Minimal configuration
include = ["../server-minimal.toml"]
# Override the default settings here
# General settings
[general]
# Filesystem size in MiB
# filesystem_size = 1024
# Package settings
[packages]
# example = {}

26
config/acid.toml Normal file
View File

@ -0,0 +1,26 @@
# Configuration for using acid
include = ["base.toml"]
# General settings
[general]
# Filesystem size in MiB
filesystem_size = 256
# Package settings
[packages]
acid = {}
coreutils = {}
ion = {}
[[files]]
path = "/usr/lib/init.d/10_acid"
data = """
export RUST_BACKTRACE full
acid
acid create_test
acid switch
acid tls
acid thread
shutdown
"""

168
config/base.toml Normal file
View File

@ -0,0 +1,168 @@
# Base configuration: This configuration is meant to be included by
# other configurations rather than use directly. It is the greatest
# common divisor of all other configurations and misses several
# parts necessary to create a bootable system.
# General settings
[general]
# Do not prompt if settings are not defined
prompt = false
[packages]
bootloader = {}
bootstrap = {}
escalated = {}
initfs = {}
ipcd = {}
kernel = {}
ptyd = {}
uutils = {}
## Configuration files
[[files]]
path = "/usr/lib/init.d/00_base"
data = """
# clear and recreate tmpdir with 0o1777 permission
rm -r /tmp
mkdir -m a=rwxt /tmp
ipcd
ptyd
escalated
"""
[[files]]
path = "/etc/hostname"
data = """
redox
"""
# https://www.freedesktop.org/software/systemd/man/latest/os-release.html
[[files]]
path = "/usr/lib/os-release"
data = """
PRETTY_NAME="Redox OS 0.8.0"
NAME="Redox OS"
VERSION_ID="0.8.0"
VERSION="0.8.0"
ID="redox-os"
HOME_URL="https://redox-os.org/"
DOCUMENTATION_URL="https://redox-os.org/docs/"
SUPPORT_URL="https://redox-os.org/community/"
"""
# FIXME maybe add VARIANT= and VARIANT_ID= keys depending on the chosen configuration?
[[files]]
path = "/etc/os-release"
data = "../usr/lib/os-release"
symlink = true
## Symlinks for usrmerge
[[files]]
path = "/usr"
data = ""
directory = true
mode = 0o755
[[files]]
path = "/usr/bin"
data = ""
directory = true
mode = 0o755
[[files]]
path = "/bin"
data = "usr/bin"
symlink = true
[[files]]
path = "/usr/include"
data = ""
directory = true
mode = 0o755
[[files]]
path = "/include"
data = "usr/include"
symlink = true
[[files]]
path = "/usr/lib"
data = ""
directory = true
mode = 0o755
[[files]]
path = "/lib"
data = "usr/lib"
symlink = true
[[files]]
path = "/usr/share"
data = ""
directory = true
mode = 0o755
[[files]]
path = "/share"
data = "usr/share"
symlink = true
## Device file symlinks
[[files]]
path = "/dev/null"
data = "null:"
symlink = true
[[files]]
path = "/dev/random"
data = "rand:"
symlink = true
[[files]]
path = "/dev/urandom"
data = "rand:"
symlink = true
[[files]]
path = "/dev/zero"
data = "zero:"
symlink = true
[[files]]
path = "/dev/tty"
data = "libc:tty"
symlink = true
[[files]]
path = "/dev/stdin"
data = "libc:stdin"
symlink = true
[[files]]
path = "/dev/stdout"
data = "libc:stdout"
symlink = true
[[files]]
path = "/dev/stderr"
data = "libc:stderr"
symlink = true
# User settings
[users.root]
password = "password"
uid = 0
gid = 0
name = "root"
home = "/root"
[users.user]
# Password is unset
password = ""
# Group settings
[groups.sudo]
gid = 1
members = ["user"]

View File

@ -0,0 +1,30 @@
# Default desktop configuration
include = ["server-minimal.toml"]
# General settings
[general]
# Filesystem size in MiB
filesystem_size = 128
# Package settings
[packages]
drivers = {}
orbdata = {}
orbital = {}
orbterm = {}
orbutils-background = {}
orbutils-launcher = {}
orbutils-orblogin = {}
[[files]]
path = "/usr/lib/init.d/00_drivers"
data = """
pcid /etc/pcid.d/
"""
[[files]]
path = "/usr/lib/init.d/20_orbital"
data = """
orbital orblogin launcher
"""

33
config/desktop.toml Normal file
View File

@ -0,0 +1,33 @@
# Default desktop configuration
include = ["server.toml"]
# General settings
[general]
# Filesystem size in MiB
filesystem_size = 512
# Package settings
[packages]
audiod = {}
installer-gui = {}
netsurf = {}
orbdata = {}
orbital = {}
orbterm = {}
orbutils = {}
[[files]]
path = "/usr/lib/init.d/20_orbital"
data = """
audiod
orbital orblogin launcher
"""
# Override console config to not switch to VT 2
[[files]]
path = "/usr/lib/init.d/30_console"
data = """
getty 2
getty debug: -J
"""

27
config/dev.toml Normal file
View File

@ -0,0 +1,27 @@
# Configuration for development, includes cargo and rustc
include = ["desktop.toml"]
# General settings
[general]
# Filesystem size in MiB
filesystem_size = 2048
# Do not prompt if settings are not defined
prompt = false
# Package settings
[packages]
cargo = {}
crates-io-index = {}
gcc13 = {}
gnu-binutils = {}
gnu-make = {}
rust = {}
[[files]]
path = "/home/user/example.rs"
data = """
fn main() {
println!("Hello, Redox!");
}
"""

3
config/i686/acid.toml Normal file
View File

@ -0,0 +1,3 @@
# Configuration for using acid
include = ["../acid.toml"]

View File

@ -13,7 +13,7 @@ bootstrap = {}
ca-certificates = {}
contain = {}
coreutils = {}
#dash = {} # relibc issues?
dash = {}
diffutils = {}
drivers = {}
escalated = {}
@ -21,12 +21,14 @@ extrautils = {}
findutils = {}
initfs = {}
installer = {}
installer-gui = {}
ion = {}
ipcd = {}
kernel = {}
nano = {}
netdb = {}
netstack = {}
#netsurf = {} # openssl issues
netsurf = {}
netutils = {}
orbdata = {}
orbital = {}
@ -40,5 +42,6 @@ resist = {}
smith = {}
userutils = {}
uutils = {}
vim = {}
#TODO: Add more packages

View File

@ -22,197 +22,26 @@
# #
##############################################################################
include = ["../desktop.toml"]
# General settings
[general]
# Filesystem size in MiB
filesystem_size = 512
# Do not prompt if settings are not defined
prompt = false
# Package settings
[packages]
audiod = {}
bootloader = {}
bootstrap = {}
ca-certificates = {}
contain = {}
coreutils = {}
#dash = {} # relibc issues?
diffutils = {}
drivers = {}
escalated = {}
extrautils = {}
findutils = {}
initfs = {}
installer = {}
ion = {}
ipcd = {}
kernel = {}
netdb = {}
netstack = {}
#netsurf = {} # openssl issues
netutils = {}
orbdata = {}
orbital = {}
orbterm = {}
orbutils = {}
pkgutils = {}
ptyd = {}
redoxfs = {}
relibc = {}
resist = {}
smith = {}
userutils = {}
uutils = {}
# Games
dosbox = {}
freedoom = {}
prboom = {}
redox-games = {}
#TODO: Add demos
# Demos
pixelcannon = {}
# User settings
[users.root]
password = "password"
uid = 0
gid = 0
name = "root"
home = "/root"
[users.user]
# Password is unset
password = ""
[[files]]
path = "/etc/init.d/00_base"
data = """
ipcd
ptyd
pcid /etc/pcid.d/
escalated
"""
[[files]]
path = "/etc/init.d/10_net"
data = """
smolnetd
dnsd
dhcpd -b
"""
[[files]]
path = "/etc/init.d/20_orbital"
data = """
audiod
orbital display:3/activate orblogin launcher
"""
[[files]]
path = "/etc/init.d/30_console"
data = """
getty display:2
getty debug: -J
"""
[[files]]
path = "/etc/net/dns"
data = """
208.67.222.222
"""
[[files]]
path = "/etc/net/ip"
data = """
10.0.2.15
"""
[[files]]
path = "/etc/net/ip_router"
data = """
10.0.2.2
"""
[[files]]
path = "/etc/net/ip_subnet"
data = """
255.255.255.0
"""
[[files]]
path = "/etc/net/mac"
data = """
54-52-00-ab-cd-ef
"""
[[files]]
path = "/etc/pkg.d/50_redox"
data = "https://static.redox-os.org/pkg"
[[files]]
path = "/etc/redox-release"
data = "0.8.0"
[[files]]
path = "/etc/group"
data = """
root;0;root
user;1000;user
sudo;1;user
"""
[[files]]
path = "/etc/hostname"
data = """
redox
"""
[[files]]
path = "/usr/bin"
data = "../bin"
symlink = true
[[files]]
path = "/usr/games"
data = "../games"
symlink = true
[[files]]
path = "/usr/include"
data = "../include"
symlink = true
[[files]]
path = "/usr/lib"
data = "../lib"
symlink = true
[[files]]
path = "/usr/share"
data = "../share"
symlink = true
[[files]]
path = "/tmp"
data = ""
directory= true
# 0o1777
mode = 1023
[[files]]
path = "/dev/null"
data = "null:"
symlink = true
[[files]]
path = "/dev/random"
data = "rand:"
symlink = true
[[files]]
path = "/dev/urandom"
data = "rand:"
symlink = true
[[files]]
path = "/dev/zero"
data = "zero:"
symlink = true
# MIDI
freepats = {}
[[files]]
path = "/home/user/Welcome.txt"

View File

@ -1,132 +1,14 @@
# Default desktop configuration
include = ["../desktop-minimal.toml"]
# Override the default settings here
# General settings
[general]
# Filesystem size in MiB
filesystem_size = 128
# Do not prompt if settings are not defined
prompt = false
# filesystem_size = 1024
# Package settings
[packages]
bootstrap = {}
coreutils = {}
escalated = {}
extrautils = {}
initfs = {}
ion = {}
ipcd = {}
kernel = {}
orbdata = {}
orbital = {}
orbterm = {}
orbutils-background = {}
orbutils-launcher = {}
orbutils-orblogin = {}
ptyd = {}
smith = {}
userutils = {}
uutils = {}
# User settings
[users.root]
password = "password"
uid = 0
gid = 0
name = "root"
home = "/root"
[users.user]
# Password is unset
password = ""
[[files]]
path = "/etc/init.d/00_base"
data = """
ipcd
ptyd
escalated
"""
[[files]]
path = "/etc/init.d/20_orbital"
data = """
orbital display:3/activate orblogin launcher
"""
[[files]]
path = "/etc/init.d/30_console"
data = """
getty display:2
getty debug: -J
"""
[[files]]
path = "/etc/redox-release"
data = "0.8.0"
[[files]]
path = "/etc/group"
data = """
root;0;root
user;1000;user
sudo;1;user
"""
[[files]]
path = "/etc/hostname"
data = """
redox
"""
[[files]]
path = "/usr/bin"
data = "../bin"
symlink = true
[[files]]
path = "/usr/games"
data = "../games"
symlink = true
[[files]]
path = "/usr/include"
data = "../include"
symlink = true
[[files]]
path = "/usr/lib"
data = "../lib"
symlink = true
[[files]]
path = "/usr/share"
data = "../share"
symlink = true
[[files]]
path = "/tmp"
data = ""
directory= true
# 0o1777
mode = 1023
[[files]]
path = "/dev/null"
data = "null:"
symlink = true
[[files]]
path = "/dev/random"
data = "rand:"
symlink = true
[[files]]
path = "/dev/urandom"
data = "rand:"
symlink = true
[[files]]
path = "/dev/zero"
data = "zero:"
symlink = true
# example = {}

View File

@ -1,191 +1,14 @@
# Default desktop configuration
include = ["../desktop.toml"]
# Override the default settings here
# General settings
[general]
# Filesystem size in MiB
filesystem_size = 256
# Do not prompt if settings are not defined
prompt = false
# filesystem_size = 1024
# Package settings
[packages]
audiod = {}
bootloader = {}
bootstrap = {}
ca-certificates = {}
contain = {}
coreutils = {}
#dash = {} # relibc issues?
diffutils = {}
drivers = {}
escalated = {}
extrautils = {}
findutils = {}
initfs = {}
installer = {}
ion = {}
ipcd = {}
kernel = {}
netdb = {}
netstack = {}
#netsurf = {} # openssl issues
netutils = {}
orbdata = {}
orbital = {}
orbterm = {}
orbutils = {}
pkgutils = {}
ptyd = {}
redoxfs = {}
relibc = {}
resist = {}
smith = {}
userutils = {}
uutils = {}
# User settings
[users.root]
password = "password"
uid = 0
gid = 0
name = "root"
home = "/root"
[users.user]
# Password is unset
password = ""
[[files]]
path = "/etc/init.d/00_base"
data = """
ipcd
ptyd
pcid /etc/pcid.d/
escalated
"""
[[files]]
path = "/etc/init.d/10_net"
data = """
smolnetd
dnsd
dhcpd -b
"""
[[files]]
path = "/etc/init.d/20_orbital"
data = """
audiod
orbital display:3/activate orblogin launcher
"""
[[files]]
path = "/etc/init.d/30_console"
data = """
getty display:2
getty debug: -J
"""
[[files]]
path = "/etc/net/dns"
data = """
208.67.222.222
"""
[[files]]
path = "/etc/net/ip"
data = """
10.0.2.15
"""
[[files]]
path = "/etc/net/ip_router"
data = """
10.0.2.2
"""
[[files]]
path = "/etc/net/ip_subnet"
data = """
255.255.255.0
"""
[[files]]
path = "/etc/net/mac"
data = """
54-52-00-ab-cd-ef
"""
[[files]]
path = "/etc/pkg.d/50_redox"
data = "https://static.redox-os.org/pkg"
[[files]]
path = "/etc/redox-release"
data = "0.8.0"
[[files]]
path = "/etc/group"
data = """
root;0;root
user;1000;user
sudo;1;user
"""
[[files]]
path = "/etc/hostname"
data = """
redox
"""
[[files]]
path = "/usr/bin"
data = "../bin"
symlink = true
[[files]]
path = "/usr/games"
data = "../games"
symlink = true
[[files]]
path = "/usr/include"
data = "../include"
symlink = true
[[files]]
path = "/usr/lib"
data = "../lib"
symlink = true
[[files]]
path = "/usr/share"
data = "../share"
symlink = true
[[files]]
path = "/tmp"
data = ""
directory= true
# 0o1777
mode = 1023
[[files]]
path = "/dev/null"
data = "null:"
symlink = true
[[files]]
path = "/dev/random"
data = "rand:"
symlink = true
[[files]]
path = "/dev/urandom"
data = "rand:"
symlink = true
[[files]]
path = "/dev/zero"
data = "zero:"
symlink = true
# example = {}

14
config/i686/dev.toml Normal file
View File

@ -0,0 +1,14 @@
# Configuration for development, includes cargo and rustc
include = ["../dev.toml"]
# Override the default settings here
# General settings
[general]
# Filesystem size in MiB
# filesystem_size = 1024
# Package settings
[packages]
# example = {}

View File

@ -1,48 +1,14 @@
# Jeremy's configuration
include = ["../desktop.toml"]
# General settings
[general]
# Filesystem size in MiB
filesystem_size = 512
# Do not prompt if settings are not defined
prompt = false
filesystem_size = 4000
# Package settings
[packages]
audiod = {}
bootloader = {}
bootstrap = {}
ca-certificates = {}
contain = {}
coreutils = {}
#dash = {} # relibc issues?
diffutils = {}
drivers = {}
escalated = {}
extrautils = {}
findutils = {}
initfs = {}
installer = {}
ion = {}
ipcd = {}
kernel = {}
netdb = {}
netstack = {}
#netsurf = {} # openssl issues
netutils = {}
orbdata = {}
orbital = {}
orbterm = {}
orbutils = {}
pkgutils = {}
ptyd = {}
redoxfs = {}
relibc = {}
resist = {}
smith = {}
userutils = {}
uutils = {}
# apps
cosmic-text = {}
pixelcannon = {}
@ -60,184 +26,15 @@ rodioplay = {}
winit = {}
# games
games = {}
dosbox = {}
eduke32 = {}
freedoom = {}
prboom = {}
redox-games = {}
# stuff
freepats = {}
generaluser-gs = {}
jeremy = {}
keyboard-sfx = {}
terminfo = {}
ttf-hack = {}
# User settings
[users.root]
password = "password"
uid = 0
gid = 0
name = "root"
home = "/root"
[users.user]
# Password is unset
password = ""
[[files]]
path = "/etc/init.d/00_base"
data = """
ipcd
ptyd
pcid /etc/pcid.d/
escalated
"""
[[files]]
path = "/etc/init.d/10_net"
data = """
smolnetd
dnsd
dhcpd -b
"""
[[files]]
path = "/etc/init.d/20_orbital"
data = """
audiod
orbital display:3/activate orblogin launcher
"""
[[files]]
path = "/etc/init.d/30_console"
data = """
getty display:2
getty debug: -J
"""
[[files]]
path = "/etc/net/dns"
data = """
208.67.222.222
"""
[[files]]
path = "/etc/net/ip"
data = """
10.0.2.15
"""
[[files]]
path = "/etc/net/ip_router"
data = """
10.0.2.2
"""
[[files]]
path = "/etc/net/ip_subnet"
data = """
255.255.255.0
"""
[[files]]
path = "/etc/net/mac"
data = """
54-52-00-ab-cd-ef
"""
[[files]]
path = "/etc/pkg.d/50_redox"
data = "https://static.redox-os.org/pkg"
[[files]]
path = "/etc/redox-release"
data = "0.8.0"
[[files]]
path = "/etc/group"
data = """
root;0;root
user;1000;user
sudo;1;user
"""
[[files]]
path = "/etc/hostname"
data = """
redox
"""
[[files]]
path = "/usr/bin"
data = "../bin"
symlink = true
[[files]]
path = "/usr/games"
data = "../games"
symlink = true
[[files]]
path = "/usr/include"
data = "../include"
symlink = true
[[files]]
path = "/usr/lib"
data = "../lib"
symlink = true
[[files]]
path = "/usr/share"
data = "../share"
symlink = true
[[files]]
path = "/tmp"
data = ""
directory= true
# 0o1777
mode = 1023
[[files]]
path = "/dev/null"
data = "null:"
symlink = true
[[files]]
path = "/dev/random"
data = "rand:"
symlink = true
[[files]]
path = "/dev/urandom"
data = "rand:"
symlink = true
[[files]]
path = "/dev/zero"
data = "zero:"
symlink = true
[[files]]
path = "/home/user/Welcome.txt"
data = """
##############################################################################
# #
# Welcome to Redox! #
# #
# Redox is an operating system written in Rust, a language with focus #
# on safety and high performance. Redox, following the microkernel design, #
# aims to be secure, usable, and free. Redox is inspired by previous kernels #
# and operating systems, such as SeL4, MINIX, Plan 9, and BSD. #
# #
# Redox _is not_ just a kernel, it's a full-featured Operating System, #
# providing packages (memory allocator, file system, display manager, core #
# utilities, etc.) that together make up a functional and convenient #
# operating system. You can loosely think of it as the GNU or BSD ecosystem, #
# but in a memory safe language and with modern technology. #
# #
# The website can be found at https://www.redox-os.org. #
# #
# For things to try on Redox, please see #
# https://doc.redox-os.org/book/ch02-06-trying-out-redox.html #
# #
##############################################################################
"""

3
config/i686/resist.toml Normal file
View File

@ -0,0 +1,3 @@
# Configuration for using resist
include = ["../resist.toml"]

View File

@ -1,120 +1,14 @@
# Minimal configuration
include = ["../server-minimal.toml"]
# Override the default settings here
# General settings
[general]
# Filesystem size in MiB
filesystem_size = 64
# Do not prompt if settings are not defined
prompt = false
# filesystem_size = 1024
# Package settings
[packages]
bootstrap = {}
coreutils = {}
escalated = {}
extrautils = {}
initfs = {}
ion = {}
ipcd = {}
kernel = {}
ptyd = {}
smith = {}
userutils = {}
uutils = {}
# User settings
[users.root]
password = "password"
uid = 0
gid = 0
name = "root"
home = "/root"
[users.user]
# Password is unset
password = ""
[[files]]
path = "/etc/init.d/00_base"
data = """
ipcd
ptyd
escalated
"""
[[files]]
path = "/etc/init.d/30_console"
data = """
getty display:2/activate
getty debug: -J
"""
[[files]]
path = "/etc/redox-release"
data = "0.8.0"
[[files]]
path = "/etc/group"
data = """
root;0;root
user;1000;user
sudo;1;user
"""
[[files]]
path = "/etc/hostname"
data = """
redox
"""
[[files]]
path = "/usr/bin"
data = "../bin"
symlink = true
[[files]]
path = "/usr/games"
data = "../games"
symlink = true
[[files]]
path = "/usr/include"
data = "../include"
symlink = true
[[files]]
path = "/usr/lib"
data = "../lib"
symlink = true
[[files]]
path = "/usr/share"
data = "../share"
symlink = true
[[files]]
path = "/tmp"
data = ""
directory= true
# 0o1777
mode = 1023
[[files]]
path = "/dev/null"
data = "null:"
symlink = true
[[files]]
path = "/dev/random"
data = "rand:"
symlink = true
[[files]]
path = "/dev/urandom"
data = "rand:"
symlink = true
[[files]]
path = "/dev/zero"
data = "zero:"
symlink = true
# example = {}

View File

@ -1,177 +1,14 @@
# Default server configuration
include = ["../server.toml"]
# Override the default settings here
# General settings
[general]
# Filesystem size in MiB
filesystem_size = 128
# Do not prompt if settings are not defined
prompt = false
# filesystem_size = 1024
# Package settings
[packages]
bootloader = {}
bootstrap = {}
ca-certificates = {}
contain = {}
coreutils = {}
#dash = {} # relibc issues?
diffutils = {}
drivers = {}
escalated = {}
extrautils = {}
findutils = {}
initfs = {}
installer = {}
ion = {}
ipcd = {}
kernel = {}
netdb = {}
netstack = {}
netutils = {}
pkgutils = {}
ptyd = {}
redoxfs = {}
resist = {}
smith = {}
userutils = {}
uutils = {}
# User settings
[users.root]
password = "password"
uid = 0
gid = 0
name = "root"
home = "/root"
[users.user]
# Password is unset
password = ""
[[files]]
path = "/etc/init.d/00_base"
data = """
ipcd
ptyd
pcid /etc/pcid.d/
escalated
"""
[[files]]
path = "/etc/init.d/10_net"
data = """
smolnetd
dnsd
dhcpd -b
"""
[[files]]
path = "/etc/init.d/30_console"
data = """
getty display:2/activate
getty debug: -J
"""
[[files]]
path = "/etc/net/dns"
data = """
208.67.222.222
"""
[[files]]
path = "/etc/net/ip"
data = """
10.0.2.15
"""
[[files]]
path = "/etc/net/ip_router"
data = """
10.0.2.2
"""
[[files]]
path = "/etc/net/ip_subnet"
data = """
255.255.255.0
"""
[[files]]
path = "/etc/net/mac"
data = """
54-52-00-ab-cd-ef
"""
[[files]]
path = "/etc/pkg.d/50_redox"
data = "https://static.redox-os.org/pkg"
[[files]]
path = "/etc/redox-release"
data = "0.8.0"
[[files]]
path = "/etc/group"
data = """
root;0;root
user;1000;user
sudo;1;user
"""
[[files]]
path = "/etc/hostname"
data = """
redox
"""
[[files]]
path = "/usr/bin"
data = "../bin"
symlink = true
[[files]]
path = "/usr/games"
data = "../games"
symlink = true
[[files]]
path = "/usr/include"
data = "../include"
symlink = true
[[files]]
path = "/usr/lib"
data = "../lib"
symlink = true
[[files]]
path = "/usr/share"
data = "../share"
symlink = true
[[files]]
path = "/tmp"
data = ""
directory= true
# 0o1777
mode = 1023
[[files]]
path = "/dev/null"
data = "null:"
symlink = true
[[files]]
path = "/dev/random"
data = "rand:"
symlink = true
[[files]]
path = "/dev/urandom"
data = "rand:"
symlink = true
[[files]]
path = "/dev/zero"
data = "zero:"
symlink = true
# example = {}

51
config/net.toml Normal file
View File

@ -0,0 +1,51 @@
# Net configuration: includes the base configuration and adds files required
# for networking
include = ["base.toml"]
# Package settings
[packages]
drivers = {}
netstack = {}
netutils = {}
## Driver init
[[files]]
path = "/usr/lib/init.d/00_drivers"
data = """
pcid /etc/pcid.d/
"""
## Network init
[[files]]
path = "/usr/lib/init.d/10_net"
data = """
smolnetd
dnsd
dhcpd -b
"""
## Default net configuration (optimized for QEMU)
[[files]]
path = "/etc/net/dns"
data = """
208.67.222.222
"""
[[files]]
path = "/etc/net/ip"
data = """
10.0.2.15
"""
[[files]]
path = "/etc/net/ip_router"
data = """
10.0.2.2
"""
[[files]]
path = "/etc/net/ip_subnet"
data = """
255.255.255.0
"""

17
config/redoxer-gui.toml Normal file
View File

@ -0,0 +1,17 @@
# Configuration for redoxer GUI image
include = ["redoxer.toml"]
# Package settings
[packages]
orbdata = {}
orbital = {}
# Override to run inside of orbital
[[files]]
path = "/usr/lib/init.d/30_redoxer"
data = """
echo
echo ## running redoxer in orbital ##
orbital redoxerd
"""

53
config/redoxer.toml Normal file
View File

@ -0,0 +1,53 @@
# Configuration for redoxer image
include = ["net.toml"]
# Package settings
[packages]
bash = {}
ca-certificates = {}
coreutils = {}
extrautils = {}
findutils = {}
gcc13 = {}
gnu-binutils = {}
netdb = {}
pkgutils = {}
redoxerd = {}
relibc = {}
# Override to not background dhcpd
[[files]]
path = "/usr/lib/init.d/10_net"
data = """
smolnetd
dnsd
dhcpd
"""
[[files]]
path = "/usr/lib/init.d/20_env"
data = """
echo
echo ## preparing environment ##
export GROUPS 0
export HOME /root
export HOST redox
export SHELL /bin/sh
export UID 0
export USER root
cd /root
env
"""
[[files]]
path = "/usr/lib/init.d/30_redoxer"
data = """
echo
echo ## running redoxer ##
redoxerd
"""
[[files]]
path = "/etc/pkg.d/50_redox"
data = "https://static.redox-os.org/pkg"

45
config/resist.toml Normal file
View File

@ -0,0 +1,45 @@
# Configuration for using resist
include = ["net.toml"]
# General settings
[general]
# Filesystem size in MiB
filesystem_size = 256
# Package settings
[packages]
bash = {}
coreutils = {}
diffutils = {}
extrautils = {}
findutils = {}
gcc13 = {}
gnu-binutils = {}
gnu-make = {}
netdb = {}
resist = {}
userutils = {}
# Override to not background dhcpd
[[files]]
path = "/usr/lib/init.d/10_net"
data = """
smolnetd
dnsd
dhcpd
"""
[[files]]
path = "/usr/lib/init.d/20_resist"
data = """
export RUST_BACKTRACE full
resist /share/resist/redox/spec.toml
resist /share/resist/posix/base.toml
resist /share/resist/posix/shell.toml
shutdown
"""
[[files]]
path = "/etc/pkg.d/50_redox"
data = "https://static.redox-os.org/pkg"

View File

@ -0,0 +1,23 @@
# Minimal configuration
include = ["base.toml"]
# General settings
[general]
# Filesystem size in MiB
filesystem_size = 128
# Package settings
[packages]
coreutils = {}
extrautils = {}
ion = {}
smith = {}
userutils = {}
[[files]]
path = "/usr/lib/init.d/30_console"
data = """
getty 2
getty debug: -J
"""

44
config/server.toml Normal file
View File

@ -0,0 +1,44 @@
# Default server configuration
include = ["net.toml"]
# General settings
[general]
# Filesystem size in MiB
filesystem_size = 512
# Package settings
[packages]
bash = {}
ca-certificates = {}
contain = {}
coreutils = {}
curl = {}
diffutils = {}
extrautils = {}
findutils = {}
git = {}
installer = {}
ion = {}
nano = {}
netdb = {}
pkgutils = {}
redoxfs = {}
relibc = {}
resist = {}
smith = {}
terminfo = {}
userutils = {}
vim = {}
[[files]]
path = "/usr/lib/init.d/30_console"
data = """
inputd -A 2
getty 2
getty debug: -J
"""
[[files]]
path = "/etc/pkg.d/50_redox"
data = "https://static.redox-os.org/pkg"

View File

@ -1,86 +1,3 @@
# Configuration for using acid
# General settings
[general]
# Filesystem size in MiB
filesystem_size = 256
# Do not prompt if settings are not defined
prompt = false
# Package settings
[packages]
bootloader = {}
bootstrap = {}
acid = {}
coreutils = {}
# TODO: Does this need escalated?
escalated = {}
initfs = {}
ion = {}
ipcd = {}
kernel = {}
ptyd = {}
# User settings
[users.root]
password = "password"
uid = 0
gid = 0
name = "root"
home = "/root"
[users.user]
# Password is unset
password = ""
[[files]]
path = "/etc/init.d/00_base"
data = """
ipcd
ptyd
escalated
"""
[[files]]
path = "/etc/init.d/10_acid"
data = """
export RUST_BACKTRACE full
acid
acid create_test
acid switch
acid tls
acid thread
shutdown
"""
[[files]]
path = "/usr/bin"
data = "../bin"
symlink = true
[[files]]
path = "/usr/games"
data = "../games"
symlink = true
[[files]]
path = "/usr/include"
data = "../include"
symlink = true
[[files]]
path = "/usr/lib"
data = "../lib"
symlink = true
[[files]]
path = "/usr/share"
data = "../share"
symlink = true
[[files]]
path = "/tmp"
data = ""
directory= true
# 0o1777
mode = 1023
include = ["../acid.toml"]

View File

@ -20,18 +20,20 @@ ca-certificates = {}
cairo = {}
cairodemo = {}
#calculator = {}
#cargo = {} # curl-config not found
cargo = {}
cleye = {}
#cmatrix = {} # needs ncursesw now
contain = {}
coreutils = {}
cosmic-edit = {}
cosmic-icons = {}
cosmic-text = {}
cpal = {}
curl = {}
dash = {}
diffutils = {}
dosbox = {}
drivers = {}
#drivers-041 = {}
drivers-initfs = {}
duktape = {}
eduke32 = {}
@ -41,19 +43,19 @@ expat = {}
extrautils = {}
#fal
#fd = {} # ctrlc-3.1.1
#ffmpeg = {} # undefined references
ffmpeg6 = {}
findutils = {}
fontconfig = {}
#freeciv = {}
freedoom = {}
#freeglut = {}
freetype = {}
freepats = {}
freetype2 = {}
#friar = {} # mio patch
fribidi = {}
#game-2048 = {} # rustc-serialize
games = {}
#gawk = {} # langinfo.h
gcc = {}
gcc13 = {}
gdbserver = {}
#gdk-pixbuf = {} # shared-mime-info
gears = {}
@ -73,9 +75,11 @@ harfbuzz = {}
init = {}
initfs = {}
installer = {}
installer-gui = {}
intel-one-mono = {}
ion = {}
ipcd = {}
jansson = {}
#jansson = {} # needs config.sub update
kernel = {}
keyboard-sfx = {}
lci = {}
@ -92,12 +96,14 @@ libvorbis = {}
libxml2 = {}
llvm = {}
logd = {}
#lua = {} # tmpnam
lua54 = {}
#mdp = {} # ncursesw
mednafen = {}
mesa = {}
mesa_glu = {}
mesa-glu = {}
mgba = {}
#miniserve = {} # actix
nano = {}
nasm = {}
#ncdu = {} # fails to link with ncurses
ncurses = {}
@ -110,9 +116,9 @@ neverball = {}
#newlib = {} # obsolete
#newlibtest = {} # obsolete
nghttp2 = {}
nulld = {}
nushell = {}
openjazz = {}
openssl = {}
openssl1 = {}
openttd = {}
openttd-opengfx = {}
openttd-openmsx = {}
@ -122,16 +128,17 @@ orbdata = {}
orbital = {}
orbterm = {}
orbutils = {}
orbutils-background = {}
orbutils-launcher = {}
orbutils-orblogin = {}
#orbutils-background = {} # needs recipe update
#orbutils-launcher = {} # needs recipe update
#orbutils-orblogin = {} # needs recipe update
osdemo = {}
pango = {}
#pango = {} # undefined references to std::__throw_system_error(int)
#pastel = {} # needs crate patches for redox-unix
patch = {}
#pathfinder = {} # servo-fontconfig
#pciids = {}
pcre = {}
perg = {}
periodictable = {}
#perl = {} # ctermid, tempnam, ttyname
pixelcannon = {}
@ -139,8 +146,10 @@ pixman = {}
#pkgar = {} # uses virtual Cargo.toml, needs recipe update
pkg-config = {}
pkgutils = {}
pop-icon-theme = {}
#powerline = {} # dirs
prboom = {}
procedural-wallpapers-rs = {}
ptyd = {}
#python = {} # getaddrinfo
#qemu = {}
@ -148,37 +157,39 @@ ramfs = {}
randd = {}
readline = {}
redoxerd = {}
#redox-fatfs = {}
redox-fatfs = {}
redoxfs = {}
#redox-ssh = {}
redox-games = {}
redox-ssh = {}
relibc = {}
#relibc-tests = {}
#relibc-tests = {} # madvise link error
resist = {}
retroarch = {}
#retroarch = {} # OS_TLSIndex not declared
ripgrep = {}
rodioplay = {}
rs-nes = {}
#rust = {}
rust = {}
rust64 = {}
rust-cairo = {}
rust-cairo-demo = {}
rustual-boy = {}
schismtracker = {}
scummvm = {}
sdl = {}
sdl2 = {}
sdl2_gears = {}
sdl2_image = {}
sdl2_mixer = {}
sdl2_ttf = {}
sdl_gfx = {}
sdl_image = {}
sdl_mixer = {}
sdl-gfx = {}
#sdl-player = {} # wctype_t
sdl_ttf = {}
sdl1 = {}
sdl1-image = {}
sdl1-mixer = {}
sdl1-ttf = {}
sdl2 = {}
sdl2-gears = {}
sdl2-image = {}
sdl2-mixer = {}
sdl2-ttf = {}
sed = {}
#servo = {} # some more crates to port
#shared-mime-info = {} # intltool-update out of date
shared-mime-info = {}
shellharden = {}
shellstorm = {}
smith = {}
sodium = {}
@ -192,13 +203,13 @@ timidity = {}
ttf-hack = {}
userutils = {}
uutils = {}
vice = {}
#vice = {} # linker errors
vim = {}
vttest = {}
vvvvvv = {}
#webrender = {} # unwind
#wesnoth = {}
winit = {}
#winit = {} # tzset
xz = {}
zerod = {}
zlib = {}

View File

@ -22,216 +22,54 @@
# #
##############################################################################
include = ["../desktop.toml"]
# General settings
[general]
# Filesystem size in MiB
filesystem_size = 768
# Do not prompt if settings are not defined
prompt = false
filesystem_size = 1536
# Package settings
[packages]
audiod = {}
bootloader = {}
bootstrap = {}
ca-certificates = {}
contain = {}
coreutils = {}
dash = {}
diffutils = {}
drivers = {}
escalated = {}
extrautils = {}
findutils = {}
initfs = {}
installer = {}
ion = {}
ipcd = {}
kernel = {}
netdb = {}
netstack = {}
netsurf = {}
netutils = {}
orbdata = {}
orbital = {}
orbterm = {}
orbutils = {}
pkgutils = {}
ptyd = {}
redoxfs = {}
relibc = {}
resist = {}
smith = {}
userutils = {}
uutils = {}
# Apps
# GUI Apps
cosmic-edit = {}
cosmic-files = {}
periodictable = {}
# GUI Data
cosmic-icons = {}
intel-one-mono = {}
pop-icon-theme = {}
shared-mime-info = {}
# Shell Apps
curl = {}
git = {}
gnu-grep = {}
ripgrep = {}
sodium = {}
vim = {}
# Games
dosbox = {}
freedoom = {}
games = {}
neverball = {}
prboom = {}
redox-games = {}
sopwith = {}
syobonaction = {}
# Demos
acid = {}
nushell = {}
orbclient = {}
pixelcannon = {}
rodioplay = {}
gears = {}
# MIDI
freepats = {}
# User settings
[users.root]
password = "password"
uid = 0
gid = 0
name = "root"
home = "/root"
[users.user]
# Password is unset
password = ""
[[files]]
path = "/etc/init.d/00_base"
data = """
ipcd
ptyd
pcid /etc/pcid.d/
escalated
"""
[[files]]
path = "/etc/init.d/10_net"
data = """
smolnetd
dnsd
dhcpd -b
"""
[[files]]
path = "/etc/init.d/20_orbital"
data = """
audiod
orbital display:3/activate orblogin launcher
"""
[[files]]
path = "/etc/init.d/30_console"
data = """
getty display:2
getty debug: -J
"""
[[files]]
path = "/etc/net/dns"
data = """
208.67.222.222
"""
[[files]]
path = "/etc/net/ip"
data = """
10.0.2.15
"""
[[files]]
path = "/etc/net/ip_router"
data = """
10.0.2.2
"""
[[files]]
path = "/etc/net/ip_subnet"
data = """
255.255.255.0
"""
[[files]]
path = "/etc/net/mac"
data = """
54-52-00-ab-cd-ef
"""
[[files]]
path = "/etc/pkg.d/50_redox"
data = "https://static.redox-os.org/pkg"
[[files]]
path = "/etc/redox-release"
data = "0.8.0"
[[files]]
path = "/etc/group"
data = """
root;0;root
user;1000;user
sudo;1;user
"""
[[files]]
path = "/etc/hostname"
data = """
redox
"""
[[files]]
path = "/usr/bin"
data = "../bin"
symlink = true
[[files]]
path = "/usr/games"
data = "../games"
symlink = true
[[files]]
path = "/usr/include"
data = "../include"
symlink = true
[[files]]
path = "/usr/lib"
data = "../lib"
symlink = true
[[files]]
path = "/usr/share"
data = "../share"
symlink = true
[[files]]
path = "/tmp"
data = ""
directory= true
# 0o1777
mode = 1023
[[files]]
path = "/dev/null"
data = "null:"
symlink = true
[[files]]
path = "/dev/random"
data = "rand:"
symlink = true
[[files]]
path = "/dev/urandom"
data = "rand:"
symlink = true
[[files]]
path = "/dev/zero"
data = "zero:"
symlink = true
[[files]]
path = "/home/user/Welcome.txt"
data = """

View File

@ -0,0 +1,41 @@
# Default desktop configuration using contain
include = ["../desktop.toml"]
# Override the default settings here
# General settings
[general]
# Filesystem size in MiB
# filesystem_size = 1024
# Package settings
[packages]
# example = {}
# Override orbital init to use contain_orblogin
[[files]]
path = "/usr/lib/init.d/20_orbital"
data = """
audiod
orbital contain_orblogin launcher
"""
# Override console init to use contain
[[files]]
path = "/usr/lib/init.d/30_console"
data = """
getty --contain 2
getty --contain debug: -J
"""
[[files]]
path = "/etc/contain.toml"
data = """
pass_schemes = ["rand", "null", "tcp", "udp", "thisproc", "pty", "orbital", "display.vesa"]
sandbox_schemes = ["file"]
files = ["file:/dev/null"]
rofiles = ["file:/etc/passwd", "file:/etc/hostname", "file:/etc/localtime"]
dirs = ["file:/tmp"]
rodirs = ["file:/bin", "file:/ui"]
"""

View File

@ -0,0 +1,14 @@
# Default desktop configuration
include = ["../desktop-minimal.toml"]
# Override the default settings here
# General settings
[general]
# Filesystem size in MiB
# filesystem_size = 1024
# Package settings
[packages]
# example = {}

View File

@ -1,191 +1,14 @@
# Default desktop configuration
include = ["../desktop.toml"]
# Override the default settings here
# General settings
[general]
# Filesystem size in MiB
filesystem_size = 256
# Do not prompt if settings are not defined
prompt = false
# filesystem_size = 1024
# Package settings
[packages]
audiod = {}
bootloader = {}
bootstrap = {}
ca-certificates = {}
contain = {}
coreutils = {}
dash = {}
diffutils = {}
drivers = {}
escalated = {}
extrautils = {}
findutils = {}
initfs = {}
installer = {}
ion = {}
ipcd = {}
kernel = {}
netdb = {}
netstack = {}
netsurf = {}
netutils = {}
orbdata = {}
orbital = {}
orbterm = {}
orbutils = {}
pkgutils = {}
ptyd = {}
redoxfs = {}
relibc = {}
resist = {}
smith = {}
userutils = {}
uutils = {}
# User settings
[users.root]
password = "password"
uid = 0
gid = 0
name = "root"
home = "/root"
[users.user]
# Password is unset
password = ""
[[files]]
path = "/etc/init.d/00_base"
data = """
ipcd
ptyd
pcid /etc/pcid.d/
escalated
"""
[[files]]
path = "/etc/init.d/10_net"
data = """
smolnetd
dnsd
dhcpd -b
"""
[[files]]
path = "/etc/init.d/20_orbital"
data = """
audiod
orbital display:3/activate orblogin launcher
"""
[[files]]
path = "/etc/init.d/30_console"
data = """
getty display:2
getty debug: -J
"""
[[files]]
path = "/etc/net/dns"
data = """
208.67.222.222
"""
[[files]]
path = "/etc/net/ip"
data = """
10.0.2.15
"""
[[files]]
path = "/etc/net/ip_router"
data = """
10.0.2.2
"""
[[files]]
path = "/etc/net/ip_subnet"
data = """
255.255.255.0
"""
[[files]]
path = "/etc/net/mac"
data = """
54-52-00-ab-cd-ef
"""
[[files]]
path = "/etc/pkg.d/50_redox"
data = "https://static.redox-os.org/pkg"
[[files]]
path = "/etc/redox-release"
data = "0.8.0"
[[files]]
path = "/etc/group"
data = """
root;0;root
user;1000;user
sudo;1;user
"""
[[files]]
path = "/etc/hostname"
data = """
redox
"""
[[files]]
path = "/usr/bin"
data = "../bin"
symlink = true
[[files]]
path = "/usr/games"
data = "../games"
symlink = true
[[files]]
path = "/usr/include"
data = "../include"
symlink = true
[[files]]
path = "/usr/lib"
data = "../lib"
symlink = true
[[files]]
path = "/usr/share"
data = "../share"
symlink = true
[[files]]
path = "/tmp"
data = ""
directory= true
# 0o1777
mode = 1023
[[files]]
path = "/dev/null"
data = "null:"
symlink = true
[[files]]
path = "/dev/random"
data = "rand:"
symlink = true
[[files]]
path = "/dev/urandom"
data = "rand:"
symlink = true
[[files]]
path = "/dev/zero"
data = "zero:"
symlink = true
# example = {}

View File

@ -1,208 +1,14 @@
# Configuration for development, includes cargo and rustc
include = ["../dev.toml"]
# Override the default settings here
# General settings
[general]
# Filesystem size in MiB
filesystem_size = 1024
# Do not prompt if settings are not defined
prompt = false
# filesystem_size = 1024
# Package settings
[packages]
audiod = {}
bootloader = {}
bootstrap = {}
ca-certificates = {}
cargo = {}
contain = {}
coreutils = {}
curl = {}
dash = {}
diffutils = {}
drivers = {}
escalated = {}
extrautils = {}
findutils = {}
gcc = {}
git = {}
gnu-binutils = {}
gnu-make = {}
initfs = {}
installer = {}
ion = {}
ipcd = {}
kernel = {}
netdb = {}
netstack = {}
netsurf = {}
netutils = {}
orbdata = {}
orbital = {}
orbterm = {}
orbutils = {}
pkgutils = {}
ptyd = {}
redoxfs = {}
relibc = {}
resist = {}
rust = {}
smith = {}
terminfo = {}
userutils = {}
uutils = {}
vim = {}
# User settings
[users.root]
password = "password"
uid = 0
gid = 0
name = "root"
home = "/root"
[users.user]
# Password is unset
password = ""
[[files]]
path = "/home/user/example.rs"
data = """
fn main() {
println!("Hello, Redox!");
}
"""
[[files]]
path = "/etc/init.d/00_base"
data = """
ipcd
ptyd
pcid /etc/pcid.d/
escalated
"""
[[files]]
path = "/etc/init.d/10_net"
data = """
smolnetd
dnsd
dhcpd -b
"""
[[files]]
path = "/etc/init.d/20_orbital"
data = """
audiod
orbital display:3/activate orblogin launcher
"""
[[files]]
path = "/etc/init.d/30_console"
data = """
getty display:2
getty debug: -J
"""
[[files]]
path = "/etc/net/dns"
data = """
208.67.222.222
"""
[[files]]
path = "/etc/net/ip"
data = """
10.0.2.15
"""
[[files]]
path = "/etc/net/ip_router"
data = """
10.0.2.2
"""
[[files]]
path = "/etc/net/ip_subnet"
data = """
255.255.255.0
"""
[[files]]
path = "/etc/net/mac"
data = """
54-52-00-ab-cd-ef
"""
[[files]]
path = "/etc/pkg.d/50_redox"
data = "https://static.redox-os.org/pkg"
[[files]]
path = "/etc/redox-release"
data = "0.8.0"
[[files]]
path = "/etc/group"
data = """
root;0;root
user;1000;user
sudo;1;user
"""
[[files]]
path = "/etc/hostname"
data = """
redox
"""
[[files]]
path = "/usr/bin"
data = "../bin"
symlink = true
[[files]]
path = "/usr/games"
data = "../games"
symlink = true
[[files]]
path = "/usr/include"
data = "../include"
symlink = true
[[files]]
path = "/usr/lib"
data = "../lib"
symlink = true
[[files]]
path = "/usr/share"
data = "../share"
symlink = true
[[files]]
path = "/tmp"
data = ""
directory= true
# 0o1777
mode = 1023
[[files]]
path = "/dev/null"
data = "null:"
symlink = true
[[files]]
path = "/dev/random"
data = "rand:"
symlink = true
[[files]]
path = "/dev/urandom"
data = "rand:"
symlink = true
[[files]]
path = "/dev/zero"
data = "zero:"
symlink = true
# example = {}

View File

@ -1,49 +1,19 @@
# Jeremy's configuration
include = ["../desktop.toml"]
# General settings
[general]
# Filesystem size in MiB
filesystem_size = 4096
# Do not prompt if settings are not defined
prompt = false
filesystem_size = 8192
# Package settings
[packages]
audiod = {}
bootloader = {}
bootstrap = {}
ca-certificates = {}
contain = {}
coreutils = {}
dash = {}
diffutils = {}
drivers = {}
escalated = {}
extrautils = {}
findutils = {}
initfs = {}
installer = {}
ion = {}
ipcd = {}
kernel = {}
netdb = {}
netstack = {}
netsurf = {}
netutils = {}
orbdata = {}
orbital = {}
orbterm = {}
orbutils = {}
pkgutils = {}
ptyd = {}
redoxfs = {}
relibc = {}
resist = {}
smith = {}
userutils = {}
uutils = {}
# apps
boxedwine = {}
cosmic-edit = {}
cosmic-files = {}
cosmic-term = {}
cosmic-text = {}
periodictable = {}
pixelcannon = {}
@ -52,15 +22,17 @@ sodium = {}
# cli
acid = {}
bash = {}
cleye = {}
curl = {}
ffmpeg = {}
git = {}
ffmpeg6 = {}
gnu-grep = {}
lua54 = {}
nano = {}
nushell = {}
perg = {}
relibc-tests = {}
ripgrep = {}
sed = {}
vim = {}
shellharden = {}
xz = {}
# demos
@ -70,41 +42,53 @@ cpal = {}
gears = {}
glium = {} # does not show anything
glutin = {}
hematite = {}
iced = {}
libcosmic = {}
orbclient = {}
osdemo = {} # does not show anything
pathfinder = {}
procedural-wallpapers-rs = {}
rodioplay = {}
rust-cairo = {}
rust-cairo-demo = {}
sdl2_gears = {}
sdl2-gears = {}
vttest = {}
webrender = {}
winit = {}
# dev
autoconf = {}
automake = {}
gcc = {}
#cargo = {} # openssl issues
#gcc13 = {} # libiberty errors
gnu-binutils = {}
gnu-make = {}
nasm = {}
patch = {}
pkg-config = {}
rust = {}
#rust = {} # takes too long to compile
rustpython = {}
# games
devilutionx = {}
dosbox = {}
eduke32 = {}
flycast = {}
freedoom = {}
games = {}
gigalomania = {}
mednafen = {}
mgba = {}
neverball = {}
openjazz = {}
openjk = {}
openttd = {}
openttd-opengfx = {}
openttd-openmsx = {}
openttd-opensfx = {}
prboom = {}
retroarch = {} # need to package cores
redox-games = {}
#retroarch = {} # need to package cores
rs-nes = {} # need game for testing
rust64 = {} # need roms
rustual-boy = {} # need game for testing
@ -113,162 +97,19 @@ sm64ex = {}
sopwith = {}
spacecadetpinball = {}
syobonaction = {}
vice = {}
#vice = {} # broken on new toolchain
vvvvvv = {}
# stuff
cosmic-icons = {}
freepats = {}
generaluser-gs = {}
intel-one-mono = {}
jeremy = {}
keyboard-sfx = {}
libc-bench = {}
terminfo = {}
noto-color-emoji = {}
pop-icon-theme = {}
shared-mime-info = {}
timidity = {}
ttf-hack = {}
# User settings
[users.root]
password = "password"
uid = 0
gid = 0
name = "root"
home = "/root"
[users.user]
# Password is unset
password = ""
[[files]]
path = "/etc/init.d/00_base"
data = """
ipcd
ptyd
pcid /etc/pcid.d/
escalated
"""
[[files]]
path = "/etc/init.d/10_net"
data = """
smolnetd
dnsd
dhcpd -b
"""
[[files]]
path = "/etc/init.d/20_orbital"
data = """
audiod
orbital display:3/activate orblogin launcher
"""
[[files]]
path = "/etc/init.d/30_console"
data = """
getty display:2
getty debug: -J
"""
[[files]]
path = "/etc/net/dns"
data = """
208.67.222.222
"""
[[files]]
path = "/etc/net/ip"
data = """
10.0.2.15
"""
[[files]]
path = "/etc/net/ip_router"
data = """
10.0.2.2
"""
[[files]]
path = "/etc/net/ip_subnet"
data = """
255.255.255.0
"""
[[files]]
path = "/etc/net/mac"
data = """
54-52-00-ab-cd-ef
"""
[[files]]
path = "/etc/pkg.d/50_redox"
data = "https://static.redox-os.org/pkg"
[[files]]
path = "/etc/redox-release"
data = "0.8.0"
[[files]]
path = "/etc/group"
data = """
root;0;root
user;1000;user
sudo;1;user
"""
[[files]]
path = "/etc/hostname"
data = """
redox
"""
[[files]]
path = "/usr/bin"
data = "../bin"
symlink = true
[[files]]
path = "/usr/games"
data = "../games"
symlink = true
[[files]]
path = "/usr/include"
data = "../include"
symlink = true
[[files]]
path = "/usr/lib"
data = "../lib"
symlink = true
[[files]]
path = "/usr/share"
data = "../share"
symlink = true
[[files]]
path = "/tmp"
data = ""
directory= true
# 0o1777
mode = 1023
[[files]]
path = "/dev/null"
data = "null:"
symlink = true
[[files]]
path = "/dev/random"
data = "rand:"
symlink = true
[[files]]
path = "/dev/urandom"
data = "rand:"
symlink = true
[[files]]
path = "/dev/zero"
data = "zero:"
symlink = true

View File

@ -1,176 +1,3 @@
# Configuration for using resist
# General settings
[general]
# Filesystem size in MiB
filesystem_size = 256
# Do not prompt if settings are not defined
prompt = false
# Package settings
[packages]
bootloader = {}
bootstrap = {}
coreutils = {}
dash = {}
diffutils = {}
drivers = {}
escalated = {}
extrautils = {}
findutils = {}
gcc = {}
gnu-binutils = {}
gnu-make = {}
initfs = {}
ipcd = {}
kernel = {}
netdb = {}
netstack = {}
netutils = {}
ptyd = {}
resist = {}
userutils = {}
uutils = {}
# User settings
[users.root]
password = "password"
uid = 0
gid = 0
name = "root"
home = "/root"
[users.user]
# Password is unset
password = ""
[[files]]
path = "/etc/init.d/00_base"
data = """
ipcd
ptyd
pcid /etc/pcid.d/
escalated
"""
[[files]]
path = "/etc/init.d/10_net"
data = """
smolnetd
dnsd
dhcpd
"""
[[files]]
path = "/etc/init.d/20_resist"
data = """
export RUST_BACKTRACE full
resist /share/resist/redox/spec.toml
resist /share/resist/posix/base.toml
resist /share/resist/posix/shell.toml
shutdown
"""
[[files]]
path = "/etc/net/dns"
data = """
208.67.222.222
"""
[[files]]
path = "/etc/net/ip"
data = """
10.0.2.15
"""
[[files]]
path = "/etc/net/ip_router"
data = """
10.0.2.2
"""
[[files]]
path = "/etc/net/ip_subnet"
data = """
255.255.255.0
"""
[[files]]
path = "/etc/net/mac"
data = """
54-52-00-ab-cd-ef
"""
[[files]]
path = "/etc/pkg.d/50_redox"
data = "https://static.redox-os.org/pkg"
[[files]]
path = "/etc/redox-release"
data = "0.8.0"
[[files]]
path = "/etc/group"
data = """
root;0;root
user;1000;user
sudo;1;user
"""
[[files]]
path = "/etc/hostname"
data = """
redox
"""
[[files]]
path = "/usr/bin"
data = "../bin"
symlink = true
[[files]]
path = "/usr/games"
data = "../games"
symlink = true
[[files]]
path = "/usr/include"
data = "../include"
symlink = true
[[files]]
path = "/usr/lib"
data = "../lib"
symlink = true
[[files]]
path = "/usr/share"
data = "../share"
symlink = true
[[files]]
path = "/tmp"
data = ""
directory= true
# 0o1777
mode = 1023
[[files]]
path = "/dev/null"
data = "null:"
symlink = true
[[files]]
path = "/dev/random"
data = "rand:"
symlink = true
[[files]]
path = "/dev/urandom"
data = "rand:"
symlink = true
[[files]]
path = "/dev/zero"
data = "zero:"
symlink = true
include = ["../resist.toml"]

View File

@ -0,0 +1,14 @@
# Minimal configuration
include = ["../server-minimal.toml"]
# Override the default settings here
# General settings
[general]
# Filesystem size in MiB
# filesystem_size = 1024
# Package settings
[packages]
# example = {}

View File

@ -1,177 +1,14 @@
# Default server configuration
include = ["../server.toml"]
# Override the default settings here
# General settings
[general]
# Filesystem size in MiB
filesystem_size = 256
# Do not prompt if settings are not defined
prompt = false
# filesystem_size = 1024
# Package settings
[packages]
bootloader = {}
bootstrap = {}
ca-certificates = {}
contain = {}
coreutils = {}
dash = {}
diffutils = {}
drivers = {}
escalated = {}
extrautils = {}
findutils = {}
initfs = {}
installer = {}
ion = {}
ipcd = {}
kernel = {}
netdb = {}
netstack = {}
netutils = {}
pkgutils = {}
ptyd = {}
redoxfs = {}
resist = {}
smith = {}
userutils = {}
uutils = {}
# User settings
[users.root]
password = "password"
uid = 0
gid = 0
name = "root"
home = "/root"
[users.user]
# Password is unset
password = ""
[[files]]
path = "/etc/init.d/00_base"
data = """
ipcd
ptyd
pcid /etc/pcid.d/
escalated
"""
[[files]]
path = "/etc/init.d/10_net"
data = """
smolnetd
dnsd
dhcpd -b
"""
[[files]]
path = "/etc/init.d/30_console"
data = """
getty display:2/activate
getty debug: -J
"""
[[files]]
path = "/etc/net/dns"
data = """
208.67.222.222
"""
[[files]]
path = "/etc/net/ip"
data = """
10.0.2.15
"""
[[files]]
path = "/etc/net/ip_router"
data = """
10.0.2.2
"""
[[files]]
path = "/etc/net/ip_subnet"
data = """
255.255.255.0
"""
[[files]]
path = "/etc/net/mac"
data = """
54-52-00-ab-cd-ef
"""
[[files]]
path = "/etc/pkg.d/50_redox"
data = "https://static.redox-os.org/pkg"
[[files]]
path = "/etc/redox-release"
data = "0.8.0"
[[files]]
path = "/etc/group"
data = """
root;0;root
user;1000;user
sudo;1;user
"""
[[files]]
path = "/etc/hostname"
data = """
redox
"""
[[files]]
path = "/usr/bin"
data = "../bin"
symlink = true
[[files]]
path = "/usr/games"
data = "../games"
symlink = true
[[files]]
path = "/usr/include"
data = "../include"
symlink = true
[[files]]
path = "/usr/lib"
data = "../lib"
symlink = true
[[files]]
path = "/usr/share"
data = "../share"
symlink = true
[[files]]
path = "/tmp"
data = ""
directory= true
# 0o1777
mode = 1023
[[files]]
path = "/dev/null"
data = "null:"
symlink = true
[[files]]
path = "/dev/random"
data = "rand:"
symlink = true
[[files]]
path = "/dev/urandom"
data = "rand:"
symlink = true
[[files]]
path = "/dev/zero"
data = "zero:"
symlink = true
# example = {}

@ -1 +1 @@
Subproject commit 3d72057d3a309269df674c4ca874161302fa26a8
Subproject commit d0378b5c485ef7943e744ebeda4ecc453c7cd7b7

View File

@ -30,8 +30,8 @@ RUN set -ex; \
x86-64-unknown-redox-binutils \
x86-64-unknown-redox-gcc \
; \
cargo install xargo; \
cargo install cargo-config; \
cargo install just@1.16.0; \
apt-get autoremove -q -y; \
apt-get clean -q -y; \
rm -rf /var/lib/apt/lists/*

@ -1 +1 @@
Subproject commit f710fa79db52e86f2c93c1bfa4f6ef0614c15a30
Subproject commit 1c30f4a3c1f55974aed694b478ff77c0552a1576

View File

@ -8,12 +8,13 @@ ci-img: FORCE
rm -rf $(IMG_DIR)
mkdir -p $(IMG_DIR)
$(MAKE) demo desktop server
cd $(IMG_DIR) && zstd --rm *
cd $(IMG_DIR) && sha256sum -b * > SHA256SUM
# The name of the target must match the name of the filesystem config file
desktop server demo: FORCE
rm -f "build/$(ARCH)/$@/harddrive.img" "build/$(ARCH)/$@/livedisk.iso"
$(MAKE) FILESYSTEM_CONFIG=config/$(ARCH)/$@.toml build/$(ARCH)/$@/harddrive.img build/$(ARCH)/$@/livedisk.iso
$(MAKE) CONFIG_NAME=$@ build/$(ARCH)/$@/harddrive.img build/$(ARCH)/$@/livedisk.iso
cp "build/$(ARCH)/$@/harddrive.img" "$(IMG_DIR)/redox_$(@)$(IMG_SEPARATOR)$(IMG_TAG)_harddrive.img"
cp "build/$(ARCH)/$@/livedisk.iso" "$(IMG_DIR)/redox_$(@)$(IMG_SEPARATOR)$(IMG_TAG)_livedisk.iso"
@ -25,7 +26,7 @@ ci-pkg: prefix FORCE
PACKAGES="$$($(INSTALLER) --list-packages -c config/$(ARCH)/ci.toml)" && \
cd cookbook && \
./fetch.sh "$${PACKAGES}" && \
./repo.sh "$${PACKAGES}"
./repo.sh $(REPO_NONSTOP) "$${PACKAGES}"
# CI toolchain
ci-toolchain: FORCE

View File

@ -1,18 +1,29 @@
-include .config
HOST_ARCH?=$(shell uname -m)
# Configuration
## Architecture to build Redox for (aarch64, i686, or x86_64)
ARCH?=x86_64
## Architecture to build Redox for (aarch64, i686, or x86_64). Defaults to a host one
ARCH?=$(HOST_ARCH)
## Sub-device type for aarch64 if needed
BOARD?=
## Enable to use binary prefix (much faster)
PREFIX_BINARY?=1
## Enable to use binary packages (much faster)
REPO_BINARY?=0
## Select filesystem config
FILESYSTEM_CONFIG?=config/$(ARCH)/desktop.toml
## Filesystem size in MB (default comes from filesystem_size in the FILESYSTEM_CONFIG)
FILESYSTEM_SIZE?=$(shell grep filesystem_size $(FILESYSTEM_CONFIG) | cut -d' ' -f3)
## Name of the configuration to include in the image name e.g. desktop or server
CONFIG_NAME?=$(shell basename $(FILESYSTEM_CONFIG) .toml)
CONFIG_NAME?=desktop
## Ignore errors when building the repo, attempt to build every package
## REPO_NONSTOP?=--nonstop
REPO_NONSTOP?=
## Select filesystem config
ifeq ($(BOARD),)
FILESYSTEM_CONFIG?=config/$(ARCH)/$(CONFIG_NAME).toml
else
FILESYSTEM_CONFIG?=config/$(ARCH)/$(BOARD)/$(CONFIG_NAME).toml
endif
## Filesystem size in MB (default comes from filesystem_size in the FILESYSTEM_CONFIG)
FILESYSTEM_SIZE?=$(shell cargo run --release --manifest-path installer/Cargo.toml -- --filesystem-size -c $(FILESYSTEM_CONFIG))
## Flags to pass to redoxfs-mkfs. Add --encrypt to set up disk encryption
REDOXFS_MKFS_FLAGS?=
## Set to 1 to enable Podman build, any other value will disable it
@ -21,39 +32,43 @@ PODMAN_BUILD?=0
CONTAINERFILE?=podman/redox-base-containerfile
# Per host variables
# TODO: get host arch automatically
HOST_ARCH=x86_64
HOST_CARGO=env --unset=RUSTUP_TOOLCHAIN cargo
HOST_CARGO=env -u RUSTUP_TOOLCHAIN cargo
export NPROC=nproc
export REDOX_MAKE=make
HOST_TARGET := $(shell env -u RUSTUP_TOOLCHAIN rustc -vV | grep host | cut -d: -f2 | tr -d " ")
UNAME := $(shell uname)
ifeq ($(UNAME),Darwin)
FUMOUNT=sudo umount
FUMOUNT=umount
export NPROC=sysctl -n hw.ncpu
export REDOX_MAKE=make
PREFIX_BINARY=0
VB_AUDIO=coreaudio
VBM=/Applications/VirtualBox.app/Contents/MacOS/VBoxManage
HOST_TARGET ?= $(HOST_ARCH)-apple-darwin
else ifeq ($(UNAME),FreeBSD)
FUMOUNT=sudo umount
export NPROC=sysctl -n hw.ncpu
export REDOX_MAKE=gmake
PREFIX_BINARY=0
VB_AUDIO=pulse # To check, will probaly be OSS on most setups
VB_AUDIO=pulse # To check, will probably be OSS on most setups
VBM=VBoxManage
HOST_TARGET ?= $(HOST_ARCH)-unknown-freebsd
else
FUMOUNT=fusermount -u
export NPROC=nproc
export REDOX_MAKE=make
# Detect which version of the fusermount binary is available.
ifneq (, $(shell which fusermount3))
FUMOUNT=fusermount3 -u
else
FUMOUNT=fusermount -u
endif
VB_AUDIO=pulse
VBM=VBoxManage
HOST_TARGET ?= $(HOST_ARCH)-unknown-linux-gnu
endif
ifneq ($(UNAME),Linux)
PREFIX_BINARY=0
endif
ifneq ($(HOST_ARCH),x86_64)
PREFIX_BINARY=0
endif
# Automatic variables
ROOT=$(CURDIR)
export RUST_COMPILER_RT_ROOT=$(ROOT)/rust/src/llvm-project/compiler-rt
export XARGO_RUST_SRC=$(ROOT)/rust/src
## Userspace variables
export TARGET=$(ARCH)-unknown-redox
@ -62,8 +77,14 @@ INSTALLER=installer/target/release/redox_installer
ifeq ($(REPO_BINARY),0)
INSTALLER+=--cookbook=cookbook
REPO_TAG=$(BUILD)/repo.tag
else
INSTALLER+=--cookbook=cookbook --repo-binary
REPO_TAG=$(BUILD)/repo.tag
endif
FSTOOLS_TAG=build/fstools.tag
export BOARD
## Cross compiler variables
AR=$(TARGET)-gcc-ar
AS=$(TARGET)-as

View File

@ -7,10 +7,18 @@ ifeq ($(shell which rustup),)
$(error rustup not found, install from "https://rustup.rs/")
endif
ifeq ($(shell which cbindgen),)
$(error cbindgen not found, install from crates.io or from your package manager)
endif
ifeq ($(shell which nasm),)
$(error nasm not found, install from your package manager)
endif
ifeq ($(shell which just),)
$(error just not found, install from crates.io or from your package manager)
endif
CARGO_CONFIG_VERSION=0.1.1
ifeq ($(shell env -u RUSTUP_TOOLCHAIN cargo install --list | grep '^cargo-config v$(CARGO_CONFIG_VERSION):$$'),)
$(error cargo-config $(CARGO_CONFIG_VERSION) not found, run "cargo install --force --version $(CARGO_CONFIG_VERSION) cargo-config")

View File

@ -1,47 +1,44 @@
$(BUILD)/harddrive.img: $(REPO_TAG)
$(BUILD)/harddrive.img: $(FSTOOLS_TAG) $(REPO_TAG)
mkdir -p $(BUILD)
rm -rf $@ $@.partial
-$(FUMOUNT) /tmp/redox_installer || true
fallocate --posix --length "$(FILESYSTEM_SIZE)MiB" $@.partial
$(INSTALLER) -c $(FILESYSTEM_CONFIG) $@.partial
truncate -s "$(FILESYSTEM_SIZE)m" $@.partial
umask 002 && $(INSTALLER) -c $(FILESYSTEM_CONFIG) $@.partial
mv $@.partial $@
$(BUILD)/livedisk.iso: $(REPO_TAG)
$(BUILD)/livedisk.iso: $(FSTOOLS_TAG) $(REPO_TAG)
mkdir -p $(BUILD)
rm -rf $@ $@.partial
-$(FUMOUNT) /tmp/redox_installer || true
fallocate --posix --length "$(FILESYSTEM_SIZE)MiB" $@.partial
$(INSTALLER) -c $(FILESYSTEM_CONFIG) --live $@.partial
truncate -s "$(FILESYSTEM_SIZE)m" $@.partial
umask 002 && $(INSTALLER) -c $(FILESYSTEM_CONFIG) --live $@.partial
mv $@.partial $@
$(BUILD)/filesystem.img: $(REPO_TAG)
$(BUILD)/filesystem.img: $(FSTOOLS_TAG) $(REPO_TAG)
mkdir -p $(BUILD)
$(HOST_CARGO) build --manifest-path redoxfs/Cargo.toml --release
-$(FUMOUNT) $(BUILD)/filesystem/ || true
rm -rf $@ $@.partial $(BUILD)/filesystem/
-$(FUMOUNT) /tmp/redox_installer || true
fallocate --posix --length "$(FILESYSTEM_SIZE)MiB" $@.partial
truncate -s "$(FILESYSTEM_SIZE)m" $@.partial
redoxfs/target/release/redoxfs-mkfs $(REDOXFS_MKFS_FLAGS) $@.partial
mkdir -p $(BUILD)/filesystem/
redoxfs/target/release/redoxfs $@.partial $(BUILD)/filesystem/
sleep 1
pgrep redoxfs
$(INSTALLER) -c $(FILESYSTEM_CONFIG) $(BUILD)/filesystem/
umask 002 && $(INSTALLER) -c $(FILESYSTEM_CONFIG) $(BUILD)/filesystem/
sync
-$(FUMOUNT) $(BUILD)/filesystem/ || true
rm -rf $(BUILD)/filesystem/
mv $@.partial $@
mount: FORCE
mount: $(FSTOOLS_TAG) FORCE
mkdir -p $(BUILD)/filesystem/
$(HOST_CARGO) build --manifest-path redoxfs/Cargo.toml --release --bin redoxfs
redoxfs/target/release/redoxfs $(BUILD)/harddrive.img $(BUILD)/filesystem/
sleep 2
pgrep redoxfs
mount_extra: FORCE
mount_extra: $(FSTOOLS_TAG) FORCE
mkdir -p $(BUILD)/filesystem/
$(HOST_CARGO) build --manifest-path redoxfs/Cargo.toml --release --bin redoxfs
redoxfs/target/release/redoxfs $(BUILD)/extra.img $(BUILD)/filesystem/
sleep 2
pgrep redoxfs

22
mk/fstools.mk Normal file
View File

@ -0,0 +1,22 @@
fstools: $(FSTOOLS_TAG)
$(FSTOOLS_TAG): cookbook installer redoxfs $(CONTAINER_TAG)
ifeq ($(PODMAN_BUILD),1)
$(PODMAN_RUN) $(MAKE) $@
else
$(HOST_CARGO) build --manifest-path cookbook/Cargo.toml --release
$(HOST_CARGO) build --manifest-path installer/Cargo.toml --release
$(HOST_CARGO) build --manifest-path redoxfs/Cargo.toml --release --bin redoxfs --bin redoxfs-mkfs
mkdir -p build
touch $@
endif
fstools_clean: FORCE $(CONTAINER_TAG)
ifeq ($(PODMAN_BUILD),1)
$(PODMAN_RUN) $(MAKE) $@
else
$(HOST_CARGO) clean --manifest-path cookbook/Cargo.toml
$(HOST_CARGO) clean --manifest-path installer/Cargo.toml
$(HOST_CARGO) clean --manifest-path redoxfs/Cargo.toml
rm -f $(FSTOOLS_TAG)
endif

View File

@ -8,9 +8,9 @@ IMAGE_TAG?=redox-base
## Working Directory in Podman
CONTAINER_WORKDIR?=/mnt/redox
## Podman Home Directory
PODMAN_HOME?="`pwd`/build/podman"
PODMAN_HOME?=$(ROOT)/build/podman
## Podman command with its many arguments
PODMAN_VOLUMES?=--volume "`pwd`":$(CONTAINER_WORKDIR):Z --volume $(PODMAN_HOME):/home:Z
PODMAN_VOLUMES?=--volume $(ROOT):$(CONTAINER_WORKDIR):Z --volume $(PODMAN_HOME):/home:Z
PODMAN_ENV?=--env PATH=/home/poduser/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --env PODMAN_BUILD=0
PODMAN_CONFIG?=--env ARCH=$(ARCH) --env CONFIG_NAME=$(CONFIG_NAME) --env FILESYSTEM_CONFIG=$(FILESYSTEM_CONFIG)
PODMAN_OPTIONS?=--rm --workdir $(CONTAINER_WORKDIR) --userns keep-id --user `id -u` --interactive --tty --env TERM=$(TERM)
@ -23,6 +23,9 @@ else
@echo PODMAN_BUILD=$(PODMAN_BUILD), please set it to 1 in mk/config.mk
endif
container_su: FORCE
podman exec --user=0 --latest --interactive --tty bash
container_clean: FORCE
rm -f build/container.tag
@echo "If podman dir cannot be removed, remove with \"sudo rm\"."
@ -39,6 +42,9 @@ else
@echo PODMAN_BUILD=$(PODMAN_BUILD), container not required.
endif
container_kill: FORCE
podman kill --latest --signal SIGKILL
## Must match the value of CONTAINER_TAG in config.mk
build/container.tag: $(CONTAINERFILE)
ifeq ($(PODMAN_BUILD),1)

View File

@ -3,10 +3,16 @@ PREFIX=prefix/$(TARGET)
PREFIX_INSTALL=$(PREFIX)/relibc-install
PREFIX_PATH=$(ROOT)/$(PREFIX_INSTALL)/bin
BINUTILS_BRANCH=redox-2.41
GCC_BRANCH=redox-13.2.0
export PREFIX_RUSTFLAGS=-L $(ROOT)/$(PREFIX_INSTALL)/$(TARGET)/lib
export RUSTUP_TOOLCHAIN=$(ROOT)/$(PREFIX_INSTALL)
export REDOXER_TOOLCHAIN=$(RUSTUP_TOOLCHAIN)
export CC=
export CXX=
prefix: $(PREFIX_INSTALL)
PREFIX_STRIP=\
@ -16,7 +22,13 @@ PREFIX_STRIP=\
-exec strip --strip-unneeded {} ';' \
2> /dev/null
$(PREFIX)/relibc-install: $(ROOT)/relibc | $(PREFIX)/rust-install $(CONTAINER_TAG)
$(PREFIX)/relibc: $(ROOT)/relibc
mkdir -p "$(@D)"
rm -rf "$@.partial" "$@"
cp -r "$^" "$@.partial"
mv "$@.partial" "$@"
$(PREFIX)/relibc-install: $(PREFIX)/relibc | $(PREFIX)/rust-install $(CONTAINER_TAG)
ifeq ($(PODMAN_BUILD),1)
$(PODMAN_RUN) $(MAKE) $@
else
@ -25,12 +37,10 @@ else
rm -rf "$@.partial/$(TARGET)/include/"*
cp -r "$(PREFIX)/rust-install/$(TARGET)/include/c++" "$@.partial/$(TARGET)/include/c++"
cp -r "$(PREFIX)/rust-install/lib/rustlib/$(HOST_TARGET)/lib/" "$@.partial/lib/rustlib/$(HOST_TARGET)/"
rm -rf $@.partial/lib/rustlib/src
mkdir $@.partial/lib/rustlib/src
ln -s $(ROOT)/rust $@.partial/lib/rustlib/src
cd "$<" && \
export PATH="$(ROOT)/$@.partial/bin:$$PATH" && \
export CARGO="env -u CARGO cargo" && \
$(MAKE) clean && \
$(MAKE) -j `$(NPROC)` all && \
$(MAKE) -j `$(NPROC)` install DESTDIR="$(ROOT)/$@.partial/$(TARGET)"
cd "$@.partial" && $(PREFIX_STRIP)
@ -63,18 +73,22 @@ $(PREFIX)/rust-install: $(PREFIX)/rust-install.tar.gz
else
$(ROOT)/rust:
git submodule update --init --recursive --checkout rust
PREFIX_BASE_INSTALL=$(PREFIX)/rust-freestanding-install
PREFIX_FREESTANDING_INSTALL=$(PREFIX)/gcc-freestanding-install
PREFIX_BASE_PATH=$(ROOT)/$(PREFIX_BASE_INSTALL)/bin
PREFIX_FREESTANDING_PATH=$(ROOT)/$(PREFIX_FREESTANDING_INSTALL)/bin
$(PREFIX)/binutils.tar.bz2:
$(PREFIX)/binutils-$(BINUTILS_BRANCH).tar.bz2:
mkdir -p "$(@D)"
wget -O $@.partial "https://gitlab.redox-os.org/redox-os/binutils-gdb/-/archive/redox/binutils-gdb-redox.tar.bz2"
rm -fv $(PREFIX)/binutils*.tar.bz2*
wget -O $@.partial "https://gitlab.redox-os.org/redox-os/binutils-gdb/-/archive/$(BINUTILS_BRANCH)/binutils-gdb-$(BINUTILS_BRANCH).tar.bz2"
mv $@.partial $@
$(PREFIX)/binutils: $(PREFIX)/binutils.tar.bz2
$(PREFIX)/binutils: $(PREFIX)/binutils-$(BINUTILS_BRANCH).tar.bz2
rm -rf "$@.partial" "$@"
mkdir -p "$@.partial"
tar --extract --file "$<" --directory "$@.partial" --strip-components=1
@ -102,12 +116,13 @@ else
mv "$@.partial" "$@"
endif
$(PREFIX)/gcc.tar.bz2:
$(PREFIX)/gcc-$(GCC_BRANCH).tar.bz2:
mkdir -p "$(@D)"
wget -O $@.partial "https://gitlab.redox-os.org/redox-os/gcc/-/archive/redox/gcc-redox.tar.bz2"
rm -fv $(PREFIX)/gcc*.tar.bz2*
wget -O $@.partial "https://gitlab.redox-os.org/redox-os/gcc/-/archive/$(GCC_BRANCH)/gcc-$(GCC_BRANCH).tar.bz2"
mv "$@.partial" "$@"
$(PREFIX)/gcc: $(PREFIX)/gcc.tar.bz2
$(PREFIX)/gcc: $(PREFIX)/gcc-$(GCC_BRANCH).tar.bz2
mkdir -p "$@.partial"
tar --extract --file "$<" --directory "$@.partial" --strip-components=1
cd "$@.partial" && ./contrib/download_prerequisites
@ -151,23 +166,23 @@ else
"$</configure" \
--prefix="/" \
--disable-docs \
--disable-download-ci-llvm \
--enable-cargo-native-static \
--enable-extended \
--enable-lld \
--enable-llvm-static-stdcpp \
--set 'llvm.targets=AArch64;X86' \
--set 'llvm.experimental-targets=' \
--tools=cargo \
--tools=cargo,src \
&& \
$(MAKE) -j `$(NPROC)` && \
$(MAKE) -j `$(NPROC)` install DESTDIR="$(ROOT)/$@.partial"
rm -rf "$(PREFIX)/rust-freestanding-build"
mkdir -p "$@.partial/lib/rustlib/$(HOST_TARGET)/bin"
mkdir -p "$@.partial/lib/rustlib/$(HOST_TARGET)/lib"
cd "$@.partial" && $(PREFIX_STRIP)
touch "$@.partial"
mv "$@.partial" "$@"
mkdir $@/lib/rustlib/src
ln -s $(ROOT)/rust $@/lib/rustlib/src
endif
$(PREFIX)/relibc-freestanding-install: $(ROOT)/relibc | $(PREFIX_BASE_INSTALL) $(PREFIX_FREESTANDING_INSTALL) $(CONTAINER_TAG)
@ -180,6 +195,7 @@ else
export PATH="$(PREFIX_BASE_PATH):$(PREFIX_FREESTANDING_PATH):$$PATH" && \
export CARGO="env -u CARGO -u RUSTUP_TOOLCHAIN cargo" && \
export CC_$(subst -,_,$(TARGET))="$(TARGET)-gcc -isystem $(ROOT)/$@.partial/$(TARGET)/include" && \
$(MAKE) clean && \
$(MAKE) -j `$(NPROC)` all && \
$(MAKE) -j `$(NPROC)` install DESTDIR="$(ROOT)/$@.partial/$(TARGET)"
cd "$@.partial" && $(PREFIX_STRIP)
@ -240,18 +256,21 @@ else
"$</configure" \
--prefix="/" \
--disable-docs \
--disable-download-ci-llvm \
--enable-cargo-native-static \
--enable-dist-src \
--enable-extended \
--enable-lld \
--enable-llvm-static-stdcpp \
--tools=cargo \
--tools=cargo,src \
--target="$(HOST_TARGET),$(TARGET)" \
&& \
$(MAKE) -j `$(NPROC)` && \
rm -rf "$(ROOT)/$@.partial/lib/rustlib" "$(ROOT)/$@.partial/share/doc/rust" && \
rm -rf $(ROOT)/$@.partial/lib/rustlib/{components,install.log,rust-installer-version,uninstall.sh,manifest-*} "$(ROOT)/$@.partial/share/doc/rust" && \
$(MAKE) -j `$(NPROC)` install DESTDIR="$(ROOT)/$@.partial"
rm -rf "$(PREFIX)/rust-build"
mkdir -p "$@.partial/lib/rustlib/$(HOST_TARGET)/bin"
mkdir -p "$@.partial/lib/rustlib/$(HOST_TARGET)/lib"
cd "$@.partial" && find . -name *.old -exec rm {} ';' && $(PREFIX_STRIP)
touch "$@.partial"
mv "$@.partial" "$@"

View File

@ -1,5 +1,5 @@
QEMU=SDL_VIDEO_X11_DGAMOUSE=0 qemu-system-$(QEMU_ARCH)
QEMUFLAGS=-d cpu_reset,guest_errors
QEMUFLAGS=-d guest_errors -name "Redox OS $(ARCH)"
ifeq ($(ARCH),i686)
audio?=ac97
@ -7,7 +7,12 @@ ifeq ($(ARCH),i686)
QEMU_ARCH=i386
QEMU_MACHINE?=pc
QEMU_CPU?=pentium2
QEMUFLAGS+=-smp 4 -m 2048
QEMUFLAGS+=-smp 1 -m 1024
# Default to using kvm when arch is i686 and host is x86_64
ifeq ($(HOST_ARCH),x86_64)
kvm?=yes
endif
else ifeq ($(ARCH),x86_64)
QEMU_ARCH=x86_64
QEMU_MACHINE?=q35
@ -16,17 +21,18 @@ else ifeq ($(ARCH),x86_64)
QEMUFLAGS+=-smp 4 -m 2048
else ifeq ($(ARCH),aarch64)
efi=yes
kvm=no
live=yes
#TODO: support vga
vga=no
QEMU_ARCH=aarch64
QEMU_MACHINE=virt
QEMU_CPU=max
QEMU_EFI=/usr/share/AAVMF/AAVMF_CODE.fd
ifeq ($(BOARD),raspi3bp)
QEMU_EFI=https://gitlab.redox-os.org/Ivan/redox_firmware/-/raw/main/platform/raspberry_pi/rpi3/u-boot-rpi-3-b-plus.bin
else
QEMU_EFI=https://gitlab.redox-os.org/Ivan/redox_firmware/-/raw/main/platform/qemu/qemu_arm64/u-boot-qemu-arm64.bin
endif
QEMUFLAGS+=-smp 1 -m 2048
ifneq ($(vga),no)
QEMUFLAGS+=-device virtio-gpu-pci
QEMUFLAGS+=-device ramfb
endif
ifneq ($(usb),no)
QEMUFLAGS+=-device usb-ehci -device usb-kbd -device usb-mouse
@ -35,6 +41,12 @@ else
$(error Unsupported ARCH for QEMU "$(ARCH)"))
endif
# If host and target arch do not match, disable kvm
# (unless overridden above or by environment)
ifneq ($(ARCH),$(HOST_ARCH))
kvm?=no
endif
ifeq ($(efi),yes)
FIRMWARE=$(BUILD)/firmware.rom
QEMUFLAGS+=-bios $(BUILD)/firmware.rom
@ -68,11 +80,19 @@ else ifeq ($(audio),ac97)
QEMUFLAGS+=-device AC97
else
# Intel High Definition Audio
QEMUFLAGS+=-device ich9-intel-hda -device hda-duplex
QEMUFLAGS+=-device ich9-intel-hda -device hda-output
endif
ifeq ($(net),no)
QEMUFLAGS+=-net none
else ifeq ($(net),rtl8139)
# RTL8139
QEMUFLAGS+=-netdev user,id=net0 -device rtl8139,netdev=net0 \
-object filter-dump,id=f1,netdev=net0,file=$(BUILD)/network.pcap
else ifeq ($(net),virtio)
# virtio-net
QEMUFLAGS+=-netdev user,id=net0 -device virtio-net,netdev=net0 \
-object filter-dump,id=f1,netdev=net0,file=$(BUILD)/network.pcap
else
ifneq ($(bridge),)
QEMUFLAGS+=-netdev bridge,br=$(bridge),id=net0 -device e1000,netdev=net0,id=nic0
@ -90,6 +110,10 @@ endif
ifeq ($(vga),no)
QEMUFLAGS+=-nographic -vga none
else ifeq ($(vga),multi)
QEMUFLAGS+=-display sdl -vga std -device secondary-vga
else ifeq ($(vga),virtio)
QEMUFLAGS+=-vga virtio
endif
ifneq ($(usb),no)
@ -97,7 +121,7 @@ ifneq ($(usb),no)
endif
ifeq ($(gdb),yes)
QEMUFLAGS+=-s -S
QEMUFLAGS+=-d cpu_reset -s -S
endif
ifeq ($(UNAME),Linux)
@ -108,21 +132,23 @@ ifeq ($(UNAME),Linux)
endif
endif
ifeq ($(UNAME),Linux)
$(BUILD)/extra.img:
fallocate --posix --length 1G $@
else
$(BUILD)/extra.img:
truncate -s 1g $@
ifeq ($(UNAME),Darwin)
QEMUFLAGS+=-cpu $(QEMU_CPU)
endif
$(BUILD)/extra.img:
truncate -s 1g $@
$(BUILD)/firmware.rom:
ifeq ($(ARCH),aarch64)
wget -O $@ $(QEMU_EFI)
else
cp $(QEMU_EFI) $@
endif
qemu: $(DISK) $(FIRMWARE) $(BUILD)/extra.img
$(QEMU) $(QEMUFLAGS) \
-hdc $(DISK)
echo -drive file=$(DISK),format=raw \
-drive file=$(DISK),format=raw \
-drive file=$(BUILD)/extra.img,format=raw
qemu_no_build: $(FIRMWARE) $(BUILD)/extra.img
@ -162,3 +188,9 @@ qemu_extra: $(FIRMWARE) $(BUILD)/extra.img
qemu_nvme_extra: $(FIRMWARE) $(BUILD)/extra.img
$(QEMU) $(QEMUFLAGS) \
-drive file=$(BUILD)/extra.img,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA
#additional steps for $(DISK) are required!!!
qemu_raspi: $(FIRMWARE) $(DISK)
$(QEMU) -M raspi3b -smp 4,cores=1 \
-kernel $(FIRMWARE) \
-serial stdio -display none -sd $(DISK)

View File

@ -1,9 +1,7 @@
$(BUILD)/fetch.tag: cookbook installer prefix $(FILESYSTEM_CONFIG) $(CONTAINER_TAG)
$(BUILD)/fetch.tag: prefix $(FSTOOLS_TAG) $(FILESYSTEM_CONFIG) $(CONTAINER_TAG)
ifeq ($(PODMAN_BUILD),1)
$(PODMAN_RUN) $(MAKE) $@
else
$(HOST_CARGO) build --manifest-path cookbook/Cargo.toml --release
$(HOST_CARGO) build --manifest-path installer/Cargo.toml --release
PACKAGES="$$($(INSTALLER) --list-packages -c $(FILESYSTEM_CONFIG))" && \
cd cookbook && \
./fetch.sh "$${PACKAGES}"
@ -11,18 +9,74 @@ else
touch $@
endif
$(BUILD)/repo.tag: $(BUILD)/fetch.tag $(CONTAINER_TAG)
$(BUILD)/repo.tag: $(BUILD)/fetch.tag $(FSTOOLS_TAG) $(CONTAINER_TAG)
ifeq ($(PODMAN_BUILD),1)
$(PODMAN_RUN) $(MAKE) $@
else
$(HOST_CARGO) build --manifest-path cookbook/Cargo.toml --release
$(HOST_CARGO) build --manifest-path installer/Cargo.toml --release
export PATH="$(PREFIX_PATH):$$PATH" && \
PACKAGES="$$($(INSTALLER) --list-packages -c $(FILESYSTEM_CONFIG))" && \
cd cookbook && \
./repo.sh "$${PACKAGES}"
./repo.sh $(REPO_NONSTOP) "$${PACKAGES}"
mkdir -p $(BUILD)
# make sure fetch.tag is newer than the things repo modifies
touch $<
touch $@
endif
# Invoke clean.sh for a single target
c.%: $(FSTOOLS_TAG) FORCE
ifeq ($(PODMAN_BUILD),1)
$(PODMAN_RUN) $(MAKE) $@
else
export PATH="$(PREFIX_PATH):$$PATH" && \
cd cookbook && \
./clean.sh $*
endif
# Invoke fetch.sh for a single target
f.%: $(FSTOOLS_TAG) FORCE
ifeq ($(PODMAN_BUILD),1)
$(PODMAN_RUN) $(MAKE) $@
else
export PATH="$(PREFIX_PATH):$$PATH" && \
cd cookbook && \
./fetch.sh $*
endif
# Invoke repo.sh for a single target
r.%: $(FSTOOLS_TAG) FORCE
ifeq ($(PODMAN_BUILD),1)
$(PODMAN_RUN) $(MAKE) $@
else
export PATH="$(PREFIX_PATH):$$PATH" && \
cd cookbook && \
./repo.sh $*
endif
# Invoke unfetch.sh for a single target
u.%: $(FSTOOLS_TAG) FORCE
ifeq ($(PODMAN_BUILD),1)
$(PODMAN_RUN) $(MAKE) $@
else
export PATH="$(PREFIX_PATH):$$PATH" && \
cd cookbook && \
./unfetch.sh $*
endif
# Invoke clean.sh, and repo.sh for a single target
cr.%: $(FSTOOLS_TAG) FORCE
$(MAKE) c.$*
$(MAKE) r.$*
# Invoke unfetch.sh, clean.sh, and repo.sh for a single target
ucr.%: $(FSTOOLS_TAG) FORCE
$(MAKE) u.$*
$(MAKE) cr.$*
uc.%: $(FSTOOLS_TAG) FORCE
$(MAKE) u.$*
$(MAKE) c.$*
ucf.%: (FSTOOLS_TAG) FORCE
$(MAKE) uc.$*
$(MAKE) f.$*

View File

@ -1,242 +0,0 @@
# Using Rootless Podman for your build
To make the Redox build process more consistent across platforms, we are using **Rootless Podman** for major parts of the build. **Podman** is invoked automatically and transparently within the Makefiles.
## Disabling Podman build
By default, the build process should operate as it did in the past. The variable **PODMAN_BUILD** in `mk/config.mk` defaults to zero, so that **Podman** will not be invoked.
## TL;DR - [New](#new-working-directory) or [Existing](#existing-working-directory) Working Directory
### New Working Directory
- Make sure you have the `curl` command. E.g. for Pop!_OS/Ubuntu/Debian:
```sh
which curl || sudo apt-get install curl
```
- Make a directory, get a copy of `podman_bootstrap.sh` and run it. This will clone the repository and install **Podman**.
```sh
mkdir -p ~/tryredox
cd ~/tryredox
curl -sf https://gitlab.redox-os.org/redox-os/redox/raw/master/podman_bootstrap.sh -o podman_bootstrap.sh
time bash -e podman_bootstrap.sh
```
- Change to the `redox` directory.
```sh
cd ~/tryredox/redox
```
- Edit `mk/config.mk` and change PODMAN_BUILD to 1.
```sh
gedit mk/config.mk &
```
```
...
PODMAN_BUILD?=1
...
```
- Build the system.
```sh
time make all
```
### Existing Working Directory
- Change to your working directory and get the updates to the build files.
```sh
cd ~/tryredox/redox
git fetch upstream master
git rebase upstream/master
```
- Install **Podman**. Many distros require additional packages. Check the [Minimum Installation](#minimum-installation) instructions to see what is needed for your distro. Or, run the following in your working directory:
```sh
./podman_bootstrap.sh -d
```
- Set `PODMAN_BUILD` to 1 and run `make`.
```sh
export PODMAN_BUILD=1
make all
```
To ensure `PODMAN_BUILD` is properly set for future builds, edit `mk/config.mk` and change its value.
```sh
gedit mk/config.mk &
```
```
...
PODMAN_BUILD?=1
...
```
## Minimum Installation
Most of the packages required for the build are installed in the container as part of the build process. However, some packages need to be installed on the host computer. You may also need to install an emulator such as **QEMU**. This is done for you in `podman_bootstrap.sh`, but you can do a minimum install by following the instructions below.
### Pop!_OS
```sh
sudo apt-get install podman
```
### Ubuntu
```sh
sudo apt-get install podman curl git make libfuse-dev
```
### ArchLinux
```sh
sudo pacman -S --needed git podman fuse
```
### Fedora
```sh
sudo dnf install podman
```
## Podman Build Overview
**Podman** is a container that executes a virtual machine image. In our case, we are creating an **Ubuntu** image, with a **Rust** installation and all the packages needed to build the system.
The build process is performed in your normal working directory, e.g. `~/tryredox/redox`. Compilation of the Redox components is performed in the container, but the final Redox image (`build/ARCH/CONFIG/harddrive.img` or `build/ARCH/CONFIG/livedisk.iso`) is constructed using [Fuse](https://github.com/libfuse/libfuse) running directly on your host machine.
Setting `PODMAN_BUILD` to 1 in the environment (e.g. `PODMAN_BUILD=1 make all`) or in `mk/config.mk` will cause **Podman** to be invoked when building.
First, a **base image** called `redox_base` will be constructed, with all the necessary packages for the build. A "home" directory will also be created in the image. This is the home directory of your container alter ego, `poduser`. It will contain the `rustup` install, and the `.bashrc`. This takes some time, but is only done when necessary. The *tag* file [build/container.tag](#buildcontainertag) is also created at this time to prevent unnecessary image builds.
Then, various `make` commands are executed in **containers** built from the **base image**. The files are constructed in your working directory tree, just as they would for a non-Podman build. In fact, if all necessary packages are installed on your host system, you can switch Podman on and off relatively seamlessly, although there is no benefit to doing so.
The build process is using **Podman**'s `keep-id` feature, which allows your regular User ID to be mapped to `poduser` in the container. The first time a container is built, it takes some time to set up this mapping. In order to minimize the impact of this, immediately after creating the image, a throw-away container is built. After the first container is built, new containers can be built almost instantly.
### NOTES
- Envionment and Command Line Variables, other than ARCH, CONFIG_NAME and FILESYSTEM_CONFIG, are not passed to the part of `make` that is done in **Podman**. You must set any other config variables in `mk/config.mk` and not on the command line or in your environment.
- If you are building your own software to include in Redox, and you need to install additional packages using `apt-get` for the build, follow [Adding Packages to the Build](#adding-packages-to-the-build).
## build/container.tag
The building of the **image** is controlled by the *tag* file `build/container.tag`. If you run `make all` with **PODMAN_BUILD=1**, the file `build/container.tag` will be created after the **image** is built. This file tells `make` that it can skip updating the **image** after the first time.
Many targets in the Makefiles `mk/*.mk` include `build/container.tag` as a dependency. If the *tag* file is missing, building any of those targets may trigger an image to be created, which can take some time.
When you move to a new working directory, if you want to save a few minutes, and you are confident that your **image** is correct, you can do
```sh
make container_touch
```
This will create the file `build/container.tag` without rebuilding the image. However, it will fail if the image does not exist. If it fails, just do a normal `make`, it will create the container when needed.
## Cleaning Up
To remove the **base image**, any lingering containers, and `build/container.tag`, use
```sh
make container_clean
```
To check that everything has been removed,
```sh
podman ps -a
podman images
```
will show any remaining images or containers. If you need to do further cleanup,
```
podman system reset
```
will remove **all** images and containers. You still may need to remove `build/container.tag` if you did not do `make container_clean`.
**Note:** `make clean` could trigger an image build. It invokes `cargo clean` on various components, which it must run in a container, since the build is designed to not require **Cargo** on your host machine. `make clean` does **not** run `make container_clean` and will **not** remove the container image.
## Debugging your Build Process
If you are developing your own components and wish to do one-time debugging to determine what package you are missing in the **Podman Build** environment, the following instructions can help. Note that your changes will not be persistent. After debugging, **you must** [Add your Packages to the Build](#adding-packages-to-the-build). With **PODMAN_BUILD=1**, run the command:
```sh
make container_shell
```
This will start a `bash` shell in the **Podman** container environment, as a normal user without `sudo` privilege. Within that environment, you can build the Redox components with:
```sh
make repo
```
or, if you need to change `ARCH` or `CONFIG_NAME`,
```sh
./build.sh -a ARCH -c CONFIG_NAME repo
```
If you need `root` privileges, while you are **still running** the above `bash` shell, go to a separate **Terminal** or **Console** window on the host and type:
```sh
podman ps
```
This will list all running containers. There should be only one, but if there is more than one, consider only the newest. In the last column of the display, the container will have a randomly generated name `ADJECTIVE_NOUN`, e.g. `boring_dickens`. Replace the word `CONTAINER` with that name and type:
```sh
podman exec --user=0 -it CONTAINER bash
```
You will then be running bash with `root` privilege in the container, and you can use `apt-get` or whatever tools you need, and it will affect the environment of the user-level `container_shell` above. Do not precede the commands with `sudo` as you are already `root`. And remember that you are in an **Ubuntu** instance.
**Note**: Your changes will not persist once both shells have been exited.
Type `exit` on both shells once you have determined how to solve your problem.
## Adding Packages to the Build
The default **Containerfile**, `podman/redox-base-containerfile`, imports all required packages for a normal Redox build.
However, you cannot easily add packages after the **base image** is created. You must add them to your own Containerfile.
Copy `podman/redox-base-containerfile` and add to the list of packages in the initial `apt-get`.
Then, edit `mk/config.mk`, and change the variable **CONTAINERFILE** to point to your Containerfile, e.g.
```
CONTAINERFILE?=podman/my-containerfile
```
If your Containerfile is newer than `build/container.tag`, a new **image** will be created. You can force the image to be rebuilt with `make container_clean`.
If you feel the need to have more than one **image**, you can change the variable **IMAGE_TAG** in `mk/podman.mk` to give the image a different name.
## Summary of Podman-related Make Targets and Podman Commands
- `make build/container.tag`: If no container image has been built, build one. It's not necessary to do this, it will be done when needed.
- `make container_touch`: If a container image already exists, but there is no *tag* file, create the *tag* file so a new image is not built.
- `make container_clean`: Remove the container image and the *tag* file.
- `make container_shell`: Start an interactive `bash` shell in the same environment used by `make`.
- `podman exec --user=0 -it CONTAINER bash`: Use this command in combination with `make container_shell` to get root access to the normal build environment, so you can temporarily add packages to the environment. `CONTAINER` is the name of the active container as shown by `podman ps`. For temporary, debugging purposes only.
- `podman system reset`: Use this command when `make container_clean` is not sufficient to solve problems caused by errors in the container image. It will remove all images, use with caution. If you are using **Podman** for any other purpose, those images will be deleted as well.
## Gory Details
If you are interested in how we are able to use your working directory for builds in **Podman**, the following configuration details may be interesting.
We are using **Rootless Podman**'s `--userns keep-id` feature. Because **Podman** is being run **Rootless**, the *container's* `root` user is actually mapped to your User ID on the host. Without the `keep-id` option, a regular user in the container maps to a phantom user outside the container. With the `keep-id` option, a user in the container that has the same User ID as your host User ID, will have the same permissions as you.
During the creation of the **base image**, **Podman** invokes **Buildah**. **Buildah** does not allow User IDs to be shared between the host and the container in the same way that **Podman** does. So the **base image** is created without `keep-id`, then the first container created from the image, with `keep-id` enabled, triggers a remapping. Once that remapping is done, it is reused for each subsequent container.
The working directory is made available in the container by **mounting** it as a **volume**. The **Podman** option
```
--volume "`pwd`":$(CONTAINER_WORKDIR):Z
```
takes the directory that `make` was started in as the host working directory, and **mounts** it at the location `$CONTAINER_WORKDIR`, normally set to `/mnt/redox`. The `:Z` at the end of the name indicates that the mounted directory should not be shared between simultaneous container instances. It is optional on some Linux distros, and not optional on others.
For our invocation of Podman, we set the PATH environment variable as an option to `podman run`. This is to avoid the need for our `make` command to run `.bashrc`, which would add extra complexity. The `ARCH`, `CONFIG_NAME` and `FILESYSTEM_CONFIG` variables are passed in the environment to allow you to override the values in `mk/config.mk`, e.g. by setting them on your `make` command line or by using `build.sh`.
We also set `PODMAN_BUILD=0` in the environment, to ensure that the instance of `make` running in the container knows not to invoke **Podman**. This overrides the value set in `mk/config.mk`.
In the **Containerfile**, we use as few `RUN` commands as possible, as **Podman** commits the image after each command. And we use `CMD` rather than `ENTRYPOINT` to allow us to specify the command to run as a list of arguments, rather than just a string to be processed as a command by the entrypoint shell.
Containers in our build process are run with `--rm` to ensure the container is discarded after each use. This prevents a proliferation of used containers. However, when you use `make container_clean`, you may notice multiple items being deleted. These are the partial images created as each `RUN` command is executed while building.
Container images and container data is normally stored in the directory `$HOME/.local/share/containers/storage`. The command
```sh
podman system reset
```
removes that directory in its entirety. However, the contents of any **volume** are left alone.

View File

@ -12,30 +12,46 @@ RUN apt-get update \
curl \
file \
flex \
fuse \
fuse3 \
genisoimage \
git \
gperf \
libc6-dev-i386 \
libexpat-dev \
libfuse-dev \
libfuse3-dev \
libgmp-dev \
libhtml-parser-perl \
libpng-dev \
libtool \
libfontconfig1-dev \
libpng-dev \
libjpeg-dev \
libsdl2-ttf-dev \
libsdl1.2-dev \
m4 \
nasm \
pkg-config \
po4a \
syslinux-utils \
texinfo \
libsdl1.2-dev \
ninja-build \
meson \
python3-mako \
xxd \
rsync \
wget
wget \
python3 \
make \
xdg-utils \
zip \
unzip \
llvm \
clang \
perl \
doxygen \
ant \
protobuf-compiler \
intltool
# _UID_ must be replaced with the user's uid on host
# podman root is mapped to your user id on host during build,

View File

@ -4,4 +4,5 @@
curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain nightly
cargo install --force --version 0.1.1 cargo-config
cargo install --force --version 0.3.20 xargo
cargo install --force --version 1.16.0 just
cargo install --force --version 0.26.0 cbindgen

View File

@ -1,5 +1,7 @@
#!/usr/bin/env bash
set -e
##########################################################
# This function is simply a banner to introduce the script
##########################################################
@ -13,10 +15,10 @@ banner()
###################################################################################
# This function takes care of installing a dependency via package manager of choice
# for building redox on BSDs (MacOS, FreeBSD, etc.).
# for building Redox on BSDs (macOS, FreeBSD, etc.).
# @params: $1 package manager
# $2 package name
# $3 binary name (optional)
# $2 package name
# $3 binary name (optional)
###################################################################################
install_bsd_pkg()
{
@ -58,14 +60,14 @@ install_freebsd_pkg()
###############################################################################
# This function checks which of the supported package managers
# is available on the OSX Host.
# is available on the macOS host.
# If a supported package manager is found, it delegates the installing work to
# the relevant function.
# Otherwise this function will exit this script with an error.
###############################################################################
osx()
{
echo "Detected OSX!"
echo "Detected macOS!"
if [ ! -z "$(which brew)" ]; then
osx_homebrew $@
@ -81,24 +83,27 @@ osx()
###############################################################################
# This function takes care of installing all dependencies using MacPorts
# for building redox on Mac OSX
# @params: $1 the emulator to install, virtualbox or qemu
# for building Redox on macOS
# @params: $1 the emulator to install, "virtualbox" or "qemu"
###############################################################################
osx_macports()
{
echo "Macports detected! Now updating..."
echo "MacPorts detected! Now updating..."
sudo port -v selfupdate
echo "Installing missing packages..."
install_macports_pkg "git"
install_macports_pkg "cmake"
if [ "$1" == "qemu" ]; then
if [ "$1" == "qemu" ]; then
install_macports_pkg "qemu" "qemu-system-x86_64"
else
elif [ "$1" == "virtualbox" ]; then
install_macports_pkg "virtualbox"
fi
else
echo "Unknown emulator: $1"
exit 1
fi
install_macports_pkg "osxfuse"
install_macports_pkg "podman"
@ -106,8 +111,8 @@ osx_macports()
###############################################################################
# This function takes care of installing all dependencies using Homebrew
# for building redox on Mac OSX
# @params: $1 the emulator to install, virtualbox or qemu
# for building Redox on macOS
# @params: $1 the emulator to install, "virtualbox" or "qemu"
###############################################################################
osx_homebrew()
{
@ -118,11 +123,15 @@ osx_homebrew()
install_brew_pkg "git"
if [ "$1" == "qemu" ]; then
if [ "$1" == "qemu" ]; then
install_brew_pkg "qemu" "qemu-system-x86_64"
else
elif [ "$1" == "virtualbox" ]; then
install_brew_pkg "virtualbox"
fi
else
echo "Unknown emulator: $1"
exit 1
fi
install_brew_pkg "make"
install_brew_pkg "podman"
@ -130,43 +139,50 @@ osx_homebrew()
###############################################################################
# This function takes care of installing all dependencies using pkg
# for building redox on FreeBSD
# @params: $1 the emulator to install, virtualbox or qemu
# for building Redox on FreeBSD
# @params: $1 the emulator to install, "virtualbox" or "qemu"
###############################################################################
freebsd()
{
set -xe
set -x
echo "FreeBSD detected!"
echo "Installing missing packages..."
install_freebsd_pkg "git"
if [ "$1" == "qemu" ]; then
if [ "$1" == "qemu" ]; then
install_freebsd_pkg "qemu" "qemu-system-x86_64"
else
elif [ "$1" == "virtualbox" ]; then
install_freebsd_pkg "virtualbox"
fi
else
echo "Unknown emulator: $1"
exit 1
fi
install_freebsd_pkg "gmake"
install_freebsd_pkg "podman"
set +xe
set +x
}
###############################################################################
# This function takes care of installing all dependencies for building redox on
# Arch linux
# @params: $1 the emulator to install, virtualbox or qemu
# This function takes care of installing all dependencies for building Redox on
# Arch Linux
# @params: $1 the emulator to install, "virtualbox" or "qemu"
###############################################################################
archLinux()
{
echo "Detected Arch Linux"
packages="git podman fuse"
if [ "$1" == "qemu" ]; then
packages="$packages qemu"
elif [ "$1" == "virtualbox" ]; then
packages="$packages virtualbox"
else
echo "Unknown emulator: $1"
exit 1
fi
# Scripts should not cause a system update in order to just install a couple
# of packages. If pacman -S --needed is going to fail, let it fail and the
# user will figure out the issues (without updating if required) and rerun
@ -176,12 +192,13 @@ archLinux()
echo "Installing packages $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
# 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
###############################################################################
ubuntu()
@ -200,20 +217,33 @@ ubuntu()
else
echo "QEMU already installed!"
fi
else
elif [ "$1" == "virtualbox" ]; then
if [ -z "$(which virtualbox)" ]; then
echo "Installing Virtualbox..."
sudo "$2" install virtualbox
if grep '^ID=debian$' /etc/os-release > /dev/null; then
echo "Virtualbox is not in the official debian packages"
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
else
echo "Installing VirtualBox..."
sudo "$2" install virtualbox
fi
else
echo "Virtualbox already installed!"
echo "VirtualBox already installed!"
fi
else
echo "Unknown emulator: $1"
exit 1
fi
}
###############################################################################
# This function takes care of installing all dependencies for building redox on
# fedora linux
# @params: $1 the emulator to install, virtualbox or qemu
# This function takes care of installing all dependencies for building Redox on
# Fedora Linux
# @params: $1 the emulator to install, "virtualbox" or "qemu"
###############################################################################
fedora()
{
@ -222,6 +252,7 @@ fedora()
echo "Installing git..."
sudo dnf install git-all
fi
if [ "$1" == "qemu" ]; then
if [ -z "$(which qemu-system-x86_64)" ]; then
echo "Installing QEMU..."
@ -229,14 +260,19 @@ fedora()
else
echo "QEMU already installed!"
fi
else
elif [ "$1" == "virtualbox" ]; then
if [ -z "$(which virtualbox)" ]; then
echo "Installing virtualbox..."
sudo dnf install virtualbox
echo "Please install VirtualBox and re-run this script,"
echo "or run with -e qemu"
exit 1
else
echo "Virtualbox already installed!"
echo "VirtualBox already installed!"
fi
else
echo "Unknown emulator: $1"
exit 1
fi
# Use rpm -q <package> to check if it's already installed
PKGS=$(for pkg in podman; do rpm -q $pkg > /dev/null || echo $pkg; done)
# If the list of packages is not empty, install missing
@ -248,41 +284,100 @@ fedora()
}
###############################################################################
# This function takes care of installing all dependencies for building redox on
# *suse linux
# @params: $1 the emulator to install, virtualbox or qemu
# This function takes care of installing all dependencies for building Redox on
# *SUSE Linux
# @params: $1 the emulator to install, "virtualbox" or "qemu"
###############################################################################
suse()
{
echo "Detected SUSE Linux"
packages=(
"make"
"fuse-devel"
"podman"
)
if [ -z "$(which git)" ]; then
echo "Installing git..."
zypper install git
echo "Will install git ..."
packages+=(git)
fi
if [ "$1" == "qemu" ]; then
if [ -z "$(which qemu-system-x86_64)" ]; then
echo "Installing QEMU..."
sudo zypper install qemu-x86 qemu-kvm
echo "Will install QEMU..."
packages+=(qemu-x86 qemu-kvm)
else
echo "QEMU already installed!"
fi
else
elif [ "$1" == "virtualbox" ]; then
if [ -z "$(which virtualbox)" ]; then
echo "Please install Virtualbox and re-run this script,"
echo "Please install VirtualBox and re-run this script,"
echo "or run with -e qemu"
exit
exit 1
else
echo "Virtualbox already installed!"
echo "VirtualBox already installed!"
fi
else
echo "Unknown emulator: $1"
exit 1
fi
echo "Installing necessary build tools..."
sudo zypper install make fuse-devel podman
# We could install all the packages in a single zypper command with:
#
# zypper install package1 package2 package3
#
# But there is an issue with this: zypper returns a success code if at
# least one of the packages was correctly installed, but we need it to fail
# if any of the packages is missing.
#
# To confirm that the packages are available, we try to install them one by
# one with --dry-run.
# We still install all the packages in a single zypper command so that the
# user has to confirm only once.
for p in ${packages[@]}; do
if rpm -q "${p}" > /dev/null ; then
echo "${p} is already installed"
else
# Zypper shows a confirmation prompt and the "y" answer even with
# --non-interactive and --no-confirm:
#
# 1 new package to install.
# Overall download size: 281.7 KiB. Already cached: 0 B. After the operation, additional 394.6 KiB will be used.
# Continue? [y/n/v/...? shows all options] (y): y
#
# That could make the user think that the package was installed,
# when it was only a dry run.
# To avoid the confusion, we hide the output unless there was an
# error.
if out="$(zypper --non-interactive install --no-confirm --dry-run --force-resolution ${p} 2>&1)" ; then
echo "${p} can be installed"
else
echo "no"
echo ""
echo "Zypper output:"
echo ""
echo "${out}"
echo ""
echo "Could not find how to install '${p}', try running:"
echo ""
echo " zypper install ${p}"
echo ""
exit 1
fi
fi
done
zypper install ${packages[@]}
}
##############################################################################
# This function takes care of installing all dependencies for building redox on
# gentoo linux
# @params: $1 the emulator to install, virtualbox or qemu
# This function takes care of installing all dependencies for building Redox on
# Gentoo Linux
# @params: $1 the emulator to install, "virtualbox" or "qemu"
##############################################################################
gentoo()
{
@ -291,36 +386,51 @@ gentoo()
echo "Installing git..."
sudo emerge dev-vcs/git
fi
if [ -z "$(which fusermount)" ]; then
if [ -z "$(which fusermount 2>/dev/null)" ] && [ -z "$(which fusermount3 2>/dev/null)" ]; then
echo "Installing fuse..."
sudo emerge sys-fs/fuse
fi
if [ "$2" == "qemu" ]; then
if [ "$1" == "qemu" ]; then
if [ -z "$(which qemu-system-x86_64)" ]; then
echo "Please install QEMU and re-run this script"
echo "Step1. Add QEMU_SOFTMMU_TARGETS=\"x86_64\" to /etc/portage/make.conf"
echo "Step2. Execute \"sudo emerge app-emulation/qemu\""
exit 1
else
echo "QEMU already installed!"
fi
elif [ "$1" == "virtualbox" ]; then
if [ -z "$(which virtualbox)" ]; then
echo "Please install VirtualBox and re-run this script,"
echo "or run with -e qemu"
exit 1
else
echo "VirtualBox already installed!"
fi
else
echo "Unknown emulator: $1"
exit 1
fi
if [ -z "$(which cmake)" ]; then
echo "Installing cmake..."
sudo emerge dev-util/cmake
fi
if [ -z "$(which podman)" ]; then
echo "Please install Podman, https://wiki.gentoo.org/wiki/Podman"
exit 1
fi
}
##############################################################################
# This function takes care of installing all dependencies for building redox on
# SolusOS
# @params: $1 the emulator to install, virtualbox or qemu
# This function takes care of installing all dependencies for building Redox on
# Solus
# @params: $1 the emulator to install, "virtualbox" or "qemu"
##############################################################################
solus()
{
echo "Detected SolusOS"
echo "Detected Solus"
if [ "$1" == "qemu" ]; then
if [ -z "$(which qemu-system-x86_64)" ]; then
@ -328,14 +438,17 @@ solus()
else
echo "QEMU already installed!"
fi
else
elif [ "$1" == "virtualbox" ]; then
if [ -z "$(which virtualbox)" ]; then
echo "Please install Virtualbox and re-run this script,"
echo "Please install VirtualBox and re-run this script,"
echo "or run with -e qemu"
exit
exit 1
else
echo "Virtualbox already installed!"
echo "VirtualBox already installed!"
fi
else
echo "Unknown emulator: $1"
exit 1
fi
echo "Installing necessary build tools..."
@ -343,6 +456,7 @@ solus()
sudo eopkg it fuse-devel git make fuse2-devel rsync
if [ -z "$(which podman)" ]; then
echo "Please install Podman"
exit 1
fi
}
@ -423,6 +537,8 @@ boot()
{
echo "Cloning gitlab repo..."
git clone https://gitlab.redox-os.org/redox-os/redox.git --origin upstream --recursive
echo "Creating .config with PODMAN_BUILD=1"
echo 'PODMAN_BUILD?=1' > redox/.config
echo "Cleaning up..."
rm podman_bootstrap.sh
echo
@ -430,21 +546,18 @@ boot()
echo "Well it looks like you are ready to go!"
echo "---------------------------------------"
statusCheck
echo "The file redox/.config was created with PODMAN_BUILD=1."
echo "Run the following commands to build redox using Podman:"
echo
echo "cd redox"
MAKE="make"
if [[ "$(uname)" == "FreeBSD" ]]; then
MAKE="gmake"
echo "kldload fuse.ko # This loads the kernel module for fuse"
echo "kldload fuse.ko # This loads the kernel module for FUSE"
fi
echo "export PODMAN_BUILD=1"
echo "$MAKE all"
echo "$MAKE virtualbox or qemu"
echo
echo "You can also edit mk/config.mk and change PODMAN_BUILD to 1 so"
echo "you don't need to specify it on the command line."
echo
echo " Good luck!"
exit
@ -475,7 +588,7 @@ do
u) update=true;;
h) usage;;
s) statusCheck && exit;;
\?) echo "I don't know what to do with that option, try -h for help"; exit;;
\?) echo "I don't know what to do with that option, try -h for help"; exit 1;;
esac
done
@ -492,7 +605,7 @@ if [ "Darwin" == "$(uname -s)" ]; then
else
# Here we will use package managers to determine which operating system the user is using.
# Suse and derivatives
# SUSE and derivatives
if hash 2>/dev/null zypper; then
suse "$emulator"
# Debian or any derivative of it
@ -504,10 +617,10 @@ else
# Gentoo
elif hash 2>/dev/null emerge; then
gentoo "$emulator"
# SolusOS
# Solus
elif hash 2>/dev/null eopkg; then
solus "$emulator"
# Arch linux
# Arch Linux
elif hash 2>/dev/null pacman; then
archLinux "$emulator"
# FreeBSD
@ -515,7 +628,7 @@ else
freebsd "$emulator"
# Unsupported platform
else
printf "\e[31;1mFatal error: \e[0;31mUnsupported platform, please open an issue\[0m"
printf "\e[31;1mFatal error: \e[0;31mUnsupported platform, please open an issue\e[0m\n"
fi
fi
@ -523,4 +636,4 @@ if [ "$dependenciesonly" = false ]; then
boot
fi
echo "Redox bootstrap complete!"
echo "Redox bootstrap complete!"

@ -1 +1 @@
Subproject commit 9fc80c8bf680557ae8c5e3049bb84d591674170f
Subproject commit 14a07dc268ec41db87d4f453022ac8805b918d20

2
relibc

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

2
rust

@ -1 +1 @@
Subproject commit 3e6631a06e70dde4f8fd2069c199a5be8c0185ca
Subproject commit e9ed31b0540da8c7eae71de353a741294139ae8b

View File

@ -1 +0,0 @@
nightly-2022-03-18

3
rust-toolchain.toml Normal file
View File

@ -0,0 +1,3 @@
[toolchain]
channel = "nightly-2023-09-07"
components = ["rust-src"]

75
scripts/backtrace.sh Executable file
View File

@ -0,0 +1,75 @@
#!/usr/bin/env bash
usage()
{
echo "Usage: $0 -r recipe [ -e command_name ] [ -R ] [ -X | -6 | -A ] [[ -b backtracefile ] | [ addr1 ... ]]"
echo
echo "Print the backtrace contained in the backtracefile."
echo "Symbols are taken from the executable for the given recipe."
echo "If no backtracefile is given, decode the given addresses instead."
echo "This command must be run in the 'redox' directory."
echo
echo "-X for x86_64, -6 for i686, -A for aarch64 (x86_64 is the default)."
echo "To read from stdin, use '-b -'"
echo "The name of the executable must match what Cargo believes it to be."
echo "If the executalbe is named 'recipe_command', just use 'command' as the name."
echo "The debug version of the executable is used if available."
echo "The release version is used if no debug version exists."
echo "-R to force the use of the 'release' version of the executable."
echo "Make sure the executable is the one that produced the backtrace."
exit 1
}
ARCH="x86_64"
while getopts ":b:e:r:hRXA6" opt
do
case "$opt" in
X) ARCH="x86_64";;
A) ARCH="aarch64";;
6) ARCH="i686";;
b) INFILE="$OPTARG";;
e) COMMAND="$OPTARG";;
i) INST="$OPTARG";;
r) RECIPE_NAME="$OPTARG";;
R) RELEASE=true;;
h) usage;;
\?) echo "Unknown option -$OPTARG, try -h for help"; exit;;
:) echo "-$OPTARG requires a value"; exit;;
esac
done
shift $((OPTIND -1))
if [ -z "$RECIPE_NAME" ]
then
usage
fi
if [ -z "$INFILE" -a $# = 0 ]
then
usage
fi
# if no command name is given, assume it's the same as the recipe name
RECIPE_DIR="$(cd cookbook; target/release/find_recipe $RECIPE_NAME)"
if [ -z "$COMMAND" ]
then
COMMAND="$RECIPE_NAME"
fi
# look for the debug version of the command
EXECUTABLE=cookbook/"$RECIPE_DIR"/target/"$ARCH"-unknown-redox/build/target/"$ARCH"-unknown-redox/debug/"$COMMAND"
# try the release version next
if [ ! -f "$EXECUTABLE" -o ! -z "$RELEASE" ]
then
EXECUTABLE=cookbook/"$RECIPE_DIR"/target/"$ARCH"-unknown-redox/build/target/"$ARCH"-unknown-redox/release/"$COMMAND"
fi
if [ $# -ne 0 ]
then
addr2line --demangle=rust --inlines --pretty-print --functions --exe="$EXECUTABLE" $@
else
sed '/^\s*$/d; s/^.*0x\([0-9a-f]*\).*$/\1/g' "$INFILE" | addr2line --demangle=rust --inlines --pretty-print --functions --exe="$EXECUTABLE"
fi

20
scripts/category.sh Executable file
View File

@ -0,0 +1,20 @@
#!/usr/bin/env bash
if [ -z "$1" ] || [ -z "$2" ]
then
echo "Build or clean all recipe directories in a category" >&2
echo Usage: $0 "<action>" "<recipe-category>" >&2
echo "<action>" can be f, r, c, u, or combinations that \"make\" understands >&2
exit 1
fi
set -x
action="${1#-}"
for recipe in `find cookbook/recipes/"$2" -name "recipe.*"`
do
recipe_folder=`dirname "$recipe"`
recipe_name=`basename "$recipe_folder"`
make "$action"."$recipe_name"
done

View File

@ -12,7 +12,7 @@ REPOS=(
rust=rust
)
for package in $(installer/target/release/redox_installer --list-packages -c config/x86_64/desktop.toml)
for package in $(installer/target/release/redox_installer --list-packages -c config/$(uname -m)/desktop.toml)
do
REPOS+=("${package}=cookbook/recipes/${package}/source")
done

14
scripts/commit-hash.sh Executable file
View File

@ -0,0 +1,14 @@
#!/usr/bin/env bash
if [ $# -ne 1 ]
then
echo "Usage: $0 recipe_name"
echo " Print the commit hash for recipe_name"
exit 1
fi
cd cookbook
recipe_path="$(target/release/find_recipe $1)"
cd "$recipe_path"/source
git branch -v

53
scripts/dual-boot.sh Executable file
View File

@ -0,0 +1,53 @@
#!/usr/bin/env bash
set -e
if [ -n "$1" ]
then
DISK="$1"
else
DISK=/dev/disk/by-partlabel/REDOX_INSTALL
fi
if [ ! -b "${DISK}" ]
then
echo "$0: '${DISK}' is not a block device" >&2
exit 1
fi
if [ -z "${ARCH}" ]
then
export ARCH=x86_64
fi
if [ -z "${CONFIG_NAME}" ]
then
export CONFIG_NAME=demo
fi
IMAGE="build/${ARCH}/${CONFIG_NAME}/filesystem.img"
set -x
make "${IMAGE}"
sudo popsicle "${IMAGE}" "${DISK}"
set +x
ESP="$(bootctl --print-esp-path)"
if [ -z "${ESP}" ]
then
echo "$0: no ESP found" >&2
exit 1
fi
BOOTLOADER="cookbook/recipes/core/bootloader/target/${ARCH}-unknown-redox/stage/boot/bootloader.efi"
set -x
sudo mkdir -pv "${ESP}/EFI" "${ESP}/loader/entries"
sudo cp -v "${BOOTLOADER}" "${ESP}/EFI/redox.efi"
sudo tee "${ESP}/loader/entries/redox.conf" <<EOF
title Redox OS
efi /EFI/redox.efi
EOF
set +x
sync
echo "Finished installing Redox OS dual boot"

42
scripts/find-recipe.sh Executable file
View File

@ -0,0 +1,42 @@
#!/usr/bin/env bash
# Ensure arch and config are set as desired, we use these to find the build dir
export ARCH=$(uname -m)
export CONFIG_NAME=desktop
# Make sure to unmount the image first
make unmount &>/dev/null || true
# Mount the image
make mount >/dev/null
# Find all files
find "build/${ARCH}/${CONFIG_NAME}/" -type f | cut -d / -f5- |\
sort |\
uniq |\
while read path
do
# Skip empty paths
if [ -z "${path}" ]
then
continue
fi
# Find all packages providing this file
pkgs="$(
find cookbook/recipes/*"/target/${ARCH}-unknown-redox/stage/${path}" 2>/dev/null |
cut -d/ -f3 |
tr '\n' ' ' |
sort |
uniq
)"
if [ -n "${pkgs}" ]
then
echo "$path: ${pkgs}"
else
echo "$path: no packages, see config/${ARCH}/${CONFIG_NAME}.toml"
fi
done
# Make sure to unmount the image
make unmount &>/dev/null || true

23
scripts/include-recipes.sh Executable file
View File

@ -0,0 +1,23 @@
#!/usr/bin/env bash
# Given a string, find recipe.toml files containing that string.
# Create a list that can be copy/pasted into a filesystem config.
if [ -z "$*" ]
then
echo "Find matching recipes, and format for inclusion in config"
echo "Usage: $0 \"pattern\""
echo "Must be run from 'redox' directory"
echo "e.g. $0 \"TODO.*error\""
exit 1
fi
cookbook_recipes="cookbook/recipes"
recipe_paths=$(grep -rl "$*" "$cookbook_recipes" --include recipe.toml)
for recipe_path in $recipe_paths
do
recipe_dir="$(dirname $recipe_path)"
recipe_name="$(basename $recipe_dir)"
echo "$recipe_name = {} # " $(grep "$*" $recipe_path)
done

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

26
scripts/show-package.sh Executable file
View File

@ -0,0 +1,26 @@
#!/usr/bin/env bash
# Show the contents of the stage and sysroot folders in some recipe
if [ -z "$*" ]
then
echo "Show the contents of the stage and sysroot folders in recipe(s)"
echo "Usage: $0 recipe1 ..."
echo "Must be run from the 'redox' directory"
echo "e.g. $0 kernel"
exit 1
fi
find_recipe="target/release/find_recipe"
if [ ! -x "cookbook/$find_recipe" ]
then
echo "$find_recipe not found."
echo "Please run 'make fstools' and try again."
exit 1
fi
for recipe in $*
do
recipe_dir="$(cd cookbook; "$find_recipe" "$recipe")"
ls -1 "cookbook/$recipe_dir/target"/*/{stage,sysroot}
done

33
scripts/ventoy.sh Executable file
View File

@ -0,0 +1,33 @@
#!/usr/bin/env bash
set -e
ARCHS=(
i686
x86_64
)
CONFIGS=(
demo
desktop
)
VENTOY="/media/${USER}/Ventoy"
if [ ! -d "${VENTOY}" ]
then
echo "Ventoy not mounted" >&2
exit 1
fi
for ARCH in "${ARCHS[@]}"
do
for CONFIG_NAME in "${CONFIGS[@]}"
do
IMAGE="build/${ARCH}/${CONFIG_NAME}/livedisk.iso"
make ARCH="${ARCH}" CONFIG_NAME="${CONFIG_NAME}" "${IMAGE}"
cp -v "${IMAGE}" "${VENTOY}/redox-${CONFIG_NAME}-${ARCH}.iso"
done
done
sync
echo "Finished copying configs (${CONFIGS[@]}) for archs (${ARCHS[@]})"