Git Product home page Git Product logo

oasis's Introduction

oasis

builds.sr.ht status

oasis is a small linux system.

It is probably quite a bit different from other Linux-based operating systems you might be familiar with, and is closer to a BSD.

There are many features that distinguish it from other operating systems:

  • Completely statically linked.

All software in the base system is linked statically, including the display server (velox) and web browser (netsurf). Compared to dynamic linking, this is a simpler mechanism which eliminates problems with upgrading libraries, and results in completely self-contained binaries that can easily be copied to other systems.

  • Fast builds that are 100% reproducible.

All packages are built with samurai, using build manifests generated by Lua scripts. This involves considerable up-front packaging cost, but minimal maintenance cost, and offers numerous advantages, including near optimal build times, predictable and reproducible builds, reduced build-time dependencies, and incremental builds even across package boundaries.

  • Minimal bootstrap dependencies.

Any POSIX system with git, lua, curl, a sha256 utility, standard compression utilities, and an x86_64-linux-musl cross compiler can be used to bootstrap oasis. This makes it trivial to cross-compile, even from non-Linux systems such as macOS or OpenBSD.

  • BearSSL is the system TLS and crypto library.

BearSSL is incredibly small and well written, but is not widely adopted. Through the use of libcurl, which now has native BearSSL support, and libtls-bearssl, an alternative implementation of libtls based on BearSSL, oasis uses BearSSL throughout the system. Only a few optional packages still require LibreSSL.

  • No package manager.

Instead, you configure a set of specifications of what files from which packages to include on your system, and the build system writes the resulting filesystem tree into a git repository. This can then be merged into /, or pulled from another machine.

  • Integrates well with OS-agnostic package systems.

Although the aim is to provide a complete system, there is a lot of free software out there, a lot of which does not match up well to our goals. Rather than trying to build and maintain yet another repository with thousands of packages, oasis works well with pkgsrc and nix. This makes it easy to extend your system with software you might need, while keeping the base system small and focused.

  • Extremely simple system configuration.

A guiding principle is that the /etc directory should be simple enough for system administrators to understand completely and customize appropriately. The most complex file in the default configuration is the system initialization script, /etc/rc.init, at only 16 lines.

  • Mostly ISO C conformant.

A major goal of oasis is to build with cproc, a C compiler which is much stricter about the ISO C standard than gcc or clang, and orders of magnitude smaller. Although this is a work-in-progress effort, all core packages, and most others, build successfully with cproc.

Principles

  • Software complexity should be measured by including all transitive dependencies.
  • Executables should be linked statically.
  • Software components should allow for easy customization and/or modification.
  • Package sources should be referenced through a URL or git submodule, but not included directly.
  • /etc should be simple enough to be understood in its entirety.
  • Patches should be well organized, have good descriptions, and should always apply cleanly.

Install

An install guide can be found on the wiki.

However, keep in mind that oasis is an ambitious project, and there is still a lot of work to do. Users should be comfortable building their own kernel and tinkering with their system when things go wrong. If you do run into trouble, I'm always happy to help you out.

QEMU

If you'd like to give oasis a try without installing it yourself, there is a QEMU image available here.

Inside the archive are the root filesystem, a Linux kernel, and a script to launch qemu. There is also README.md with some information about how to use it. In short, use ./run to launch in graphical mode, and ./run -s to launch in serial mode.

Software

oasis uses smaller and simpler implementations of libraries and tools whenever possible:

  • musl instead of glibc
  • sbase instead of coreutils
  • ubase instead of util-linux
  • pigz instead of gzip
  • mandoc instead of man-db
  • bearssl instead of openssl
  • oksh instead of bash
  • sdhcp instead of dhclient or dhcpcd
  • vis instead of vim or emacs
  • byacc instead of bison
  • perp and sinit instead of sysvinit or systemd
  • netsurf instead of chromium or firefox
  • samurai instead of ninja
  • velox instead of Xorg
  • netbsd-curses instead of ncurses

These packages are grouped into logical sets, and the full list is available in the pkg directory.

If your favorite software is missing, keep in mind that you can likely still install it via pkgsrc or nix.

Contact

There is a mailing list at ~mcf/[email protected], and an IRC channel at #oasis on libera.chat. Feel free to use them for questions, patches, or general discussion.

