ungoogled-software / ungoogled-chromium

Google Chromium, sans integration with Google
BSD 3-Clause "New" or "Revised" License
20.21k stars 818 forks source link

Void Linux build #375

Closed ThatNerdyPikachu closed 1 year ago

ThatNerdyPikachu commented 6 years ago

No idea if this is possible or not, but would a Void build be possible?

Eloston commented 6 years ago

What is a Void build? I've never heard of it before.

arutr commented 6 years ago

Void Linux is a distro with its own packaging system.

Eloston commented 6 years ago

I see. This should be possible, but I would wait until #367 has been finished before attempting it. Regardless, I'll accept a PR anytime.

Eloston commented 6 years ago

In the meantime, you should be able to use linux_portable to make a build right now (or use the Portable Linux binary on Void Linux).

ThatNerdyPikachu commented 6 years ago

@Eloston If I'm correct, this is the right binary? https://ungoogled-software.github.io/ungoogled-chromium-binaries/releases/linux_static/64bit/55.0.2883.75-1

Eloston commented 6 years ago

@ThatNerdyPikachu I just updated it ;)

https://ungoogled-software.github.io/ungoogled-chromium-binaries/releases/linux_portable/64bit/65.0.3325.181-1

ThatNerdyPikachu commented 6 years ago

@Eloston Alright, thanks! I'll test and report back to you when I get the chance!

ThatNerdyPikachu commented 6 years ago

@Eloston Erm, sorry for the very very late response... Nope, that didn't work.

Eloston commented 6 years ago

Portable Linux version 66 is already out. What exactly isn't working?

Eloston commented 6 years ago

@travankor Thanks for confirming that it works with glibc. Do regular Chromium or Chrome work with musl?

faulesocke commented 6 years ago

Some precompiled binary would not be accepted as an official void package. You guys have to figure, how to compile your own binary on the various platforms. I would recommend having a look at the chromium package's template and modify that to package this browser. That's what I did when I packaged Iridium for Void. However, first ask in IRC if they even want new browser packages, otherwise you're wasting your time.

Since I'm not using chromium-derivatives anymore since Firefox 57, I'm not too motivated to put too much time into this (I was asked if I could help a little bit here)

Eloston commented 6 years ago

@faulesocke I wasn't too clear earlier, but I'm diverging a bit from the original topic at hand.

The purpose of my question is to learn more about musl and where compatibility is breaking; if it's in ungoogled-chromium, then it's a bug with the Portable Linux build, since Void isn't the only system that uses musl (and users may not want to wait for a package to come around for their distro). Otherwise, if Chromium and Chrome are also broken, then we would have to include those patches to work with musl.

However, first ask in IRC if they even want new browser packages, otherwise you're wasting your time.

If it's straight-forward for users to install package files manually, packages for Void can be added to the contributor binaries page (if someone submits them). If Void wants to have it included officially, then this can be dropped.

In the meantime or as an alternative, a derivative of the Portable Linux config for musl could be added.

Since I'm not using chromium-derivatives anymore since Firefox 57, I'm not too motivated to put too much time into this (I was asked if I could help a little bit here)

No problem. For platforms I don't use, I generally leave it to someone else to do the actual work of implementing support.

Unrelated to the main topic, but I'm genuinely interested to see how Firefox Quantum progresses down the road. I could see myself jumping ship if Chromium becomes too much of a burden for me to keep up.

intika commented 5 years ago

@Eloston been looking after a source/rolling distro lately and ended up with void/gentoo choice and void seems really to be damn interesting... i will be probably installing that on one of my main machines soon i will see if i can help then, it does not seems to be in a hurry issue here so...

