• 2 Posts
  • 109 Comments
Joined 11 months ago
cake
Cake day: July 14th, 2023

help-circle
  • A solution I’ve used for the glibc problem, is to build on an older distribution in a chroot. There is also this project which might be of use to pick a specific version of glibc. The project README also explain how to do it manually.

    As for distribution, I prefer something like makeself.sh, that installs to either ~/.local/ or if it is to be installed system-wide to /usr/local or /opt. The concept is just a small shell script appended with a compressed archive, it is easy to modify and even create by hand using standard tools like cat. This is a method widely used by native Linux games.








  • debian/rules:

    dh_auto_configure --  -DWITH_TESTS=$(WITH_TESTS) \
    	                      -DWITH_GUI_TESTS=$(WITH_TESTS) \
    	                      -DWITH_XC_UPDATECHECK=OFF \
    	                      -DWITH_XC_ALL=OFF
    

    CMakeLists.txt:

    set(WITH_XC_ALL OFF CACHE BOOL "Build in all available plugins")
    
    option(WITH_XC_AUTOTYPE "Include Auto-Type." ON)
    option(WITH_XC_NETWORKING "Include networking code (e.g. for downloading website icons)." OFF)
    option(WITH_XC_BROWSER "Include browser integration with keepassxc-browser." OFF)
    option(WITH_XC_BROWSER_PASSKEYS "Passkeys support for browser integration." OFF)
    option(WITH_XC_YUBIKEY "Include YubiKey support." OFF)
    option(WITH_XC_SSHAGENT "Include SSH agent support." OFF)
    option(WITH_XC_KEESHARE "Sharing integration with KeeShare" OFF)
    option(WITH_XC_UPDATECHECK "Include automatic update checks; disable for controlled distributions" ON)
    if(UNIX AND NOT APPLE)
        option(WITH_XC_FDOSECRETS "Implement freedesktop.org Secret Storage Spec server side API." OFF)
    endif()
    option(WITH_XC_DOCS "Enable building of documentation" ON)
    
    set(WITH_XC_X11 ON CACHE BOOL "Enable building with X11 deps")
    
    # stuff inbetween cut out
    
    if(WITH_XC_ALL)
        # Enable all options (except update check and docs)
        set(WITH_XC_AUTOTYPE ON)
        set(WITH_XC_NETWORKING ON)
        set(WITH_XC_BROWSER ON)
        set(WITH_XC_BROWSER_PASSKEYS ON)
        set(WITH_XC_YUBIKEY ON)
        set(WITH_XC_SSHAGENT ON)
        set(WITH_XC_KEESHARE ON)
        if(UNIX AND NOT APPLE)
            set(WITH_XC_FDOSECRETS ON)
        endif()
    endif()
    

    I’m no CMake expert, but it looks like to me, from the first line of the above snippet, that the default in the upstream build script is WITH_XC_ALL=OFF.



  • WARNING. Everything other than the last paragraph is kind of rude and opinionated, so skip to the bottom if you only want practical advice and not a philosophical rant.

    First of all Free Software don’t need paid developers. We scruffy hackers create software because it’s fun. I have a strong suspicion that the commercialization of Free Software via the businessfriendly clothing “Open Source” is actually creating a lot of shitty software or at least a lot of good software that’ll be obsoleted to keep business going. Capitalization of Free Software doesn’t have an incentive to create good finished software, quite the opposite. The best open source software from commercial entities is in my opinion those that were open sourced when a product was no longer profitable as a proprietary business. As examples I love the ID software game engines and Blender. Others seem happy that Sun dumped the source code of Star Office, which then became OpenOffice and LibreOffice, but then again companies like Collabora are trying to turn it into a shitty webification instead of implementing real collaborative features into the software like what AbiWord has.

    …and back in the real world where you need to buy food. Open Source consultancy, implementation of custom out-of-tree features, support, courses and training, EOL maintainance or products that leaverage Open Source software is my best answer. See Free Software as a commons we all contribute to, so that we can do things with it and built things from it. You should not expect people to pay for Free Software, but you can sell things that take advantage of Free Software as a resource.


  • As @Caboose12000@lemmy.world already said, I’d recommend drop.lol (can be selfhosted). Filetransfers are direct between peers (unless you’re behind some hardcore NAS where UDP hole-punching via STUN is not possible).

    I mean how I transfer a file depends on the situation. If it’s to someone on XMPP I’d just establish a direct transfer there. Sometimes I share a directory over HTTP, FTP, SFTP and so on. The easiest way for most people, because it only requires a WebRTC capable browser, is with one of the many peer to peer filesharing platforms like drop.lol.









  • The C compiler or third party libraries can provide support for parallel execution and SIMD. That article is just used by people in an attempt to argue that C’s strength in being a good low level abstraction is false, which it isn’t. C is the best portable abstraction over a generic CPU that I know of. If you start adding parallel features and SIMD like the article suggest, you’ll end up with something that’s not a portable low level abstraction. To be portable those featues would have to be implemented in slow fake variants for platforms that doesn’t support it. We can always argue where to draw the line, but I think C nailed it pretty good on what to include in the language and what to leave up to extensions and libaries.

    C is not a perfect abstraction, because it is portable. Non portable features for specific architectures are accessed through libraries or compiler extensions and many compilers even include memory safe features. It’s a big advantage though to know Assembly for your target platform when developing in C, such that you become aware fx. that x86 actually detects integer overflow and sets an overflow flag, even though that’s not directly accessible from C. Compilers often implement extensions for such features, but you can yourself extend C with small functions for architecture specific features using Assembly.