oasis's People

Contributors

cytokine-storm666 avatar ericonr avatar haval0 avatar hovercats avatar jeannekamikaze avatar michaelforney avatar noocsharp avatar rnpnr avatar sertonix avatar thembl09898 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

oasis's Issues

ninja commit fails; out/pkg/awk/maketab: not found

I've been having some trouble building oasis from the instructions. I did a successful build a few weeks ago but now it is failing and I can't figure out why. I've been over the instructions a dozen times and it always fails in the same way

The only changes I've made to config.lua are the exact same changes suggested on the Wiki.

ninja -v commit fails with the following error:

[1/6111] out/pkg/awk/maketab out/pkg/awk/awkgram.tab.h >out/pkg/awk/proctab.c
FAILED: out/pkg/awk/proctab.c 
out/pkg/awk/maketab out/pkg/awk/awkgram.tab.h >out/pkg/awk/proctab.c
/bin/sh: 1: out/pkg/awk/maketab: not found
[2/6111] x86_64-linux-musl-cc -MD -MF out/pkg/bc/bc/main.c.o.d -Os -fPIE -pipe -std=c99 -Wall -Wpedantic -D _POSIX_C_SOURCE=200809L -I ./pkg/bc -I ./pkg/bc/src/h -c -o out/pkg/bc/bc/main.c.o pkg/bc/src/bc/main.c
[3/6111] x86_64-linux-musl-cc -MD -MF out/pkg/bc/bc/load.c.o.d -Os -fPIE -pipe -std=c99 -Wall -Wpedantic -D _POSIX_C_SOURCE=200809L -I ./pkg/bc -I ./pkg/bc/src/h -c -o out/pkg/bc/bc/load.c.o pkg/bc/src/bc/load.c
[4/6111] x86_64-linux-musl-cc -MD -MF out/pkg/bc/bc/execute.c.o.d -Os -fPIE -pipe -std=c99 -Wall -Wpedantic -D _POSIX_C_SOURCE=200809L -I ./pkg/bc -I ./pkg/bc/src/h -c -o out/pkg/bc/bc/execute.c.o pkg/bc/src/bc/execute.c
[5/6111] x86_64-linux-musl-cc -MD -MF out/pkg/bc/bc/scan.c.o.d -Os -fPIE -pipe -std=c99 -Wall -Wpedantic -D _POSIX_C_SOURCE=200809L -I ./pkg/bc -I ./pkg/bc/src/h -c -o out/pkg/bc/bc/scan.c.o pkg/bc/src/bc/scan.c
[6/6111] x86_64-linux-musl-cc -MD -MF out/pkg/bc/bc/bc.c.o.d -Os -fPIE -pipe -std=c99 -Wall -Wpedantic -D _POSIX_C_SOURCE=200809L -I ./pkg/bc -I ./pkg/bc/src/h -c -o out/pkg/bc/bc/bc.c.o pkg/bc/src/bc/bc.c
ninja: build stopped: subcommand failed.

Yet out/pkg/awk/maketab does indeed exist

Another issue I've been running into is that x86_64-linux-musl-{cross|native}/bin does not contain a cc binary so I always have to symlink bin/x86_64-linux-musl-cc to bin/cc. If I don't do this, I will get an error on ninja commit saying /bin/sh: 1: cc: not found. Same result with both the cross and native packages.

CONFLICT (content): Merge conflict in Makefile

git pull --no-edit https://github.com/oasislinux/linux
fails at automerging the Makefile with the error in the title. Not sure if I did a mistake or the wiki is outdated. In any case, I will try installing it again.

/var is empty.

I tried building oasis multiple times, I was successful only twice, and in both attempts /var was empty, I tried running hotplugd but that didn't work. Oh btw, can you please explain how you're supposed to install/build stuff after building the distro?

Shared library support

Issues:

  • Generation of symlinks for lib install (e.g. /lib/libfoo-1.5, /lib/libfoo-1.5.2, ...)
  • Tracking of dependencies
  • RUNPATH without having to chroot
  • Probably a few dozen more

Bootable USB image?

It would be great to try to boot Oasis from USB to test it out on a real system. How difficult would it be to set something like that up?

