#Aero
1 messages · Page 2 of 1
and within the main server security is not as much of an issue due to rust guarantees
at least not as much of an issue
if all we had to worry about were syscalls and UB we would live in a much better world
the point of a microkernel security wise is that if one segment of the chain goes down, which you can always get it to, the rest doesnt fall down
if you put all the segments together, any of the little cracks I can use to bring it all down
if you make a single server, you are just putting all the segments together
you just have a thin divide between user and kernel for no reason, as its just as easy to bring it down as before
bringing down is not the worst thing that can happen
you don't get cve score of 10 for bringing shit down
usually its things like arbitrary code execution in kernel and what not
the microkernel part helps to mitigate these by reducing the attack vector
and with single server this doesn't go away
in any case of vulnerability or harm that you are planning to bring, putting it all in the same component and address space makes it all shared, take one, take all
you need some isolation for a microkernel to make sense
well, the microkernel part here makes sure its harder to take one
because syscall attack surface is smaller
its not pointless
If the OS implements 20 functions, the deal with microkernel and monolithic is how you spread those 20 functions, whether you have them all in one place, in 2 places, or 20. Bigger modularity is spreading those points further.
When you say you have a smaller syscall attack surface, what I understand is that you are insisting on making 20 lower, that is not how this game works, the surface is the same, its how you spread it that matters
you are not making 20 lower, you are exposing 20 over a lower number
which means that if I get one of those 20, I get all of the ones you put together in the same group, dont you see how that compromises the security aspect?
right, but it is harder to get any of these 20 with microkernel in between
like the number of attacks by which you can "get" these 20 decreases
its marginally harder that if they were all together, but its also miles easier than if they were properly distributed
well its not exactly clear why
it is pretty clear why, more components means less complexity per component, which means less that can go wrong, and less that can be vulnerated if it breaks
more components also means slower, sadly, as isolation has a cost
its the ever spanning microkernel vs monolithic argument
I think that rust provides a good chunk of guarantees at compile time that can isolate components without runtime overhead
the most unsafe part like memory management, scheduling, and interrupt handling are usually within the microkernel
that is just not the case, rust is not an evil superpower that makes stuff more isolated. The code is gonna be inside the same address space, even if the total vulnerability count is smaller by magic of the borrow checker, the fact of the code not being isolated means you can still sniff on other components
the most useful way I can think of visualizing it is a denial of service
if I bombard a process, and I make it so it just cannot run fine, a thing that is possible to do regardless of language, it can vary from destroying your workflow to causing a minor inconvenience, depending on OS architecture and how you distribute those 20 functions
the deal why I said that single server microkernels are pretty useless on the regard of isolation, is that in reality, its not 20 functions we are spreading, but hundreds, usually with a heavy skew on the userland side thanks to the inherent issues of kernel space. If you put all userland in a single entity tho, you effectively created a second kernel space that overlooks all
and it all comes crashing down next
why should andy have to worry about someone not being able to use parted?
and it's not like using sudo on the script isn't a thing
honestly, there are so many ways to suggest something be reconsidered, but all caps FIX THAT does nothing towards motivating someone to do anything
especially when they have absolutely zero obligation to do anything for you
I’d just ignore those trolls
any suggestions for what should I do now
have you ported nftables yet?
not that lol
why not
usb support
so you can actually use aero on real hw
Port KDE or GNOME
port java 8 so I can play Minecraft 😎
this but unironically
Port systemd
i am always available for consultation on initware ports
it might be able to run without any cgroups or emulation thereof at all, can't remember
likewise for systemd i am available for any assistance required though i haven't tracked whether it's gotten harder to port since the version i tackled
Port qemu and run aero under aero
Nah, port QEMU and install macOS or Windows in QEMU on aero
Will the idea of a common init system you mentioned in the Keyronex thread be a variation of InitWare or something different?
CC: @slow bronze
Decently doable
Fuck it. Will try soon
I have it compiled
when debug session
it would be from-scratch since i don't think the entire systemd is really necessary for hobby OSes
GNOME needs gobject-introspection which sucks
Java sucks too but I will attempt that too sometime
I would argue that a decent chunk of systemd is unnecessary even for most Linux environments. How simple do you envision it?
it would probably be similar to Solaris' SMF, although not nearly as thorough in its implementation
I see, seems nice
Do you have a link to the source tree for me?
https://github.com/InitWare/InitWare although unfortunately it would currently probably be a lot of effort to persuade to build
the porting process to all the BSDs left me no choice but to construct a new build system that used OS name to determine features rather than feature-tests (because of myriad subtle variations)
yeah, it was prior to my having any knowledge of meson
it might build with cgrups enabled
dbus not required I hope?
and fail gracefully (i forgot). dbus is not required
i think i made sure it operates without dbusd
there are options to not use cgroups, pam and libcap
and I intent to use them 
this should be highly doable with some patchwork here and there
on it!
This might be interesting 🤔
I use kde daily so would be nice to have it ngl
Qt5 cross compilation sucks massive ass
Wait until they move to Qt6
Trust me
I have a Qt5 base recipe if you really want to disregard the Portmaster supreme
Last I checked it was on the todo list. But I haven’t checked in a while
Alr
nice
thanks
indeed
wow, cool
amazing
i cannot decide what to work on next
minecraft
gpu drivers maybe
real hardware support
then, as an exercise, install aero to a second computer of yours and write and git commit, git push a patch entirely from it
Port Nvidea drivers 
obviously not
intel drivers are at least reasonable
while amd drivers for linux are open source, but you can't just
git clone https://git.kernel.org/torvalds/linux.git linux
cp -r linux/drivers/gpu/amd aero/drivers/gpu/amd
because then you'd have to match the entire linux kernel interface, which is definitely hard to do
especially considering it is unstable
He was joking
what is this "joking" thing you speak of?
I've never heard this term in my entire life
yo
i am thinking of doing
// `/dev/ctty`: controlling terminal of the process
// `/dev/vtty[0-9]`: virtual terminals
instead of just /dev/tty being ctty and tty[n] being a vtty
so, the bsd approach instead of linux
what you guys think? yeah or nah?
if i do so, not much compatibility would be broken right?
Why not /dev/cty xD
because it doesnt stand for anything meaningful
looks like a lot of programs expect it to be this way (which is /dev/tty instead of /dev/ctty)
so I cannot really make that move
instead I could do vtty[n] instead of tty[n], which basically xorg makes use of and already has support for /dev/vtty so there shouldnt be much to patch out
Or make symlinks
async fn read_at(&self, _: usize, buffer: &mut [u8]) -> usize {
if self.0.is_empty() && self.is_nonblock() {
return Ok(0);
}
let mut copied = 0;
loop {
futures_util::select! {
byte = self.0.next().await => {
// New scancode byte; push it in the result buffer.
buffer[i] = byte;
copied += 1;
},
_ => {
// No more scancodes in the stream; return.
return Ok(buffer.len());
}
}
}
}```
VS
```rs
fn read_at(&self, _: usize, buffer: &mut [u8]) -> fs::Result<usize> {
if self.buffer.lock_irq().is_empty() && self.is_nonblock() {
return Ok(0);
}
// self.wq is a waitqueue
let mut sbuf = self.wq.block_on(&self.wq, |s| !s.is_empty()).unwrap();
let drainage = core::cmp::min(buffer.len(), sbuf.len());
for (i, byte) in sbuf.drain(..drainage).enumerate() {
buffer[i] = byte;
}
Ok(drainage)
}```
which one is better in readability
both do the same thing but one uses async rust syntax
block_on is basically async
bro i cannot decide
the latter one is easier to use
the first one is cleaner
but the first one uses rust async which is somewhat unstable
then don't use it
I would probs go with async if that is smth ur kernel supports
You'd take the stable version and add a new item to your list of technical debt
2nd looks sync but is kinda async
As in it blocks the task but yields so other task can execute
thats sync
just like e.g. read() syscall is sync
even if it will yield until data is available
The first one does the same
Except that you don't have to explicit code the state machine
the second one kinda looks better to me
I would go second too
getting anything with X to spin up that fast is an accomplishment worthy of congratulations
Lyre spins up faster
i didn't want to bring this up earlier but now you're forcing my hand
additionally, dwm is a big L as it's suckless which may as well be naziware
dumbnaziware*
Quite a bit of my boot time is from loading and decompressing a ramdisk... I should probably not be shipping 9MiB of wallpapers by default. 🙃
yes i do
the profile really just shows that reading from nvme is slow
thats it lol
using qprofiler btw
I'm a bit embarassed now. My super simple kernel takes a few millisecs just to calibrate its timers, and synchronize the CPUs
My 32-bit OS takes about a sec to get to the command line and another sec to the desktop (most of that is loading the wallpaper), on QEMU TCG and good hardware
I think it shows that most time spent is in reading from the disk
Which could be fixed by adding a page cache
reading from disk is always somewhat slow compared to other operations
Already have it lol
Also just to be fair this is a single core only
SMP is disabled
enable
hello andy ;)
now run your webserver on aero 😎
where a mastodon running on aero??
uh
andy forgot to port ruby on rails
Nice work
Awesome, amazing
ok apparently there is support, based
What are you using for the framebuffer terminal?
i believe that's it
yea
Oh
lol i was bored
lol
does this count as overengineered or is it fine. this is for a custom display method when debug printing syscalls
(systrace)
basically ```rs
match self {
Some(value) => {
write!(fmt, "Some({})", CustomFormat::<SyscallFmt>::display(value))
}
None => write!(fmt, "None"),
}``` vs ```rs
match self {
Some(value) => {
write!(fmt, "Some(");
value.log(fmt);
write!(fmt, ")")
}
None => write!(fmt, "None"),
}
1st looks cleaner(?)
what even is the point
for option, not much
is it really just to save 2 liens of code
but the inner have have different debug fmt impls
i see you've been spending your time everywhere but not making webkitgtk work :^)
💀
fix webkitgtk: ❌
pretty log: ✅
jk you've done a lot
aero is pretty cool except for when you've shifted from providing your own userland to porting all the fancy xorg stuff :^)
does the kernel still have leftovers from aero ipc?
who knows, i might do that again
its all still there lmao
damn i bet it hasnt aged well
i just work on aero as i feel. i might do kernel stuff if i feel like it. i do userland porting stuff when i feel like it etc...
and it makes it fun :^)
i wanna do osdev again but whenever i think about having to write a vmm or a vfs i dont want to anymore
when i sometimes diveret my attentions to other parts, i end up fixing a probelm in some other x part
so thats why i do it
and actually i might sometime write some aero userland apps
that would be hella based
i wanted to do something like the serenity userland profiler
but idk if i should rather port some other preexisitng userland profiler instead
valgrind
oh wait

