<farkuhar>
ukky: Revised my script to identify possible FS#15 offenders, by trimming off any trailing slash before testing if file exists. http://ix.io/4FFY
<farkuhar>
Regarding your patch for pkgadd symlink handling, I couldn't reproduce jue's example because json-c 0.10 is too old to compile with modern toolchains. So I used my wildmidi port and omitted defining CMAKE_INSTALL_LIBDIR.
<farkuhar>
When CMAKE_INSTALL_LIBDIR is left undefined on x86_64, it defaults to /usr/lib64, which is a symlink to /usr/lib. That's a reliable way to trigger the FS#15 bug.
<farkuhar>
I'm afraid to report that your patched pkgadd still gives the error "pkgadd: listed file(s) already installed (use -f to ignore and overwrite)"
<ukky>
farkuhar: my patch only fixes 'pkgrm' error (Not a directory). 'pkgadd' error is probably similar to fix. Cannot do much, as I have only console mode and need a reboot soon.
<farkuhar>
ukky: no problem. The 'pkgadd' error is trickier anyway, as you can tell by the kludgy way I tried to get canonical paths from the target filesystem.
maledictium1 has quit [Ping timeout: 246 seconds]
<ukky>
patch for 'pkgrm' relies only on the content of 'db' file. For 'pkgadd', we might get away in similar way by analyzing whether conflicting file is from 'filesystem' port or not. If yes, we might silently skip the warning assuming it _is_ a symlink.
maledictium1 has joined #crux
<farkuhar>
ukky: I find it interesting that you focused your work on db_rm_pkg(), whereas it was db_find_conflicts() that attracted my attention all those months ago.
<farkuhar>
json-c is just one example of a port that decides to change its directory names from one version to the next, but installs a symlink for backward compatibility. Without resolving those symlinks to their canonical paths, you run the risk of flagging a perfectly reasonable footprint change as a conflict.
<ukky>
I have seen your changes and thought you were focused on fixing permissions error. My attention was glued to 'Not a directory' error. It might have been easier to fix.
<ukky>
And C++ is also not my language of choice. I use it, but only basic features. And definitely _not_ a std:: library, and no templates. But my work is mostly related to embedded systems, BIOS and drivers, C++ is not good friend in those areas :-)
<farkuhar>
no, I had no intention of looking at permissions when I first took a crack at FS#15. I was annoyed just as jue was, that pkgadd complains about updating a package when its new footprint puts into /usr/lib the exact same files that it previously put into /usr/lib64.
<ukky>
different people see different things when they look at FS#15. That's why it is so old.
<farkuhar>
or in jue's example, /usr/include/json-c versus /usr/include/json
<ukky>
okay, I have to reboot now. If you do not see me in an hour, then I f*d up my /etc/rc
ukky has quit [Quit: Rebooting...]
<farkuhar>
I don't think C++ is anyone's top choice these days, we just keep using it because a complete rewrite of pkgutils in a new language is even more of a challenge.
ukky has joined #crux
ukky has quit [Quit: Rebooting...]
ukky has joined #crux
ukky has quit [Quit: Rebooting...]
ukky has joined #crux
lennox has quit [Quit: ZNC 1.8.2+deb2+b1 - https://znc.in]
lennox has joined #crux
<SiFuh>
farkuhar: I seem to remember seeing a re-write of it in another distro that is based on CRUX. They did the re-write in shell script.
<SiFuh>
That reminds me. I couldn't get subversion to work with libressl in CRUX ukky
<SiFuh>
farkuhar: one of the benefits with using a shell version, we could whip a dialog version like the CRUX installer on the CD or my Kernel Config Tool.
<farkuhar>
SiFuh: do you remember what version of bash was available at the time that other distro wrote their pkgutils replacement? I can imagine the task being much easier these days, with features like associative arrays and process substitution.
<SiFuh>
Nope, and I am pretty sure it was within the last 2 years I happened upon it.
<farkuhar>
That's too recent to make much difference in the difficulty. Given your involvement with CRUX goes back to 2001, I was imagining an early fork that got lost in the mists of history.
<SiFuh>
No it was a distro that someone had made and its pkgutils was based off of CRUX's but written in sh or bash or soemthing
<farkuhar>
All this talk about pkgutils re-writes reminds me of a project that came to an unexpected Stop despite being written in Go: https://github.com/CamilleScholtz/prt
<SiFuh>
Screw go
<SiFuh>
Wonder if we can write it in brainfuck
lavaball has quit [Remote host closed the connection]
SiFuh has quit [Remote host closed the connection]
<cruxbot>
[opt.git/3.7]: gnuplot: explicit select qt version
<cruxbot>
[contrib.git/3.7]: asciidoctor: adopted, use gem to install
<cruxbot>
[opt.git/3.7]: poppler-qt6: removed, use poppler instead
<cruxbot>
[opt.git/3.7]: poppler-qt5: removed, use poppler instead
<cruxbot>
[opt.git/3.7]: poppler-glib: removed, use poppler instead
<cruxbot>
[opt.git/3.7]: [notify] poppler: update to 23.09.0
<cruxbot>
[opt.git/3.7]: dar: allow linking against gpgme
<farkuhar>
SiFuh: the same emmett1 who dropped into #crux-devel on Tuesday asking for changes to the shadow port?
<SiFuh>
That'll be him
<SiFuh>
That was a really short conversation haha
<ukky>
Using shell language for pkgutils would make them too slow, imho: echo $(wc -l /var/lib/pkg/db): 108970
<SiFuh>
real 0m0.004s
<ukky>
The amount of files to iterate through: 100,000. pkgrm, as an example, compares each line from that file to filter removal items.
lavaball has joined #crux
<remiliascarlet>
SiFuh: farkuhar: We could perhaps rewrite prt-get in Zig. Zig is still in development, but it's perhaps the only language over the past 50 years that has the potential of actually replacing C, and since Crux ships more updated versions of LLVM than Arch does, it's a lot easier to get it compiled from source on Crux, although the devs started shipping static builds of the compiler since 0.11.0.
<farkuhar>
ukky: I think that's the reason emmett1 went with a different database format, each port having its own directory under /var/lib/scratchpkg/db where the installed footprint is recorded. That makes it easier to test for file conflicts when updating a package, since you're not iterating through a 100k-line text file.
<remiliascarlet>
ukky: I hate C++ for its bloat and OOP bullshit, but I recently did some online challenges that involved using C++, and I noticed that as long as the code is written procedural, it's actually a pretty OK language. Most of the footshooting comes from its OOP features.
<farkuhar>
remiliascarlet: prt-get is still pretty maintainable as C++ code, although I did write a drop-in replacement in Perl last year. What's more of a challenge is replacing pkgadd, pkginfo, and pkgrm, since these utilities are lower-level and can benefit from being written in a systems language.
<farkuhar>
some years ago jaeger started planning a pkgutils rewrite, with the intention to do a preliminary prototype in python, and then the final product in C. I have no idea what the current status of that project is, though.
dim44 has quit [Remote host closed the connection]
brian_ has joined #crux
dim44 has joined #crux
brian|lfs has quit [Ping timeout: 246 seconds]
<ukky>
It is very hard to estimate upfront what would be performance cost switching pkgutils from C/C++ to Python or sh/bash.
<ukky>
But comparing the speed of Gentoo's (portage, Pyhon) package update/instal/removal speed, I would say CRUX is at least x10 times faster.
<SiFuh>
x9.78
<SiFuh>
:-P
<ukky>
s/Pyhon/Python
<ukky>
sh/bash implementation should be faster than Python, but needs a lot of optimizations to be practical on a full-blown desktop system with tons of packages installed.
<SiFuh>
Was CRUX ever meant to have tonnes of packages installed?
<ukky>
CRUX does not restrict user to install as many as they want.
<SiFuh>
Seems a bit strange to have a system with stripped down ports only to install a million ports
<ukky>
remiliascarlet: Using some features of C++ in any C project is definitely an improvement.
<ukky>
And when any feature is deployed in the project, every C++ developer should reverse-engineer their own code to see the cost of that specific C++ feature for the target executable
<remiliascarlet>
farkuhar: Oh God, OpenBSD's pkg_* utilities are made in Perl, and they're always painfully slow because of that.
<SiFuh>
Really? It got a boost up in speed a few versions ago
<remiliascarlet>
To me it's still like "pkg_add whatever", thinks for a couple of seconds, installs, thinks for a couple of seconds, and then it's done.
<SiFuh>
pkg_add -u use to take forever
<remiliascarlet>
Compare that to FreeBSD's pkg: "pkg install whatever", installs at the speed of light, done.
<SiFuh>
I think it was current 7.1 when it changed
<remiliascarlet>
I've been using OpenBSD on servers since 7.1, no difference now on 7.3.
<remiliascarlet>
Considering they're located in Toronto (or was it Vancouver, it's somewhere in Canada), traffic has to go all the way across the Pacific. At least, that's my theory on why it's so slow.
<remiliascarlet>
Every time I need to work on any European or American VPS, shit's laggy as fuck.
<remiliascarlet>
But Asian VPS's are usually pretty fast.
<remiliascarlet>
Not saying my servers are located in Europe or America, it's about why it might be so slow to update or install software on OpenBSD.
<SiFuh>
Cool, I have been using since 3.2 :-) There is a difference :-P
<SiFuh>
remiliascarlet: Why don't you just use the Japanese mirrors?
<remiliascarlet>
I don't quite trust CDNs for security reasons.
<SiFuh>
Wako-City
<remiliascarlet>
Wako is located north-west of Tokyo.
<SiFuh>
Saitama. Had a girlfriend from there
<remiliascarlet>
But shouldn't matter, all 3 mirrors are just outside of Tokyo.
<SiFuh>
She was from Kazo City
<remiliascarlet>
Oh, that city is known for Crayon Shinchan.
<SiFuh>
That cartoon thing?
<remiliascarlet>
You can even go to Shinchan's house in real life, just a fun fact.
<remiliascarlet>
Yes.
<SiFuh>
I have only seen it in Thai language
<remiliascarlet>
Kasube City.
<remiliascarlet>
Not sure if you meant that.
<SiFuh>
Kazo City
<remiliascarlet>
Even though Saitama is close to me, I haven't really been there much.
<SiFuh>
加須市
<remiliascarlet>
Ah, that's a different city then.
<remiliascarlet>
Oops, I made a typo. Kasube City → Kasukabe City
<SiFuh>
Sugoi!
<remiliascarlet>
I'm single, it's just not worth getting married in an increasingly feminist world.
<SiFuh>
And over in the US of A they would replace femenist with transgenderist h
<remiliascarlet>
Fortunately, any attempts of introducing transgenderism here has failed, but feminism is definitely a thing here.
<SiFuh>
I'd have liked to have stayed single. I am quite happy alone
<SiFuh>
remiliascarlet: Same here. The West is constantly trying to push it here and it is constantly being banned. I think the latest was a Swiss Watch
<SiFuh>
Owners or sellers of rainbow-coloured timepieces made by the Swiss watchmaker Swatch face three years in prison in Malaysia, the interior ministry has said, as the Muslim-majority country rails against LGBTQ+ symbols it says could “harm morals”.
<farkuhar>
remiliascarlet: OpenBSD's pkg_* utilities are more comprehensive than prt-get. https://github.com/openbsd/src/tree/master/usr.sbin/pkg_add/OpenBSD Considering all the low-level functionality they have to provide, I'm not suprised that you notice the effect of choosing Perl. But on CRUX most of this functionality is outsourced to pkgutils, so any slowdown from rewriting the layer above is less noticeable
<remiliascarlet>
At Comiket last month, I've seen dudes in dresses with all rainbow flag clothing and handbags, and of course they're all westerners, I thought "what the fuck are you doing here if it isn't to invade yet another hobby?".
<SiFuh>
farkuhar: The pkg_check command in OpenBSD is great
<SiFuh>
It is also the longest time consuming command I feel
<remiliascarlet>
SiFuh: Yeah, if you just try to subvert a country that separates men and women from each other as much as possible to transsexualism, you're just asking for trouble.
<remiliascarlet>
On a train in Dubai, I remember they even had separate sections for men and women only, divided by a single line on the floor, and nobody ever crossed that line.
<SiFuh>
One of my favorite features is when you do pkg_add <foo> and it depends on <bar> bar gets installed as a dependency with the 'automatically installed' flag. So when you do pkg_delete <foo> it will remove <foo>. But then when you run pkg_delete -a it will remove any dependencies that were automatically installed for that missing port <foo>
<SiFuh>
remiliascarlet: We have that here in certain places. For example there are two sets of sheltered seats seperated from each other in Kota Bharu in public. A man cannot sit next to his wife. All women sit on one side and all men sit on the other side.
<remiliascarlet>
I have that underbar (_), because I need to reach it far away from all the alphanumeric keys while holding shift just to reach that key.
<SiFuh>
Hahahaha
<SiFuh>
Just alias it then ;-)
<remiliascarlet>
The question is, with what key?
<SiFuh>
edit you ~/.profile alias pkgadd="pkg_add " Make sure you keep the trailing space after.
<remiliascarlet>
I already remapped the Eisu key to act like an Escape key in Vim.
<remiliascarlet>
Oh, that's what you mean.
<remiliascarlet>
I thought you meant remapping.
<SiFuh>
I hate going from | to g I end up with | G so I did an alias Grep="grep "
<remiliascarlet>
I aliased `g=git`, because I use Git so much.
<remiliascarlet>
And .gitconfig lets you set aliases too, so "git add ." becomes "g aa", "git status" becomes "g s", and so on.
<SiFuh>
remiliascarlet: rarely need to type that. I have a roughly written script where it does everything automated basically
<remiliascarlet>
I just prefer to interact with Git from the command line, since I'm already coding with Vim anyway.
<remiliascarlet>
And compiling also happens in the command line.
<remiliascarlet>
I've been playing with the idea of using Lynx for all my browsing, but unless a website is made with XHTML and CSS that doesn't depend on Javascript (aka, works even without it), and doesn't rely on Clownflare, no way you can reasonably browse with it.
<SiFuh>
That reminds me, I found an old USB flash drive in a flooded out Morris
<remiliascarlet>
And I say reasonably, because any HTML5 website is 4 pages of just the navbar, 8 pages of footer, and only 1 or 2 pages inbetween is the actual content you came for.
<cruxbot>
[contrib.git/3.7]: gegl: adjusted dependencies for our poppler change
crash_ has quit [Ping timeout: 250 seconds]
tek_ has quit [Ping timeout: 255 seconds]
tek_ has joined #crux
stoffepojken_ has quit [Quit: ZNC 1.8.2 - https://znc.in]
stoffepojken has joined #crux
tek_ has quit [Ping timeout: 255 seconds]
tek_ has joined #crux
<farkuhar>
jue: my build of poppler failed to generate JPXStream.h in the footprint, is that expected when openjpeg2 is present? http://sprunge.us/oajbc3
stoffepojken has quit [Client Quit]
stoffepojken has joined #crux
<jue>
no, not expected, I'll fix the footprint tomorrow
<farkuhar>
jue cheers
brian_ is now known as brian|lfs
<cruxbot>
[contrib.git/3.7]: inkscape: adjusted dependencies for our poppler change
stoffepojken has quit [Quit: ZNC 1.8.2 - https://znc.in]