If this doesn't exist already, it would be also handy to have some sort of script or process that sets up an image ready for flashing to USB (kind of like what buildroot can do).

keyboard echo turned off

when i booted the qemu image , i got the shell prompt , but i couldn't see what i am typing, the shell was accepting the commands and executing. please fix this small nit.

Interested in other display servers? I have two suggestions.

Arcan - this project also went with Lua configuration, and can be configured to be very minimal. Most of the dependencies are optional, but overall it's quite a bit bigger than velox at the moment, mostly because of it's 15+ year history. All of the desktop environments are sets of Lua scripts, including:

  1. Durden, a traditional plain desktop environment. It can be configured to emulate the behaviour of other desktop environments if you want to.
  2. Pipeworld, a zoomable UI window manager. Remember that scene in Jurassic park? Yeah, except this is not nearly as awkward. It is also a shell-powered spreadsheet which means you can pipe stuff between windows.
  3. Safespaces, a 3D & VR desktop environment. Nuff said.
    There is a problem with Arcan, though: it requires some C++ code. Right now it's at least cmake. I wrote a message to letoram (main dev) about the existence of Premake, which basically serves the same purprose but involves Lua & C instead of C++, and he said that it is welcome & possible at around 0.7 release, since by that point just enough refactoring will happen for it to work out.
    I think the LOC will also gradually reduce with time, especially once certain in-tree libraries will be separated into additional packages (arcan-net, arcan-wayland, ...)

And there is also nano-X, previously called microwindows. It is a tiny X11 server which implemented just enough X11 to run motif. There are bigger problems with it:

  1. It might carry some Xorg deficiences (like sharing properties of all windows with all other windows, poorly implemented global clipboard, ...)
  2. It carries an MPL license, which is... weird.
  3. It has a lot of backends that are useless to us: SDL, Win32, Android, ...
  4. It is smaller (in terms of LOC) than Arcan but bigger than Velox.
    I suppose somebody could reimplement nano-X under ISC or BSD0 and pull out all of the unnecessary parts but what's the point? I don't think Xorg will be alive in 10 years seeing advancements on Arcan and Wayland fronts, unless we are talking about xarcan or xwayland.

Install question: Merge built system into root repository step

I'm trying to build oasis following the instructions in the wiki, but I get stuck in the step "Merge built system into root repository."

I'm on void-linux. I created a partition /dev/sda2, and I mounted it to /mnt. I changed the ownership of the folder to my user.

Then I followed the instructions on the wiki:

sudo xbps-install -S bison curl git ninja lua pax wayland-devel libpng-devel nasm

cd /mnt
curl -O http://musl.cc/x86_64-linux-musl-cross.tgz
zcat x86_64-linux-musl-cross.tgz | pax -r

export PATH=$PATH:$PWD/x86_64-linux-musl-cross/bin
export ROOT="/mnt"
export DRIVE="sda"
export ROOTPART="sda2"
export EDITOR="nvim"

cd $ROOT
git clone -c 'core.sharedRepository=group' https://github.com/oasislinux/oasis.git src/oasis
git init --template src/oasis/template
cd src/oasis

cp config.def.lua config.lua

$EDITOR config.lua
# I changed: repo={ path='../..', flags='', tag='tree', branch='oasis', }

lua setup.lua
ninja commit

cd $ROOT
git config branch.master.remote .
git config branch.master.merge oasis

But then git merge outputs

merge: oasis - no és quelcom que puguem fusionar

and ./libexec/applyperms outputs

./setup.sh: 37: ./libexec/applyperms: not found

I found applyperms in /mnt/src/oasis/out/root.hash/libexec, but I didn't find the executable file.

Build all packages with cproc

TODO:

  • alsa-lib
    Needs VLAs. Port things to tinyalsa instead?
  • catgirl
    Needs wide string literals.
  • efivar
  • f2fs-tools
  • mpv
    Needs atomic types.
  • musl
  • nginx
  • pixman
  • python
  • the_silver_searcher
    Needs TLS. Could be ported to pthread_key.