that wouldnt point the kernel slow functions tho
so custom userland profiler could be useful
baked in the kernel
you can collect traces from the kernel aswell
and include them in the same profile
ofc the profiler wont know what's in the kernel unless you provide it with aslr slide, dwarf etc
but you can expose that somehow to the userland
gdb -p 0
easy
does linux even have a pid 0 process
surely right?
for gdb you'd need ptrace though :^) so have fun with that!
pid 0 doesnt exist on linux
sadly
or rather, ptrace doesnt acknowledge it's existence
hmm
wow
raidy
that sounds hecking crazy
how ru
people usually spell it "raidie"
idc
i'm fine, how are you?
raidyyyy
fine aswell
all very aero i hope
my keyboard my rules bro
lol
how aero was it?
🙏
https://blog.rust-lang.org/2023/11/09/parallel-rustc.html & https://blog.rust-lang.org/inside-rust/2023/12/22/trait-system-refactor-initiative.html
rust...
ikr
so true
i currently do this with fatptr syscall arguments fn syscall(ptr: usize, ptr_size: usize), would it be cleaner to do fn syscall(obj: &[u8]) // assuming the ptr is &[u8] and then the actual syscall function generated with the macro will look like fn syscall(ptr: usize) where ptr will be a reference to Fat { ptr, size }
actually nvm, thats a unnecessary double deref
its fine the way it is rn i suppose
or is that premature optimization
wtf am i thinking of