off-topic : Now about the firefox i have to be honest i switched back lool still using uc tho but firefox v62, v63 just fly in term of speed etc... still need some customization tho for privacy (https://github.com/Eloston/ungoogled-chromium/issues/560#issuecomment-431713666) and also it have auto-update forced (can be disabled...)... but other than that they have done a damn pretty good work

By the way not all void linux are using musl its optional

dylanaraps commented 5 years ago

Chromium requires a large number of patches to build on Alpine Linux (which solely uses musl). Most of these are likely required to get an ungoogled-chromium build working on a musl system.

List of patches as well as build setup (inside APKBUILD): https://git.alpinelinux.org/aports/tree/community/chromium

I'd love to see some movement here as Alpine doesn't ship with any privacy conscious browser full stop. Firefox is built with all telemetry enabled and not to mention it's stuck on an outdated non-LTS release.

https://git.alpinelinux.org/aports/tree/testing/firefox

(Firefox also hard-depends on dbus on Alpine so I can't use it. Though this is an entirely different issue)

emacsomancer commented 5 years ago

@Smooey IceCat is available on Void, so your 2nd paragraph is unwarranted. You can install the Guix package manager on top of Void, and at least at one point ungoogled-chromium was available via Guix (I'm not sure what the current status is).

ghost commented 5 years ago

@Smooey IceCat is available on Void, so your 2nd paragraph is unwarranted. You can install the Guix package manager on top of Void, and at least at one point ungoogled-chromium was available via Guix (I'm not sure what the current status is).

Im sorry for asking but, how do you install guix on top of void?

emacsomancer commented 5 years ago

@irritating This part of the manual describe how to do this: https://www.gnu.org/software/guix/manual/en/guix.html#Binary-Installation . It's very similar to installing guix on top of other distros (modulo the systemd bits).

Cubified commented 4 years ago

Sorry for digging up an old thread, but I just finished compiling ungoogled-chromium on my Alpine Linux (musl/busybox) system, meaning it should work on Void musl as well -- is a musl binary still something this project wants/needs? If so, I can package it.

Also, I don't think submitting a PR with my changes would be desirable currently, as there were a lot of small and semi-messy tweaks necessary to compile due to dependency on nonstandard GNU/glibc behavior. However, I can absolutely clean up and share my changes if anyone would like.

Thanks!

Eloston commented 4 years ago

@Cubified I wouldn't mind adding a new platform repo for Alphine or other musl-based systems. Musl change are platform-specific so they don't belong in this repo.

Cubified commented 4 years ago

Thanks for the quick response -- I'll look into cleaning up my changes. In the meantime, I just submitted a PR in the binaries repo with a packaged musl binary.

dm17 commented 4 years ago

What did you guys end up doing for ungoogled-chromium on Void? Just building it yourself? Void's chromium pkg doesn't have VAAPI enabled, so I might as well build ungoogled-chromium with it, I guess.

Eloston commented 4 years ago

@dm17 There's the musl branch on ungoogled-chromium-portablelinux now, but no one has published binaries yet: https://github.com/ungoogled-software/ungoogled-chromium-portablelinux/tree/musl. Portable Linux doesn't have VA-API support built-in either; you'll need to get the patches to enable that.

dm17 commented 4 years ago

@dm17 There's the musl branch on ungoogled-chromium-portablelinux now, but no one has published binaries yet: https://github.com/ungoogled-software/ungoogled-chromium-portablelinux/tree/musl. Portable Linux doesn't have VA-API support built-in either; you'll need to get the patches to enable that.

OK, I'm not using musl with Void anyway. Sounds like: 1) clone ungoogled-chromium 2) add VAAPI patch 3) figure out how to package on void (or just launch it from source dir).

Eloston commented 4 years ago
  1. Follow instructions to clone ungoogled-chromium-portablelinux on https://github.com/ungoogled-software/ungoogled-chromium-portablelinux
  2. Copy patches to somewhere in patches/ directory, and list them in patches/series
  3. Continue following instructions to build and produce a package. The package's just a tar file, and it's portable.
midirhee12 commented 4 years ago

Looks like I'll have to compile for musl then. Oof.

If I do, I'll submit the binary.

dm17 commented 4 years ago

Looks like I'll have to compile for musl then. Oof.

If I do, I'll submit the binary.

If you use the musl version - I use Void without musl.

ThatNerdyPikachu commented 4 years ago

I use Void without musl.

As do I.

Cubified commented 4 years ago

@cvoges12 If you do end up compiling for musl, heads up that the version I’ve prepared patches for is a bit out of date (Chromium 80 vs 84), my fault for not keeping it updated – it will compile and be fully functional though (+ hopefully I’ll have some time to work on updating the patches soon)

midirhee12 commented 4 years ago

@Cubified Do you want me to hold off until then?

Cubified commented 4 years ago

@cvoges12 Ehh no, since I’m not sure how long it will take to update the patches and make sure they work properly

dm17 commented 4 years ago

@ThatNerdyPikachu I'm ready to attempt this so long as we can include VAAPI support. The Void devs don't want it in the official repository; they recommend that we use our own repo (or similar) for the ungoogled-chromium builds.

dm17 commented 3 years ago

@Eloston this is a Void pkg template, hopefully others here can help me get it working.

@ThatNerdyPikachu OK this is how far I've gotten - anyone is welcome to help the rest of the way. I started modeling it from the chromium package. Current issue is fixing the wrksrc directory considering the two different chromium pkg versions, which I'm unsure of why that's done like that on the other distros. I'm using this guide to help: https://github.com/void-linux/void-packages#quick-start

Would love to get this working :)

pkgname=ungoogled-chromium
version=87.0.4280.66
_pkgname=$(echo $pkgname | cut -d\- -f1-2)
_pkgver=$(echo $version | cut -d\. -f1-4)
# See http://www.chromium.org/developers/calendar for the latest version
_launcher_ver=6
_gcc_patchset=9
_uc_ver=87.0.4280.67-1
_uc_usr=Eloston
_uc_sum='158d1210be8d0f72ec09724a22907b5a737c3a25b19632d2eb93ebdfbe3f1ac9'
_uc_url="https://github.com/$_uc_usr/ungoogled-chromium/archive/$_uc_ver.tar.gz>$_pkgname-$_uc_ver.tar.gz"
revision=1
archs="x86_64*"
short_desc="All the good without the bad"
maintainer="Wayne <waxandwayner@gmail.com>"
license="BSD-3-Clause"
homepage="https://ungoogled-software.github.io"
distfiles="https://commondatastorage.googleapis.com/chromium-browser-official/chromium-$_pkgver.tar.xz $_uc_url https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver.tar.gz>chromium-launcher-$_launcher_ver.tar.gz"
checksum="29a8e4ea82edec2fdcf34ece68323bec7ab90f3d5669e6b77f58cff9c278f741 $_uc_sum 04917e3cd4307d8e31bfb0027a5dce6d086edb10ff8a716024fbb8bb0c7dccf1"

nocross=yes

lib32disabled=yes
nodebug=yes
nopie=yes  # contains tools that are not PIE, enables PIE itself

build_options="clang js_optimize vaapi pulseaudio sndio"
desc_option_clang="Use clang to build"
desc_option_js_optimize="Optimize the JS used for Chromium's UI"
desc_option_vaapi="Enable support for VA-API"
desc_option_pulseaudio="Enable support for PulseAudio"
desc_option_sndio="Enable support for sndio"

hostmakedepends="$(vopt_if clang clang) python pkgconf perl gperf bison ninja nodejs hwids
 libatomic-devel libevent-devel libglib-devel $(vopt_if js_optimize openjdk)"
makedepends="libpng-devel gtk+-devel gtk+3-devel nss-devel pciutils-devel
 libXi-devel libgcrypt-devel libgnome-keyring-devel cups-devel elfutils-devel
 libXcomposite-devel speech-dispatcher-devel libXrandr-devel mit-krb5-devel
 libXScrnSaver-devel alsa-lib-devel snappy-devel libdrm-devel
 libxml2-devel libxslt-devel $(vopt_if pulseaudio pulseaudio-devel) libexif-devel
 libXcursor-devel libflac-devel speex-devel libmtp-devel libwebp-devel
 libjpeg-turbo-devel libevent-devel json-c-devel harfbuzz-devel
 minizip-devel jsoncpp-devel zlib-devel libcap-devel libXdamage-devel
 re2-devel fontconfig-devel freetype-devel opus-devel
 ffmpeg-devel libva-devel python-setuptools xcb-proto
 $(vopt_if sndio sndio-devel)"
depends="libexif hwids desktop-file-utils hicolor-icon-theme xdg-utils"

case "$XBPS_TARGET_MACHINE" in
    ppc64*-musl) makedepends+=" libucontext-devel" ;;
esac

build_options_default="clang js_optimize vaapi pulseaudio"

post_patch() {
    if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
        for f in "${FILESDIR}"/musl-patches/*.patch; do
            echo "Applying $f"
            patch -Np0 -i "$f"
        done
    fi

    case "${XBPS_TARGET_MACHINE}" in
    i686*)
        for f in "${FILESDIR}"/i686-patches/*.patch; do
            echo "Applying $f"
            patch -Np0 -i "$f"
        done
        ;;
    esac

    # Use the file at run time instead of effectively compiling it in
    sed 's|//third_party/usb_ids/usb.ids|/usr/share/hwdata/usb.ids|g' \
        -i services/device/public/cpp/usb/BUILD.gn

    if [ -z "$build_option_clang" ]; then
        # Work around bug in blink in which GCC 6 optimizes away null pointer checks
        # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=833524
        # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68853#c2
        sed -i '/config("compiler")/ a cflags_cc = [ "-fno-delete-null-pointer-checks" ]' \
            build/config/linux/BUILD.gn
    fi

    # prevent annoying errors when regenerating gni
    vsed -i 's,^update_readme$,#update_readme,' \
        third_party/libvpx/generate_gni.sh
}
do_configure() {
    local system="" conf=()
    export -n CFLAGS CXXFLAGS LDFLAGS

    if [ "$build_option_clang" ]; then
        export CC=clang
        export CXX=clang++
    fi

    export LDFLAGS="-pthread"

    # compile gn early, so it can be used to generate gni stuff
    AR="ar" CC=$CC_FOR_BUILD CXX=$CXX_FOR_BUILD LD=$CXX_FOR_BUILD \
    python2 tools/gn/bootstrap/bootstrap.py --skip-generate-buildfiles

    # we need to generate ppc64 stuff for libvpx as it's not shipped
    # this has to be done before unbundling, but after gn is built
    # comment out if we switch back to system libvpx again later
    case "$XBPS_TARGET_MACHINE" in
        ppc64*)
            pushd third_party/libvpx
            mkdir -p source/config/linux/ppc64
            # need PATH to find gn
            PATH="${wrksrc}/out/Release:$PATH" ./generate_gni.sh || \
                msg_error "failed to generate libvpx gni"
            popd
            ;;
    esac

    # Use system-provided libraries.
    # TODO: use_system_hunspell (upstream changes needed).
    # TODO: use_system_libsrtp.
    # TODO: use_system_libusb (http://crbug.com/266149).
    # TODO: use_system_ssl (http://crbug.com/58087).
    # TODO: use_system_sqlite (http://crbug.com/22208).
    # TODO: use_system_icu (segfaults)
    # XXX xtraeme: broken currently
    # use_system_protobuf
    # use_system_v8=1
    # use_system_zlib=1
    # bzip2 jsoncpp minizip xdg_utils speex
    system="
        ffmpeg
        flac
        fontconfig
        freetype
        harfbuzz-ng
        libdrm
        libevent
        libjpeg
        libpng
        libwebp
        libxml
        libxslt
        opus
        re2
        snappy
    "

    # remove build scripts for system provided dependencies - basically does the
    # same as the bundeled script to remove bundeled libs, but this way we don't
    # have to list the remaining libs
    for LIB in ${system} libjpeg_turbo; do
        find -type f -path "*third_party/$LIB/*" \
            \! -path "*third_party/$LIB/chromium/*" \
            \! -path "*third_party/$LIB/google/*" \
            \! -path './base/third_party/icu/*' \
            \! -path './third_party/pdfium/third_party/freetype/include/pstables.h' \
            \! -path './third_party/harfbuzz-ng/utils/hb_scoped.h' \
            \! -regex '.*\.\(gn\|gni\|isolate\|py\)' \
            -delete
    done

    # switch to system provided dependencies
    python2 build/linux/unbundle/replace_gn_files.py --system-libraries ${system}

    python2 third_party/libaddressinput/chromium/tools/update-strings.py

    # Google API keys (see http://www.chromium.org/developers/how-tos/api-keys)
    # Note: These are for Void Linux use ONLY.
    conf+=(
        'google_api_key="AIzaSyA9gWazKaHaNIPPg2hrMj6_ZSG8AFmq738"'
        'google_default_client_id="126659149423-hoo6ickbk3p1u2qjsdsp0ddciurfvb4t.apps.googleusercontent.com"'
        'google_default_client_secret="_ozIx2D-DKm_se_2NPwV4l5b"'
    )

    conf+=(
        'enable_nacl=false'
        'enable_nacl_nonsfi=false'
        "is_clang=$(vopt_if clang true false)"
        'is_debug=false'
        'clang_use_chrome_plugins=false'
        'custom_toolchain="//build/toolchain/linux/unbundle:default"'
        'host_toolchain="//build/toolchain/linux/unbundle:default"'
        'blink_symbol_level=0'
        'symbol_level=0'
        'icu_use_data_file=true'
        'use_allocator="none"'
        'use_allocator_shim=false'
        'use_cups=true'
        'use_sysroot=false'
        'use_system_harfbuzz=true'
        'enable_widevine=true'
        'enable_hangout_services_extension=true'
        'is_desktop_linux=true'
    )

    conf+=(
        "use_vaapi=$(vopt_if vaapi true false)"
    )

    conf+=(
        "closure_compile=$(vopt_if js_optimize true false)"
    )

    conf+=(
        "use_pulseaudio=$(vopt_if pulseaudio true false)"
    )

    # Use explicit library dependencies instead of dlopen.
    # GN only has "link_pulseaudio", the other options used before are not available atm
    # linux_link_cups=true
    # linux_link_gsettings=true
    # linux_link_libpci=true
    # linux_link_libspeechd=true
    # libspeechd_h_prefix=\"speech-dispatcher/\""
    conf+=( "link_pulseaudio=$(vopt_if pulseaudio true false)" )

    conf+=(
        "use_sndio=$(vopt_if sndio true false)"
    )

    # Never use bundled binutils/gold binary.
    conf+=(
        "binutils_path=\"${XBPS_CROSS_BASE}/usr/bin\""
        "gold_path=\"${XBPS_CROSS_BASE}/usr/bin/ld.gold\""
        'linux_use_bundled_binutils=false'
        'use_custom_libcxx=false'
        'use_lld=false'
    )

    # XXX: gold broken with musl and i686
    case "${XBPS_TARGET_MACHINE}" in
    *-musl) conf+=( 'use_gold=false' ) ;;
    i686*) conf+=( 'use_gold=false' ) ;;
    *) conf+=( 'use_gold=true' ) ;;
    esac

    # Always support proprietary codecs.
    # Enable H.264 support in bundled ffmpeg.
    conf+=(
        'proprietary_codecs=true'
        'ffmpeg_branding="Chrome"'
    )

    # Make sure that -Werror doesn't get added to CFLAGS by the build system.
    # Depending on GCC version the warnings are different and we don't want
    # the build to fail because of that.
    conf+=(
        'treat_warnings_as_errors=false'
        'fatal_linker_warnings=false'
    )

    # Save space by removing DLOG and DCHECK messages (about 6% reduction).
    # conf+=" logging_like_official_build=true"
    conf+=( fieldtrial_testing_like_official_build=true )

    case "${XBPS_TARGET_MACHINE}" in
        x86_64*) conf+=( 'target_cpu="x64"' ) ;;
        i686*) conf+=( 'target_cpu="x86"' ) ;;
        arm*) conf+=( 'target_cpu="arm"' ) ;;
        aarch64*) conf+=( 'target_cpu="arm64"' ) ;;
        ppc64*) conf+=( 'target_cpu="ppc64"' ) ;;
    esac

    out/Release/gn gen out/Release --args="${conf[*]}"
}
do_build() {
    if [ "$build_option_clang" ]; then
        export CC=clang
        export CXX=clang++
    fi

    ninja -C out/Release ${makejobs} chrome chromedriver mksnapshot
}
do_install() {
    vinstall out/Release/chrome 755 usr/lib/${pkgname} ${pkgname}
    vinstall out/Release/chromedriver 755 usr/lib/${pkgname} chromedriver
    vinstall out/Release/libEGL.so 755 usr/lib/${pkgname} libEGL.so
    vinstall out/Release/libGLESv2.so 755 usr/lib/${pkgname} libGLESv2.so

    vcopy "out/Release/*.bin" usr/lib/chromium
    vcopy "out/Release/*.pak" usr/lib/chromium

    vmkdir usr/lib/chromium/locales
    vcopy "out/Release/locales/*.pak" usr/lib/chromium/locales

    vmkdir usr/lib/chromium/swiftshader
    vcopy "out/Release/swiftshader/*.so" usr/lib/chromium/swiftshader

    vinstall ${FILESDIR}/chromium.desktop 644 usr/share/applications

    vinstall out/Release/icudtl.dat 0644 usr/lib/chromium

    for size in 24 48 64 128 256; do
        vinstall "chrome/app/theme/chromium/product_logo_${size}.png" \
            644 \
            usr/share/icons/hicolor/${size}x${size}/apps chromium.png
    done
    for size in 16 32; do
        vinstall "chrome/app/theme/default_100_percent/chromium/product_logo_${size}.png" \
            644 \
            usr/share/icons/hicolor/${size}x${size}/apps chromium.png
    done

    vbin ${FILESDIR}/chromium.sh chromium
    vlicense LICENSE
    ln -s /usr/lib/chromium/chromedriver ${DESTDIR}/usr/bin/chromedriver
}

Feel free to include whatever patches you think are best. These were left out: chromium-skia-harmony chromium-drirc-disable-10bpc-color-configs This should be VAAPI enabled by default. I don't need musl and I just run x86_64.

dm17 commented 3 years ago

Progress has been made! https://github.com/Logarithmus/void-packages/blob/ungoogled-chromium/srcpkgs/ungoogled-chromium/template

[30/192] CXX src/base/files/file_posix.o
[31/192] CXX src/base/json/json_parser.o
../../../tools/gn/src/base/json/json_parser.cc: In member function 'void base::internal::JSONParser::EatWhitespaceAndComments()':
../../../tools/gn/src/base/json/json_parser.cc:252:9: warning: this statement may fall through [-Wimplicit-fallthrough=]
  252 |         if (!(c == '\n' && index_ > 0 && input_[index_ - 1] == '\r')) {
      |         ^~
../../../tools/gn/src/base/json/json_parser.cc:256:7: note: here
  256 |       case ' ':
      |       ^~~~
[32/192] CXX src/base/files/file_util_posix.o
[33/192] CXX src/gn/action_values.o
In file included from ../../../tools/gn/src/gn/action_values.cc:5:
../../../tools/gn/src/gn/action_values.h: In member function 'void ActionValues::set_depfile(const SubstitutionPattern&)':
../../../tools/gn/src/gn/action_values.h:46:69: warning: implicitly-declared 'SubstitutionPattern& SubstitutionPattern::operator=(const SubstitutionPattern&)' is deprecated [-Wdeprecated-copy]
   46 |   void set_depfile(const SubstitutionPattern& depfile) { depfile_
..............................

many pages of logs...

In file included from ../../../tools/gn/src/gn/scope.h:17,
                 from ../../../tools/gn/src/gn/args.h:14,
                 from ../../../tools/gn/src/gn/xcode_writer.cc:23:
../../../tools/gn/src/gn/err.h:58:3: note: because 'Err' has user-provided 'Err::Err(const Err&)'
   58 |   Err(const Err& other);
      |   ^~~
[191/192] AR gn_lib.a
[192/192] LINK gn
ERROR at //chrome/browser/safe_browsing/BUILD.gn:80:5: Undefined identifier.
    sources += [
    ^------
See //chrome/browser/BUILD.gn:1916:5: which caused the file to be included.
    "//chrome/browser/safe_browsing",
    ^-------------------------------
=> ERROR: ungoogled-chromium-87.0.4280.66_1: do_configure: 'out/Release/gn gen out/Release --args="${conf[*]}"' exited with 1
=> ERROR:   in do_configure() at srcpkgs/ungoogled-chromium/template:273

Any ideas @Eloston ? Thanks!

ghost commented 3 years ago

So glad to see this!

Eloston commented 3 years ago

@dm17 Seems a bit counter-intuitive to include Google API keys, don't you think? :)

More importantly, I'm not entirely sure why you'd be getting a syntax error in that GN file. Are you applying additional patches on top of the ones from ungoogled-chromium? Could they be conflicting?

Logarithmus commented 3 years ago

@Eloston yes, I think Void has some patches for GN. Honestly I don't know their purpose. Unfortunately, no spare time to tinker with that right now.

dm17 commented 3 years ago

@pbui @q66 mind if I ask for some clues, since you guys work on Void's chromium package? :) Thanks.

ghost commented 3 years ago

@dm17 Forgive me if I misunderstand. Does your template build UG from scratch?

Is there any reason for the void package template to not just download the prebuilt ungoogled chromium binary and add it to the the user's system?

Logarithmus commented 3 years ago

Are there x86_64-musl and i686 binaries? The disadvantage of using binaries is inability to use custom build options, e. g. using system provided shared libraries instead of bundled ones.

9 декабря 2020 г. 20:14:59 GMT+03:00, David Frick notifications@github.com пишет:

@dm17 Forgive me if I misunderstand. Does your template build UG from scratch?

Is there any reason for the void package template to not just download the prebuilt ungoogled chromium binary and add it to the the user's system?

dm17 commented 3 years ago

@dm17 Forgive me if I misunderstand. Does your template build UG from scratch?

Is there any reason for the void package template to not just download the prebuilt ungoogled chromium binary and add it to the the user's system?

I trust we can figure this out how to build it for Void :)

ghost commented 3 years ago

Per https://ungoogled-software.github.io/ungoogled-chromium-binaries/ (I think this is the correct link), there appear to be x86_64musl builtds, but I am not seeing i686 binaries. Good point on the custom build options, I did not think about that. My concern is that is seems most of the void maintainers do not want to package UG since it would take up quite a bit of resources on the servers to build. Is there some way Void can allow a build script as a package template to build it?

dm17 commented 3 years ago

Per https://ungoogled-software.github.io/ungoogled-chromium-binaries/ (I think this is the correct link), there appear to be x86_64musl builtds, but I am not seeing i686 binaries. Good point on the custom build options, I did not think about that. My concern is that is seems most of the void maintainers do not want to package UG since it would take up quite a bit of resources on the servers to build. Is there some way Void can allow a build script as a package template to build it?

That has been rehashed a lot... Let's leave that discussion separate: it is OK that Void doesn't want to build two separate chromium pkgs. @Logarithmus & I are cool building it ourselves (or one of us building it and sharing it in a private repository). Who knows, maybe the Void devs will get tired of being the product and make their 1 chromium package the non-Google version :)

I'll only be using the x86-64 glibc version, but I don't mind sparing some cycles for someone who wants another architecture pkg.

q66 commented 3 years ago

we will not be accepting any foreign binaries in Void as policy

q66 commented 3 years ago

also, if you don't want to be the product, use firefox

there is no such thing as "ungoogled" chromium, regardless of what the label says

ghost commented 3 years ago

@dm17, I understand now. That is super cool. Although packaging this is way beyond me. I stand behind you all the way as a cheerleader. I will definitely use this if it succeeds!

ghost commented 3 years ago

@q66, So I have been talking with the maker of grapheneOS (very smart, security minded guy who does a lot of cybersecurity stuff) and his argument, which I found super compelling, was that the only secure browsers for desktop is chromium based. He made compelling points that firefox is not as secure as people suggest. In fact, talking with him is the reason I will be building this if possible on my desktop. I understand UG might be some security patches behind upstream to fix exploits, but it has a much better sand-boxing situation than Firefox. I have come to the conclusion after taking with him and others that ungoogled chromium, bromite, and vanadium are probably the only relatively secure and privacy respecting browsers. (all chromium based).

That being said, I understand why the void maintainers do not want to package UG. I remember building it on Arch Linux and I am pretty sure it took like a day or two. It was pretty hefty.

I feel like a good middle group, if possible, is to have scripts that can build programs for users automatically on their local desktop. That is why I like this issue and @dm17 's work with this as it fits that middle group super nicely.

dm17 commented 3 years ago

also, if you don't want to be the product, use firefox

there is no such thing as "ungoogled" chromium, regardless of what the label says

This is a common trend in political discussions where people just state things over and over and the deeper you dig into their references the more you just find the same claim. Firefox = Good, Chrome = bad, get it? However, even privacytools.io (PTIO) says you need to mod Firefox out of the box in order get privacy. After looking into the idiosyncrasies, I believe that ungoogled-chromium gives us better privacy than Firefox+ PTIO mods (to make a very long story shorter than I'd like). I'm not trying to force any more work from you Void devs - just trying to get a little more help in building this package... Would you be willing to give us some pointers so we can build the package ourselves (please with sugar on top) - since you're an expert Void package builder?

@q66 any idea what's wrong with this? https://github.com/Logarithmus/void-packages/blob/ungoogled-chromium/srcpkgs/ungoogled-chromium/template (build errors in my post above)

q66 commented 3 years ago

arguing which one is theoretically technically superior is entirely irrelevant; the simple truth is

1) by using any chromium based browser, you are either directly or indirectly giving google more power and reinforcing their strangehold on the web 2) you are 100% reliant on google continuing to develop their upstream and either accepting or working around their choices, since with a codebase like chromium any independent fork is doomed to fail, and google is an upstream hostile to free software philosophy and will prioritize their commercial interests first and foremost

there is exactly one way to avoid that and that's using a browser unrelated to chromium, individual benefits be damned - and there you basically have exactly two choices, and that is either firefox (which is generally the choice more compatible with modern web, even if occasionally questionable) or one of the classic webkit browsers (webkit2gtk particularly, e.g. epiphany aka gnome web)

or, you can keep lying to yourself, in which case i have nothing more to say to you

either way, i will not be debugging your out of tree build templates, i have better things to do

dm17 commented 3 years ago

arguing which one is theoretically technically superior is entirely irrelevant; the simple truth is

  1. by using any chromium based browser, you are either directly or indirectly giving google more power and reinforcing their strangehold on the web
  2. you are 100% reliant on google continuing to develop their upstream and either accepting or working around their choices, since with a codebase like chromium any independent fork is doomed to fail, and google is an upstream hostile to free software philosophy and will prioritize their commercial interests first and foremost

there is exactly one way to avoid that and that's using a browser unrelated to chromium, individual benefits be damned - and there you basically have exactly two choices, and that is either firefox (which is generally the choice more compatible with modern web, even if occasionally questionable) or one of the classic webkit browsers (webkit2gtk particularly, e.g. epiphany aka gnome web)

or, you can keep lying to yourself, in which case i have nothing more to say to you

either way, i will not be debugging your out of tree build templates, i have better things to do

This is exactly why I replied the way I did. You're coming into a ungoogled-chromium chat and basically saying their development is useless. You're clearly unable to see your own ideology, and calling me a liar does not help your argumentation. You're arguing that one piece of OSS is more corrupted than another piece of OSS - which is the same as saying "my pony in this race is better than yours." You're forgetting about the wisdom of having more than one pony in a race! "If you can't say anything nice, then don't say anything at all." - Every mom ever.

ghost commented 3 years ago

I think the end goal should be the convergence of the security offered by the current Chormium offerings(ungoogled-chromium, bromite, vanadium) with the privacy offed by the open source community. I think without security, you can not have privacy. But without privacy, you can still have security. and right not the Chormium offerings sans googles have the best mix of both.