Done:

  • acme-client
  • alsa-utils
  • atinout
  • awk
  • bc
  • bearssl
  • binutils
  • blind
  • byacc
  • bzip2
  • cmark
  • cproc
  • curl
  • dmenu
  • dnssec-rr
  • dosfstools
  • e2fsprogs
  • efibootmgr
  • elftoolchain
  • expat
  • farbfeld
  • ffmpeg
  • file
  • flex
  • fontconfig
  • freetype
  • fribidi
  • fuse
  • git
  • hostap
  • ii
  • iproute2
  • jbig2dec
  • kbd
  • less
  • libass
  • libcbor
  • libdrm
  • libevdev
  • libevent
  • libffi
  • libfido2
  • libgpiod
  • libinput
  • libjpeg-turbo
  • libliftoff
  • libnl
  • libpciaccess
  • libpng
  • libressl
  • libtermkey
  • libtls-bearssl
  • libutp
  • libxkbcommon
  • lpeg
  • lua
  • make
  • mandoc
  • mc
  • monocypher
  • msmtp
  • mtdev
  • mupdf
  • nasm
  • ncompress
  • ncurses
  • netsurf
  • nsd
  • oksh
  • openbsd
  • openntpd
  • openssh
  • pcre
  • perp
  • pigz
  • pounce
  • qbe
  • rc
  • samurai
  • sbase
  • sdhcp
  • sinit
  • sshfs
  • squashfs-tools-ng
  • st
  • strace
  • swc
  • syslinux
  • texi2mdoc
  • tinyemu
  • transmission
  • tz
  • u-boot
  • ubase
  • unzip
  • utf8proc
  • util-linux
  • velox
  • vis
  • wayland
  • wld
  • xz
  • zlib
  • zstd

N/A:

  • adobe-source-fonts
  • cacert
  • linux-headers
  • man-pages-posix
  • skeleton
  • terminus-font
  • usbids
  • wayland-protocols
  • xkeyboard-config
  • youtube-dl

"git merge oasis"

When installing oasis, everything runs smoothly until

$ cd $ROOT
$ git merge oasis
merge: oasis - not something we can merge

'pax' command not found

Currently trying to follow the wiki

This happens with scripts/fetch-curl.sh:

./scripts/fetch-curl.sh: line 34: pax: not found
FAILED: pkg/byacc/fetch
sh ./scripts/fetch-curl.sh pkg/byacc && touch pkg/byacc/fetch
ninja: build stopped: subcommand failed.