smap?
you kind of have to copy memory into kernel space, or temporarily disable smap to access it
or if you don't support smap then go right ahead and just access it 
but it would be nice if aero had some sort of UserspacePtr, UserspaceSlice and UserspaceString helpers that wrap raw addresses and let you .verify_access()? or some shi like that at the start of the syscall
you could then insert a const obj = __obj_ptr.verify_access()?;
verify_access would obviously make sure that memory range is valid and return an error otherwise
i currently have UserRef
others should be simple to add
it verifies rw, bails on page fault
yeah im not very familiar with aero codebase anymore, i dont remember that type sadly
thats nice tho
oh shit i forgor, i have the docs on my website
😭
L screenshots
API documentation for the Rust user_copy mod in crate aero_kernel.
so UserRef is really a "please copy this value from user to kernel"
but in a type safe™️ way
oh yeah i fogror about dat
bruh
atleast its functional
we can do error handling later
Result that bitch up
i promise i will after webkitgtk

🙏
webkitgtk importante
whats the progress on that?
still memeing when trying to load websites?
it starts up but for some reason doenst load the page
ah rip
no request is made to the kernel to load webpage
even file:/// doesnt work
from the current looks
something is wrong with ipc?
recieve queue thread in webkit is probs not getting the reqs
which should be a simple file read
so ipc memes i think
uhhh not fun
printf?
to find out how the thing handles page loads
already am doing that
oh damn
i was doing some backtraces on the host
but then arch decided to break my host linux webkit build
some libxml new version memes
i think
i probs should docker it
wooooo
cauz i didnt find any solution online
wait ill show u
In file included from /home/andy/work/tmp/aero/webkitgtk/build/WebCore/DerivedSources/unified-sources/UnifiedSource-42f7b70e-4.cpp:3:
/home/andy/work/tmp/aero/webkitgtk/Source/WebCore/xml/XSLStyleSheetLibxslt.cpp:143:28: error: no matching constructor for initialization of 'XMLDocumentParserScope'
XMLDocumentParserScope scope(cachedResourceLoader(), XSLTProcessor::genericErrorFunc, XSLTProcessor::parseErrorFunc, console);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/andy/work/tmp/aero/webkitgtk/Source/WebCore/xml/parser/XMLDocumentParserScope.h:47:9: note: candidate constructor not viable: no known conversion from 'void (void *, xmlError *)' (aka 'void (void *, _xmlError *)') to 'xmlStructuredErrorFunc' (aka 'void (*)(void *, const _xmlError *)') for 3rd argument
XMLDocumentParserScope(CachedResourceLoader*, xmlGenericErrorFunc, xmlStructuredErrorFunc structuredErrorFunc = 0, void* errorContext = nullptr);
^
/home/andy/work/tmp/aero/webkitgtk/Source/WebCore/xml/parser/XMLDocumentParserScope.h:39:30: note: candidate constructor not viable: requires 1 argument, but 4 were provided
WTF_MAKE_NONCOPYABLE(XMLDocumentParserScope);
^
/home/andy/work/tmp/aero/webkitgtk/Source/WebCore/xml/parser/XMLDocumentParserScope.h:41:18: note: candidate constructor not viable: requires 1 argument, but 4 were provided
explicit XMLDocumentParserScope(CachedResourceLoader*);
^```
yeah
what version is that?
and i the c++ fucks with my brain
# I think? Apple is weird with naming
tag: 'Safari-612.1.27.0.24'
version: '2.33.3'```
the same ver as mgrm
yeah i see
btw jsc works
based
its just the page loading i think
also when building this webkit version, shitload of warnings
oh same here
because use of std::iterator
which is apparantly deprecated
idk c++ enough, why would they deprecate iterator lol
maybe they added smth better
iteratorv2
i wish c++reference wasnt dead
The connection has timed out
An error occurred during a connection to en.cppreference.com.
The site could be temporarily unavailable or too busy. Try again in a few moments.
If you are unable to load any pages, check your computer’s network connection.
If your computer or network is protected by a firewall or proxy, make sure that Firefox is permitted to access the web.
yayyy
archive.is before the url
oh this shit
i think its because of iterator traits or whatever
took me a while to figure out what im looking at
ive never seen it tbh lmao
inheretience stuff?
but yeah webkitgtk is full of warnings, like any decent c++ codebase 
gcc screams a lot for no reason too
clang does too
i noticed that building firefox with clang its very quiet
but with gcc i get like a billion warnings
¯_(ツ)_/¯
@azure cloak i just removed the extra arguments
how important can they be lmao
¯_(ツ)_/¯
💀 🗿
😬
so many errors, not even in my scrollback
💀
lmao
professional apple
💀
@azure cloak
gg
wow
fuck c++ const
const is in C too
no especially in c++
how so?
the error message
lmao i mean as in instead of yapping just tell me your missing const buddy
such a waste of time
c is pretty chill
its error messages are fine
yeah, all very clear
no multiline shit that vaguely resembles an error message
which in and of itself only vaguely tells you what is going on
exactly
thats annoying
why cant you assign a function that takes a const xmlError* to a function that takes a mutable xmlError*
Whats the repo?
@azure cloak
recieve threads are awaiting io
🤔
now add a bunch of shit to backtrace them from within the kernel
and find out which file descriptors they are waiting on
and all that cool shi
hell that looks cool already, good job
based
now expose it over a device so you can just use it with a terminal emulator
from within aero
debug aero from within aero
no don't im jk it's probably not worth it lol
get that webkitgtk working
you're so close
cant you pull some info about the file descriptors?
the recvqueue
oh yeah
or wahtever
debugging Ironclad inside Ironclad was one of the best things I did
definitely worth it
im not sure how you'd make a terminal emulator try and use the kernel debug device instead of stdin/stdout though
well sorry, what i mean is idk how you'd make any normal terminal emulator do that
i was thinking of using cat for the stdout part but idk about stdin
you can just report it to userland and let userland do the printing in a userland app
just open 2 terminals, one with tail and another one just echo whatever you want to the device
seems easy enough
oh i think i see what you mean
hmm
[48] main.rs:268 (tid=6, pid=6) debug ===================================================
[53] main.rs:278 (tid=6, pid=6) debug ==== KDBG WHY 46 -> /usr/libexec/webkit2gtk-4.0/WebKitNetworkProcess/ has state of AwaitingIo is ===== (fd=17, path=<eventfd>/, actual_state=OUT, wanted_state=IN)
[62] main.rs:278 (tid=6, pid=6) debug ==== KDBG WHY 49 -> /usr/libexec/webkit2gtk-4.0/WebKitWebProcess/ has state of AwaitingIo is ===== (fd=21, path=<eventfd>/, actual_state=OUT, wanted_state=IN)
[67] main.rs:278 (tid=6, pid=6) debug ==== KDBG WHY 43 -> /usr/libexec/webkit2gtk-4.0/MiniBrowser/ has state of AwaitingIo is ===== (fd=17, path=<unix_socket>/, actual_state=OUT, wanted_state=IN) (fd=19, path=<eventfd>/, actual_state=OUT, wanted_state=IN)```
its unix_socket and event_fd
well that's annoying
now why arent they getting anything
btw is the kernel debugger thing gonna end up upstream? i kinda wanna see your implementation of it lol
best of luck to you then 🙏
ok now i need systrace
the last time i did systrace on webkit and piped to log file, my computer froze
still trying to figure it out
maybe i need to change my editor theme
that will definitely aid your debugging
it might just be eyes dont see the bug in that theme
lsio?
lsio being a hypothetical command to list IO
the closest equivalent in linux would be a merged netstat and ipcs
ahh
webkit_web_view_load_uri()
getPage() :: WebPageProxy
WebPageProxy::loadRequest()
bro this is why i hate debugging this
takes shitlong to rebuild
webkit
i probs need to upgrade my setup
😭
Lol, should be fine for another year or two
that quadro is showing its fangs, you can totally use the iGPU instead and save yourself pain
with all due respect, you are not playing any games with that quadro anyways
can't you disable jumbo builds somehow?
should improve incremental rebuild times
Sends Messages::WebPage::LoadRequest message with URL from the WebProcessProxy process.
The thread name of WebProcessProxy process is WebContent
void WebPage::loadRequest() which shouldve been called, is not on Aero.
The WebProcessProxy class derives from the AuxProcessProxy class which in turn has the send method.
m_connection in AuxProcessProxy is non-null and it seems to succeed but the method is not called on the other thread.
m_connection is an IPC::Connection
Ahhhh the joys of debugging this shit. I’ve been here before. I see names i recognize
Unfortunately I don’t remember the fix, it was likely some meme in our Unix sockets implementation
I also remember digging into glib cuz the trace goes to there
So that’s fun
💀 😭
i had a look if its trying to send file descriptors over
but the cmsg has nothing inside
rest of unix sockets impl looks complete
dennis cmon plz tell me. try to remember

I’ve had this shit like years ago
only seems to be doing an inital read and then just writes to connection without any reads
hmm
Did you try comparing strace on linux
doing strace on aero and piping it to a file freezes my computer
What about Linux
then i have nothing to compare with
Well can you at least print syscalls on aero
Without fancy strace shit
Might help?
Idk
hm i could try printing them without backtrace
good idea
but lemme quickly try smth else
yep not getting enough reads for some reason
here is it ran on linux
Is there some kind of socket/netstack test suite?
not sure
If somehow you could reproduce the problem in smaller form that would be great
exactly what i want lmao
these are the tests i have for unsocket copied straight from managarm https://github.com/Andy-Python-Programmer/aero/blob/master/userland/tests/test.cc
does that also do all it's dependents?
I've used jinx a bit now and I didn't see that
but I mean, they are in deps, you can just do that easily
at least it isolates them, so its easy
(Aka jinx will get that in a day or two if we ask mint and xbstrap maybe next decade
)
jinx is super easy, do it yourself
in addition to very nice reproducable builds, shell syntax, is there anything else i would get with jinx @candid mural
yes, but i don't remember off the top of my head
uh, eee is probably happy to migrate aero to jinx
@azure cloak
package sanity checks when installing for checking overlapping files, customization with jinx config, containerized builds so it never fails in any other linux system
for that you gotta pay the price of only ever working on linux
not that anyone's xbstrap scripts work on anything but Linux
good price to pay
tbh
does ironclad build on windows?
i mean you could change cbuildrt to something else that works on other than linux
no?
like it's "portable python" but everyone's xbstrap recipes only ever work on Linux... i remember trying to build managarm on FreeBSD... worst mistake of my life
Ironclad builds on all platforms autoconf and gprbuild are ported to, that includes windows and Mac, Gloire (the distro) doesnt
does ironclad use jinx
we do not use cbuildrt in the first place
yes
yeah same thing
yeah but the concept is the same
just rewritten in c
cbuildrt is basically bwrap anyway
bwrap is basically chroot
exactly
pressure vessel bwrap...
lmao
rebooting is basically kexec to triple faulting kernel
so eee, thanks for agreeing to migrating every package in aero to jinx
woah
how many recipes do you have
103 packages and 19 tools
h

alright lol
😬
it may take me a while
does aero have less packages than gloire? damn
gloire has more than 103?
123
what the fuck
when I told you earlier today that its a whole system, it wasnt a lie
also mint, in jinx every package recipie is a file right?
yeah
and is it all in one directory?
could you make it like so you can have sub-dirs to organize it better?
uh
we need a perl script to convert xbstrap to jinx
so like recipe/dev-libs/package
no distro does that, just use metapackages
whats dat
that would actually be dope, though if i backport recipes from vinix/lyre/gloire he gets a free set of bug fixes that his xbstrap recipes are likely affected by (and general improvements)
Whats the purpose of jinx? To make it easier to create a whole OS and not just a kernel? 
it's not xbstrap
it's a "meta-build-system for bootstrapping operating system distributions" (https://github.com/mintsuki/jinx)
dont jinx it
@candid mural jinx 👀
haunting
exciting
🫡 🎉
🙏 minttt
so needy

it's not gonna be done in one day smh
i have other stuff to do, i am basically doing it on the side
ik, was asking cauz i didnt know how to do the barebones
jinx:
if [ ! -d "3rdparty/jinx" ]; then \
git clone https://github.com/mintsuki/jinx 3rdparty/jinx; \
fi``` i need to fix my makefile skills. but is this a sane way to clone the repo and skip if it already exists
@candid mural is it possible to have the host-recipies, source-recipies, ... directories in a seperate subdir (like distro/host-recipies)?
not separately
how does the workdir and clean stuff work?
like is there a command that generates the patch after modifying the workdir
yes
./jinx regenerate <pkg>
bruh
update autoconf then
copy recipes from vinix
^ this
👍 allrighty!
being a bloatware full editor, vscode, why doesnt it respect to use the fileformat specified in gitattributes for syntax highlight
vinix mlibc recipe doesnt set the linux_kernel_headers path
or does it not enable the linux option hmm
tf
consider checking config.log :^)
cannot find libc
and libgcc
deps="mlibc libgcc libstdc++" is how your supposed to declare deps right?
okay works now
yes because we don't use the Linux option
but you can and should easily be able to figure out how to add that
that declares 3 build time and runtime dependencies
also note: there is a fair share of idiosyncracies in managarm's recipes (which you were using before), but those have been fixed in the Vinix/Lyre (now outdated)/Gloire recipes
like not having libgcc and libstdc++ as a target package but a host package, which is just insane
i see
@candid mural is it possible to run a script inside the container with a jinx command
i want to make image inside container
so i dont need root priv
for loopback
it would be nice to have scripts/ and then you could do smth like jinx run-script make-iso
and will be ran in the container
Trust me, I’d like to see that different too.
@candid mural https://github.com/vlang/vinix/blob/ab981e6f730f4c92c87cd75b736e92e185dd816d/build-support/CMakeToolchain.txt#L3C1-L3C1 this needs to be /sysroot
currently says $ENV{XBSTRAP_SYSROOT_DIR}
fair enough
look, i am not blaming you specifically, i am just saying that it is what it is
i am sure that you'd do it differently if you could snap your fingers and get it done
btw the funny part is that i noticed this line in at least 3 other occasions and postponed its fixing and then just forgot about it
I know, I've mentioned it again to korona
I think xbstrap might finally get this soon
@teal swift btw the problem isn't the splittage of packages
the host gcc produces libraries for the target, meant for use on the target
there is no need to build the target's own gcc to obtain these libraries that can be obtained from the host gcc anyways
and, that are actually used for cross compiling all ports anyways, so it just makes sense to use those
that too, didn't actually think of that
now why tf doesnt bash compile
In file included from /base_dir/sources/bash/jobs.c:47:
/sysroot/usr/include/sys/ioctl.h:9:17: fatal error: asm/ioctls.h: No such file or directory
9 | # include <asm/ioctls.h>
| ^~~~~~~~~~~~~~
compilation terminated.
the file clearly exists
well in my case it clearly didn’t exist
you need to provide one in your mlibc sysdeps
isnt it from linux-headers?
idk honestly
may be
just make sure it is part of the mlibc-headers package
stat pkgs/mlibc-headers/usr/include/asm/ioctls.h
if not then you might have to make mlibc-headers depend on linux-headers
it already does sh name=mlibc-headers from_source=mlibc revision=1 hostdeps="pkg-config" imagedeps="meson ninja" builddeps="cxxshim frigg linux-headers" or is this not the right way to do it?
deps
not builddeps
that way the headers are available to everyone who depends on mlibc-headers
not just while building mlibc-headers
so i could now remove the linux-headers from builddeps since now its in deps right?
Yep
is this right? https://github.com/vlang/vinix/blob/bdc87e3f6c7a2cb84a51f4ce71cb26cf11ea715c/recipes/limine#L16
shouldnt this be ${source_dir}/configure
look at jinx-config
there is a funny little function that does configure
it’s called autotools_configure
does doing build use the workdir or the original source dir?
like is it possible to build without regenerating?
it uses sources/${name}
the two copies, ${name}-clean and ${name}-workdir, are there for the regenerate command
you can modify the original source dir and if it works modify the workdir after that
couldnt you make it like
./jinx workspace ${package}
that generates the two additional copies
and ./jinx clean-workspace $(package}
to remove them after?
sounds resonable no? since only the OG one is used
yeah it’s very fun when building chromium
50gb of sources ;DDD
smth like this would make it better tho right? @azure cloak
probably
though
i think we need a separate copy
because how else are you going to create „the workspace”
if you only have a patched source
just dont modify the source
..?
you still need a copy tho
before workspace-create
sources/package
build uses sources/package and is readonly
after workspace-create
sources/package
sources/package-workdir
build uses sources/package-workdir and regen bases it off of package and package-workdir
you need a clean source tree to compare against when generating patches, so if you have a patch for a package you will always need the clean copy
but i do think something like that would be nice
but if you want to avoid those two@copies you’d need to redownload the source when creating the workspace
./jinx rebuild <pkg>
it doesn't require regeneration
andy wants to build from the ${name}-workdir source tree
wdym
so he doesn't have to regenerate every time he makes a change to the workdir
instead he can just directly build from the workdir
well yeah
i said the same thing
just modify the source dir and copy the changes over manually
then regenerate
it sounds like it would make it exceedingly easy for people to forget to create the proper patch by regenerating though
i think that was my reasoning behind forcing you to regenerate
the only thing i do not appreciate
is that
there is 3 fucking copies
of the source directory
well, 2 copies
and one actual source directory
i do understand why that is needed
but its just annoying
fucking 50gb of sources just for chromium
that can technically be addressed by using git
not git repos mind you, but using git for managing what would otherwise be the "3 copies"
something i wanted to do at some point
plz do 🙏
anyways
batch 1 complete https://github.com/Andy-Python-Programmer/aero/commit/4c68d799295b7aaa17c8e7dcab33c958eaa4b2fe
like 5% is done
💀
but i also along the way removed aero.py
and now you just make
and it just works
tf In file included from /base_dir/sources/libxpm/src/XpmI.h:63, from /base_dir/sources/libxpm/src/CrIFrBuf.c:38: /sysroot/usr/include/strings.h:13:7: error: expected declaration specifiers or '...' before '(' token 13 | char *index (const char *s, int c); | ^~~~~ /sysroot/usr/include/strings.h:13:7: error: expected declaration specifiers or '...' before '(' token 13 | char *index (const char *s, int c); | ^~~~~ /sysroot/usr/include/strings.h:14:7: error: expected declaration specifiers or '...' before '(' token 14 | char *rindex(const char *s, int c); | ^~~~~~ /sysroot/usr/include/strings.h:14:7: error: expected declaration specifiers or '...' before '(' token 14 | char *rindex(const char *s, int c); | ^~~~~~
missing patch
actually are you on current mlibc master
hm
i dont get what its trying to say tho
something is replacing index with a define
and the libc function prototype for it breaks
due to the macro replacement
Told ya so. Missing patch
$(shell cd src && cargo build --package aero_kernel --target .cargo/x86_64-aero_os.json --release) how do you make so when exit code is nonzero makefile doesnt continue to cook
idk why it still continues
actually nvm
i can just do it without the$(shell)
i am learning 🗿
lol
aint that bad yet
@dim goblet how does your llvm even link?
i wanted to update the llvm in Lyre since it was still at 14 so i "took inspiration" from the aero diffs
and it builds but then linking fails with a bunch of undefined reference errors
is there something i am missing?
i think you may be missing ``` -DLLVM_BUILD_LLVM_DYLIB=ON \
rebuilding now
ok no, that fixed nothing
huh i rebuild and it rebuilds fine
@candid mural what are the errors
and also, is it from the jinx branch?
mesa will fail with the new llvm version if thats what your talking about
update mesa, its old too
no, that is not what i am talking about
else i would've said mesa
and i know the mesa is also out of date
i sorted it out btw
i had to readd the host cmake
apparently using image cmake for llvm doesn't work
i see
interesting, freetype doesnt use mmap
"checking for working mmap... no"
13651 │ else case e in #(
13652 │ e) if test "$cross_compiling" = yes
13653 │ then :
13654 │ case "$host_os" in # ((
13655 │ # Guess yes on platforms where we know the result.
13656 │ linux*) ac_cv_func_mmap_fixed_mapped=yes ;;
13657 │ # If we don't know, assume the worst.
13658 │ *) ac_cv_func_mmap_fixed_mapped=no ;;
13659 │ esac``` huh
"If we don't know, assume the worst."
i did build meson instead of autotools version
and it works now
@candid mural might wanna do this for your oses
lyre and vinix
i'll just patch the configure.ac
not even
you can pass it as a variable to ./configure
ac_cv_func_mmap_fixed_mapped=yes
whatever works for you - in my OSes i always prefer autotools and only use alternatives if it's not available for a given package
i see
because
- it works
- i know it better
- i like it
i see
and have both in transition periods (X comes to mind)
and uh, some other projects may just want to provide users with more options
i see
certainly cannot blame them for wanting to be nice
@candid mural how do you do a git source
this is so ugly
jesus
its not offical rust repo thats why
its my fork
their repo probs has release tarballz iirc
make a release tarball yourself
will do after hmwrk
working on aero is addicting and i have to finish my hmwrk before the summer break ends
which is good tho
their release tarball doesnt have the submodules pulled 🤦
this is supposed to be a dist tarball right?
that’s just an automatically generated tarball of the git repository
i see
anways, even after genning tarball
it does some stuff with the submodules
in bootstrap
jwm gives windows vibes
Is this on aero?
yeah
damn, nice
we got gtk back with jinx
lets build webkitgtk again
💪
all the rust ports are very hard unless i am able to upstream it
which is sadge
with the latest release
the one that managarm has is 3 years old
:P