It seems I need to install the "pax" utility on my system. This is proving to be very difficult to do on Alpine (it doesn't exist in the repo, and the sources have an archaic autotools system).

Is there any possible workaround for this?

the gui is barely usable

The gui started with virtualdesktops and clock. but , nothing would happen on mouse clicks. please give a menu on a mouse click , the gui needs a tonne of improvements before it is usable.

[source hut][cproc] spamhaus blocklist

Sorry for this out-of-topic issue in order to post you a message related to source hut where cproc is hosted: my email server is blocked by source hut because they use spamhaus IP blocklists without implementing grey listing.

Xorg?

Hi! I would like to know if it is possible to run Xorg on oasis.

What is the password of qemu image?

I can't really find password for oasis login. It isn't in wiki and it isn't in readme of oasis. I tried to guess, but not successfully. If i just didn't find it, the issue will be that it's really hard to find, if it's really not written anywhere this will be an issue.

commit.sh fatal: Not a valid object name tree

I'm following https://github.com/oasislinux/oasis/wiki/Install

I did the instructions of git init from the oasis template in root, setting this config, and running ninja commit

repo={
	path='../..',
	flags='',
	tag='tree',
	branch='oasis',
}

at the end of the build, I'm getting this error:

[1/1] sh ./scripts/commit.sh ../.. oasis tree out/root.commit
FAILED: out/root.commit
sh ./scripts/commit.sh ../.. oasis tree out/root.commit
fatal: Not a valid object name tree
ninja: build stopped: subcommand failed.

the specific line in commit.sh that's failing is

commit=$(git -C "$repo" commit-tree -m "oasis $(git rev-parse --short=10 HEAD)" "$@" "$tag")

I tried creating the oasis branch (root is on master) and then creating an inital commit and tagging it "tree". That did get this command to not error, but it didn't actually help anything because the subsequent merge instructions failed from master, stating oasis was not something that can be merged.

Anyway I'm not enough of a git witch to understand what's actually supposed to be happening to debug this.

Package the kernel with the build system

I went through the install a while ago, and I remember the most tedious part being building the kernel.

It would be nice if it was packaged alongside the other packages. I envision the kernel config settings could then be configured in config.lua so that they could be saved to version control, thereby allowing more consistent system rebuilds. Also this system would make kernel updates as automatic as base system utility updates, instead of manual.

What do you think of this idea?

Switch to BearSSL

We should try to use BearSSL whenever possible.

To do:

  • nginx
    OpenSSL code is mostly contained in one file. It seems possible, but difficult to port to libtls.
  • python
    Used by hashlib and ssl modules. hashlib has already ported. _ssl.c is over 6000 lines, though possibly could be ported to libtls.

Done:

  • catgirl
    Using libtls-bearssl.
  • curl
    Upstream in 7.68.0.
  • ffmpeg
    Using libtls-bearssl.
  • hostap
    Patched to use BearSSL digests and HMAC.
  • libfido2
    Ported to use BearSSL crypto. EdDSA is disabled for now until BearSSL has an implementation.
  • msmtp
    libtls support added upstream by @noocsharp.
  • openntpd
    Using libtls-bearssl.
  • openssh
    Ported to BearSSL (mostly). DH key exchange methods are not yet implemented.
  • pounce
    Using libtls-bearssl.
  • rsync
    Added an MD4 fallback.
  • tinyemu
    Patched to use BearSSL HMAC-SHA256 and AES-CBC.
  • transmission
    Patched to use BearSSL SHA1 and PRNG. Added an RC4 fallback.
  • acme-client
    Using libtls-bearssl, libx509cert, and BearSSL.

Build instructions?

It'd be cool if there was a part of the README that said "here is how to clone the repo and build it and turn it into a bootable image" or something similar.

`mandoc` is missing `less`

The package mandoc is in the core list and requires less but less is not in the core list.

I am new to this but I think less should be moved to the core list.

Package options

I was thinking it could be possible to support a form of options via branches. Each package would have to
be a submodule or subtree and each option a branch this way a tool could simply merge the branches into the package submodule or subtree master (which may not work with complex options).

This is of course if package options are wanted at all.

ninja: error: pkg/mc/myr.ninja

I am following the installation guide, and run into the following issue when issuing

ninja commit

ninja: error: pkg/mc/myr.ninja:1: expected ':', got '|' ($ also escapes ':')
build $outdir/lib/sys/sys.o | $outdir/lib/sys/sys.use: mc $srcdir/lib/sy...
^ near here

Not at all a pressing issue, as I don't need Myrddin, and it might be that I am doing something wrong. Thanks a lot for all of the effort you put into this system, it is greatly appreciated!

Troubles compiling kernel

Hi there. I'm following the Wiki for building the kernel and running into an issue.

If I use master branch of kernel sources, I run into a merge conflict with scripts/kconfig/mconf-cfg.sh. I set tag to v6.1 (the version noted in the commit messages on oasislinux/linux/scripts/kconfig), I can apply the patches.

But then I run into a problem with make menuconfig related to the same mconf issue

  HOSTLD  scripts/kconfig/mconf
/usr/bin/ld: cannot find -lterminfo
collect2: error: ld returned 1 exit status
make[1]: *** [scripts/Makefile.host:120: scripts/kconfig/mconf] Error 1
make: *** [Makefile:697: menuconfig] Error 2

I saw some discussion elsewhere about the above error suggesting to run pkgconf, which on my end returns:

$ pkgconf --libs ncurses
-Wl, -Bsymbolic-functions -lncurses -ltinfo

I'm not sure how to get past this issue. Any help appreciated.

Thank you

Wrong header file name in pkg/awk/gen.lua

In pkg/awk/gen.lua, the header file (awkgram.tab.h) has not replaced yet.

This line
build('maketab', '$outdir/proctab.c', {'$outdir/ytab.h', '|', '$outdir/maketab'})
should be
build('maketab', '$outdir/proctab.c', {'$outdir/awkgram.tab.h', '|', '$outdir/maketab'}).

Memory Leaking Issue.

Last night, I installed Oasis on my laptop, and the installation process went smoothly. However, I encountered similar issues to those I experienced in the QEMU version. Specifically, when I open programs like mpv, the RAM usage steadily increases every second. This consumption continues to escalate until it reaches its maximum, leading to a video crash. Additionally, the overall RAM usage in Oasis appears to be higher than anticipated (60MB in Oasis, 35MB in KISS/sway, 40MB in Void/dwm). I believe that the RAM usage in Oasis should be lower.

In an attempt to gather more information, I exported WAYLAND_DEBUG=1, hoping to obtain some useful output. However, the output was rather chaotic. Please let me know if you require any specific output or further details.

Thank you for your attention to this matter.

Issues in short:

  1. Observe steady increase in RAM usage.
  2. MPV memory leaking, Video crashes once RAM usage reaches maximum.

Expected Behavior:

  • RAM usage in Oasis should be lower, comparable to other distributions/WM combinations.

how can I install packages in the qemu image ?

sorry for the stupid question, but I'm really don't know how to install packages in this environment, also I didn't used to deal with lua and ninja.
Can you please tell me how to install any package from /src/oasis ?
whatever, thank you for your amazing projects.

Suggest: --enable-new-dtags

If you have the dynamic linker enabled, I think its best to set --enable-new-dtags in the musl cross make config. This defaults to RUNPATH instead RPATH in .so files.

Build libxkbcommon with byacc

I noticed that the libxkbcommon carries a patch with a pre-generated parser.c file, because it is generated with bison. But I always did try to keep byacc working. The only detail is that byacc needs to be build with --enable-btyacc (i.e. #define YYBTYACC 1)

Update the instructions for building the kernel

Following the instructions in the wiki as-is, I got this error after pulling in the patches:

(chroot) # git pull --no-edit https://github.com/oasislinux/oasis
remote: Enumerating objects: 20966, done.
remote: Counting objects: 100% (4620/4620), done.
remote: Compressing objects: 100% (2407/2407), done.
remote: Total 20966 (delta 2242), reused 3926 (delta 1682), pack-reused 16346
Receiving objects: 100% (20966/20966), 4.59 MiB | 4.41 MiB/s, done.
Resolving deltas: 100% (11562/11562), done.
From https://github.com/oasislinux/oasis
 * branch                      HEAD       -> FETCH_HEAD
hint: You have divergent branches and need to specify how to reconcile them.
hint: You can do so by running one of the following commands sometime before
hint: your next pull:
hint:
hint:   git config pull.rebase false  # merge
hint:   git config pull.rebase true   # rebase
hint:   git config pull.ff only       # fast-forward only
hint:
hint: You can replace "git config" with "git config --global" to set a default
hint: preference for all repositories. You can also pass --rebase, --no-rebase,
hint: or --ff-only on the command line to override the configured default per
hint: invocation.
fatal: Need to specify how to reconcile divergent branches.

Using pull.ff only and pull.rebase false did not work;

(chroot) # git config pull.ff only
(chroot) # git pull --no-edit https://github.com/oasislinux/oasis
...
fatal: Not possible to fast-forward, aborting.
(chroot) # git config pull.rebase false
(chroot) # git pull --no-edit https://github.com/oasislinux/oasis
fatal: refusing to merge unrelated histories

Using pull.rebase true seems to run properly, until it runs into this error:

(chroot) # git config pull.rebase true
(chroot) # git pull --no-edit https://github.com/oasislinux/oasis
Auto-merging include/scsi/scsi_device.h
CONFLICT (content): Merge conflict in include/scsi/scsi_device.h
error: could not apply 06f81ea8ca09... [PATCH] scsi: remove volatile from scsi data
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 06f81ea8ca09... [PATCH] scsi: remove volatile from scsi data

Skipping it just brings up more errors like the one above

aarch64 support

so Apple M1/M2 users can run it in QEMU without x86_64 emulation

Wiki improvement: Kernel clone

I had the same issue as #26.

I tried some tags: v5.19.1, v5.18.17 (and some previous ones), v.5.17.15 (and some previous ones), etc. But I didn't succeed with any of them.

Then I tried to run git pull --no-edit https://github.com/oasislinux/linux on the branch linux-5.18.y instead. I didn't know how to do it, so I forked the repo and changed the default branch on my fork to linux-5.18.y.

Finally this worked:

git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git /src/linux
cd /src/linux
git checkout v5.18.17
git pull --no-edit https://github.com/Eloitor/linux --rebase

Is there a way to do this without creating a fork? If so, it would be nice to include more detailed instructions in the wiki.

Error during build of `file` package

Meant to report this last night but was tired

During build, using ubuntu 20.04 and debian buster, I got the following error with the file package: file: could not find any valid magic files!'. This happens while running file -C -m magic, after a bunch of warnings. Full log of warnings attached but it's not too relevant.

Anyway, the problem seems to be that it's using the host system's file, not the file it just built, and I guess there's some incompatibilities from the versions shipped by debian and ubuntu. This patch fixes it by using the file it just built to generate the magic:

diff --git a/pkg/file/gen.lua b/pkg/file/gen.lua
index 626b044d..f4399a50 100644
--- a/pkg/file/gen.lua
+++ b/pkg/file/gen.lua
@@ -38,7 +38,7 @@ exe('file', {'src/file.c', 'src/seccomp.c', 'libmagic.a', '$builddir/pkg/zlib/li
 file('bin/file', '755', '$outdir/file')
 man{'$outdir/file.1'}

-rule('magic', 'cd $outdir && file -C -m magic')
+rule('magic', 'cd $outdir && ./file -C -m magic')
 build('magic', '$outdir/magic.mgc', {'|',
        copy('$outdir/magic', '$srcdir/magic/Magdir', lines('magic.txt')),
        copy('$outdir/magic', '$srcdir/magic', {'Header', 'Localstuff'}),

There is a catch. If you want to be able to cross-compile oasis, this won't work, unless you have qemu-user and corresponding binfmt on the host system to emulate the built file binary. I don't know if cross compiling is even a goal of oasis or not; If that's not a problem, this should work.

Support configurable PREFIX

This will allow users to install oasis alongside their existing operating system by setting config.prefix=os.getenv('HOME')..'/oasis'.

netsurf frontend

yes, where is this "tiny" netsurf frontend? I cannot manage to find it.

no terminal emulator included

Why not use your st fork? Speaking of that, your st fork works fine for me on weston, but not sway(using wlc) This is what happens with gdb st


Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7124396 in wl_proxy_marshal_constructor () from /usr/lib/libwayland-client.so.0

Error bootstrapping pkgsrc

See the screenshot for the full output but ultimately it fails with:

configure: error: in `/src/pkgsrc/work/bmake':
configure: error: no acceptable C compiler found in $PATH

2022-02-02_@_20-36-57-scrot

I couldn't find config.log

cannot open out/pkg/tz/zoneinfo/Australia/Currie: No such file

I'm doing a textbook install of OASIS using debian, and everything went well until it tries to install the Australia/Currie timezone.

[4553/5968] HASH 100644 share/zoneinfo/Australia/Currie
FAILED: out/root.hash/share/zoneinfo/Australia/Currie
sh ./scripts/hash.sh out/root.git 100644 share/zoneinfo/Australia/Currie out/pkg/tz/zoneinfo/Australia/Currie >out/root.hash/share/zoneinfo/Australia/Currie
./scripts/hash.sh: 17: ./scripts/hash.sh: cannot open out/pkg/tz/zoneinfo/Australia/Currie: No such file
[4554/5968] CC out/pkg/tz/zic.c.o
ninja: build stopped: subcommand failed.

I checked if I have enough space on HD, which I do on /dev/sdb2.

root@debian:/mnt/src/oasis# df -h
Filesystem Size Used Avail Use% Mounted on
udev 971M 0 971M 0% /dev
tmpfs 198M 5.6M 192M 3% /run
/dev/sda1 19G 1.8G 16G 11% /
tmpfs 986M 0 986M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 986M 0 986M 0% /sys/fs/cgroup
tmpfs 198M 0 198M 0% /run/user/0
/dev/sdb2 9.8G 1.1G 8.2G 12% /mnt
/dev/sdb1 2.0M 21K 1.9M 2% /mnt/boot
root@debian:/mnt/src/oasis#

Thx !

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.