diff options
-rw-r--r-- | www-plugins/firefoxpwa/firefoxpwa-2.12.0-r1.ebuild | 523 |
1 files changed, 523 insertions, 0 deletions
diff --git a/www-plugins/firefoxpwa/firefoxpwa-2.12.0-r1.ebuild b/www-plugins/firefoxpwa/firefoxpwa-2.12.0-r1.ebuild new file mode 100644 index 000000000..11238aed7 --- /dev/null +++ b/www-plugins/firefoxpwa/firefoxpwa-2.12.0-r1.ebuild @@ -0,0 +1,523 @@ +# Copyright 2023-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CRATES=" + ab_glyph@0.2.25 + ab_glyph_rasterizer@0.1.8 + addr2line@0.21.0 + adler32@1.2.0 + adler@1.0.2 + aho-corasick@1.1.3 + aligned-vec@0.5.0 + alloc-no-stdlib@2.0.4 + alloc-stdlib@0.2.2 + android-tzdata@0.1.1 + android_system_properties@0.1.5 + anstream@0.6.13 + anstyle-parse@0.2.3 + anstyle-query@1.0.2 + anstyle-wincon@3.0.2 + anstyle@1.0.6 + anyhow@1.0.82 + arbitrary@1.3.2 + arg_enum_proc_macro@0.3.4 + arrayref@0.3.7 + arrayvec@0.7.4 + async-compression@0.4.9 + autocfg@1.2.0 + av1-grain@0.2.3 + avif-serialize@0.8.1 + backtrace@0.3.71 + base64@0.21.7 + base64@0.22.1 + bit_field@0.10.2 + bitflags@1.3.2 + bitflags@2.5.0 + bitstream-io@2.2.0 + blake3@1.5.1 + brotli-decompressor@4.0.0 + brotli@5.0.0 + built@0.7.2 + bumpalo@3.16.0 + bytemuck@1.15.0 + byteorder-lite@0.1.0 + byteorder@1.5.0 + bytes@1.6.0 + bzip2-sys@0.1.11+1.0.8 + bzip2@0.4.4 + cc@1.0.96 + cfg-expr@0.15.8 + cfg-if@1.0.0 + cfg_aliases@0.2.0 + chrono@0.4.38 + clap@4.5.4 + clap_builder@4.5.2 + clap_complete@4.5.2 + clap_derive@4.5.4 + clap_lex@0.7.0 + color_quant@1.1.0 + colorchoice@1.0.0 + configparser@3.0.4 + const_format@0.2.32 + const_format_proc_macros@0.2.32 + constant_time_eq@0.3.0 + core-foundation-sys@0.8.6 + core-foundation@0.9.4 + crc32fast@1.4.0 + crossbeam-deque@0.8.5 + crossbeam-epoch@0.9.18 + crossbeam-utils@0.8.19 + crunchy@0.2.2 + csscolorparser@0.6.2 + darling@0.20.8 + darling_core@0.20.8 + darling_macro@0.20.8 + data-url@0.3.1 + deflate@0.8.6 + deranged@0.3.11 + directories@5.0.1 + dirs-sys@0.4.1 + dmg@0.1.2 + either@1.11.0 + encoding_rs@0.8.34 + equivalent@1.0.1 + errno@0.3.8 + exr@1.72.0 + fastrand@2.1.0 + fdeflate@0.3.4 + filedescriptor@0.8.2 + filetime@0.2.23 + flate2@1.0.30 + float-cmp@0.9.0 + flume@0.11.0 + fnv@1.0.7 + fontconfig-parser@0.5.6 + fontdb@0.16.2 + foreign-types-shared@0.1.1 + foreign-types@0.3.2 + form_urlencoded@1.2.1 + fs_extra@1.3.0 + futures-channel@0.3.30 + futures-core@0.3.30 + futures-io@0.3.30 + futures-sink@0.3.30 + futures-task@0.3.30 + futures-util@0.3.30 + gag@1.0.0 + getrandom@0.2.14 + gif@0.13.1 + gimli@0.28.1 + glob@0.3.1 + h2@0.4.4 + half@2.4.1 + hashbrown@0.12.3 + hashbrown@0.14.5 + heck@0.5.0 + hermit-abi@0.3.9 + hex@0.4.3 + http-body-util@0.1.1 + http-body@1.0.0 + http@1.1.0 + httparse@1.8.0 + hyper-tls@0.6.0 + hyper-util@0.1.3 + hyper@1.3.1 + iana-time-zone-haiku@0.1.2 + iana-time-zone@0.1.60 + icns@0.3.1 + ident_case@1.0.1 + idna@0.5.0 + image-webp@0.1.2 + image@0.25.1 + imagesize@0.12.0 + imgref@1.10.1 + indexmap@1.9.3 + indexmap@2.2.6 + interpolate_name@0.2.4 + ipnet@2.9.0 + itertools@0.12.1 + itoa@1.0.11 + jobserver@0.1.31 + jpeg-decoder@0.3.1 + js-sys@0.3.69 + kurbo@0.11.0 + language-tags@0.3.2 + lazy_static@1.4.0 + lebe@0.5.2 + libc@0.2.154 + libfuzzer-sys@0.4.7 + libredox@0.1.3 + line-wrap@0.2.0 + linux-raw-sys@0.4.13 + lock_api@0.4.12 + log@0.4.21 + loop9@0.1.5 + maybe-rayon@0.1.1 + memchr@2.7.2 + memmap2@0.9.4 + mime@0.3.17 + minimal-lexical@0.2.1 + miniz_oxide@0.3.7 + miniz_oxide@0.7.2 + mio@0.8.11 + native-tls@0.2.11 + new_debug_unreachable@1.0.6 + nom@7.1.3 + noop_proc_macro@0.3.0 + num-bigint@0.4.4 + num-conv@0.1.0 + num-derive@0.4.2 + num-integer@0.1.46 + num-rational@0.4.1 + num-traits@0.2.18 + num_cpus@1.16.0 + num_threads@0.1.7 + object@0.32.2 + once_cell@1.19.0 + openssl-macros@0.1.1 + openssl-probe@0.1.5 + openssl-src@300.2.3+3.2.1 + openssl-sys@0.9.102 + openssl@0.10.64 + option-ext@0.2.0 + owned_ttf_parser@0.20.0 + parse-display-derive@0.8.2 + parse-display@0.8.2 + paste@1.0.14 + percent-encoding@2.3.1 + phf@0.11.2 + phf_generator@0.11.2 + phf_macros@0.11.2 + phf_shared@0.11.2 + pico-args@0.5.0 + pin-project-internal@1.1.5 + pin-project-lite@0.2.14 + pin-project@1.1.5 + pin-utils@0.1.0 + pix@0.13.3 + pkg-config@0.3.30 + plist@1.6.1 + png@0.16.8 + png@0.17.13 + powerfmt@0.2.0 + ppv-lite86@0.2.17 + proc-macro2@1.0.81 + profiling-procmacros@1.0.15 + profiling@1.0.15 + qoi@0.4.1 + quick-error@1.2.3 + quick-error@2.0.1 + quick-xml@0.31.0 + quote@1.0.36 + quoted-string@0.2.2 + rand@0.8.5 + rand_chacha@0.3.1 + rand_core@0.6.4 + rav1e@0.7.1 + ravif@0.11.5 + rayon-core@1.12.1 + rayon@1.10.0 + redox_syscall@0.4.1 + redox_users@0.4.5 + regex-automata@0.4.6 + regex-syntax@0.7.5 + regex-syntax@0.8.3 + regex@1.10.4 + reqwest@0.12.4 + resvg@0.41.0 + rgb@0.8.37 + roxmltree@0.19.0 + rustc-demangle@0.1.23 + rustix@0.38.34 + rustls-pemfile@2.1.2 + rustls-pki-types@1.5.0 + rustybuzz@0.13.0 + ryu@1.0.17 + sanitize-filename@0.5.0 + schannel@0.1.23 + scopeguard@1.2.0 + security-framework-sys@2.10.0 + security-framework@2.10.0 + serde@1.0.199 + serde_derive@1.0.199 + serde_json@1.0.116 + serde_spanned@0.6.5 + serde_urlencoded@0.7.1 + serde_with@3.8.1 + serde_with_macros@3.8.1 + simd-adler32@0.3.7 + simd_helpers@0.1.0 + simplecss@0.2.1 + simplelog@0.12.2 + siphasher@0.3.11 + siphasher@1.0.1 + slab@0.4.9 + slotmap@1.0.7 + smallvec@1.13.2 + smart-default@0.7.1 + socket2@0.5.7 + spin@0.9.8 + strict-num@0.1.1 + strsim@0.10.0 + strsim@0.11.1 + structmeta-derive@0.2.0 + structmeta@0.2.0 + svgtypes@0.15.0 + syn@2.0.60 + sync_wrapper@0.1.2 + system-configuration-sys@0.5.0 + system-configuration@0.5.1 + system-deps@6.2.2 + tar@0.4.40 + target-lexicon@0.12.14 + tempfile@3.10.1 + termcolor@1.4.1 + thiserror-impl@1.0.59 + thiserror@1.0.59 + tiff@0.9.1 + time-core@0.1.2 + time-macros@0.2.18 + time@0.3.36 + tiny-skia-path@0.11.4 + tiny-skia@0.11.4 + tinyvec@1.6.0 + tinyvec_macros@0.1.1 + tokio-native-tls@0.3.1 + tokio-socks@0.5.1 + tokio-util@0.7.10 + tokio@1.37.0 + toml@0.8.12 + toml_datetime@0.6.5 + toml_edit@0.22.12 + tower-layer@0.3.2 + tower-service@0.3.2 + tower@0.4.13 + tracing-core@0.1.32 + tracing@0.1.40 + try-lock@0.2.5 + ttf-parser@0.20.0 + ulid@1.1.2 + unicode-bidi-mirroring@0.2.0 + unicode-bidi@0.3.15 + unicode-ccc@0.2.0 + unicode-ident@1.0.12 + unicode-normalization@0.1.23 + unicode-properties@0.1.1 + unicode-script@0.5.6 + unicode-vo@0.1.0 + unicode-xid@0.2.4 + url@2.5.0 + urlencoding@2.1.3 + usvg@0.41.0 + utf8parse@0.2.1 + v_frame@0.3.8 + vcpkg@0.2.15 + version-compare@0.2.0 + version_check@0.9.4 + want@0.3.1 + wasi@0.11.0+wasi-snapshot-preview1 + wasm-bindgen-backend@0.2.92 + wasm-bindgen-futures@0.4.42 + wasm-bindgen-macro-support@0.2.92 + wasm-bindgen-macro@0.2.92 + wasm-bindgen-shared@0.2.92 + wasm-bindgen@0.2.92 + web-sys@0.3.69 + web-time@1.1.0 + weezl@0.1.8 + winapi-i686-pc-windows-gnu@0.4.0 + winapi-util@0.1.8 + winapi-x86_64-pc-windows-gnu@0.4.0 + winapi@0.3.9 + windows-core@0.52.0 + windows-sys@0.48.0 + windows-sys@0.52.0 + windows-targets@0.48.5 + windows-targets@0.52.5 + windows@0.52.0 + windows_aarch64_gnullvm@0.48.5 + windows_aarch64_gnullvm@0.52.5 + windows_aarch64_msvc@0.48.5 + windows_aarch64_msvc@0.52.5 + windows_i686_gnu@0.48.5 + windows_i686_gnu@0.52.5 + windows_i686_gnullvm@0.52.5 + windows_i686_msvc@0.48.5 + windows_i686_msvc@0.52.5 + windows_x86_64_gnu@0.48.5 + windows_x86_64_gnu@0.52.5 + windows_x86_64_gnullvm@0.48.5 + windows_x86_64_gnullvm@0.52.5 + windows_x86_64_msvc@0.48.5 + windows_x86_64_msvc@0.52.5 + winnow@0.6.7 + winreg@0.52.0 + xattr@1.3.1 + xmlwriter@0.1.0 + zstd-safe@7.1.0 + zstd-sys@2.0.10+zstd.1.5.6 + zstd@0.13.1 + zune-core@0.4.12 + zune-inflate@0.2.54 + zune-jpeg@0.4.11 +" + +declare -A GIT_CRATES=( + [mime-parse]='https://github.com/filips123/mime;57416f447a10c3343df7fe80deb0ae8a7c77cf0a;mime-%commit%/mime-parse' + [mime]='https://github.com/filips123/mime;57416f447a10c3343df7fe80deb0ae8a7c77cf0a;mime-%commit%' + [web_app_manifest]='https://github.com/filips123/WebAppManifestRS;477c5bbc7406eec01aea40e18338dafcec78c917;WebAppManifestRS-%commit%' +) + +inherit cargo desktop flag-o-matic shell-completion toolchain-funcs xdg + +DESCRIPTION="A tool to install, manage and use PWAs in Mozilla Firefox (native component)" +HOMEPAGE="https://pwasforfirefox.filips.si/" + +SRC_URI=" + https://github.com/filips123/PWAsForFirefox/archive/v${PV}.tar.gz -> ${P}.tar.gz + ${CARGO_CRATE_URIS} +" + +S="${WORKDIR}/PWAsForFirefox-${PV}/native" + +# Main project license +LICENSE="MPL-2.0" + +# Dependent crate licenses +LICENSE+=" + Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD MIT MPL-2.0 + Unicode-DFS-2016 ZLIB +" + +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~x86" +IUSE="custom-cflags lto static" + +# Add app-arch/bzip2 when it finally get pkg-config file +DEPEND=" + !static? ( + app-arch/zstd:= + dev-libs/openssl:= + ) +" +RDEPEND="${DEPEND}" +# As Rust produces LLVM IR when using LTO, lld is needed to link. Furthermore, +# as some crates contain C code, clang should be used to compile them to produce +# compatible IR. +BDEPEND=" + lto? ( + !custom-cflags? ( + sys-devel/clang + sys-devel/lld + ) + ) + !static? ( virtual/pkgconfig ) +" + +QA_FLAGS_IGNORED=" + usr/bin/firefoxpwa + usr/libexec/firefoxpwa-connector +" + +src_prepare() { + default + + # Set version in source files as per build instructions + sed -i "s/version = \"0.0.0\"/version = \"${PV}\"/g" Cargo.toml || die + sed -i "s/DISTRIBUTION_VERSION = '0.0.0'/DISTRIBUTION_VERSION = '${PV}'/g" \ + userchrome/profile/chrome/pwa/chrome.jsm || die +} + +src_configure() { + # Setup toolchain + export CARGO_PROFILE_RELEASE_LTO=$(usex lto true false) + strip-flags + + if use lto; then + if ! use custom-cflags; then + CC="${CHOST}-clang" + CXX="${CHOST}-clang++" + RUSTFLAGS="-Clinker=clang -Clink-arg=-fuse-ld=lld ${RUSTFLAGS}" + + # Fix -flto[=n] not being recognized by clang. + if tc-is-clang && is-flag "-flto=*"; then + replace-flags "-flto=*" "-flto" + fi + fi + else + filter-lto + fi + + # Ask to use system dependencies + if ! use static; then + export PKG_CONFIG_ALLOW_CROSS=1 + export ZSTD_SYS_USE_PKG_CONFIG=1 + export OPENSSL_NO_VENDOR=1 + fi + + # Configure features + local myfeatures=( + $(usev static) + ) + + cargo_src_configure +} + +src_install() { + # Executables + dobin target/*/firefoxpwa + exeinto /usr/libexec + doexe target/*/firefoxpwa-connector + + # Manifest + local target_dirs=( /usr/lib{,64}/mozilla/native-messaging-hosts ) + for target_dir in "${target_dirs[@]}"; do + insinto "${target_dir}" + newins manifests/linux.json firefoxpwa.json + done + + # Completions + newbashcomp target/*/completions/firefoxpwa.bash firefoxpwa + dofishcomp target/*/completions/firefoxpwa.fish + dozshcomp target/*/completions/_firefoxpwa + + # UserChrome + insinto /usr/share/firefoxpwa + doins -r ./userchrome + + # Documentation + dodoc ../README.md + newdoc ../native/README.md README-NATIVE.md + newdoc ../extension/README.md README-EXTENSION.md + + # AppStream Metadata + insinto /usr/share/metainfo + doins packages/appstream/si.filips.FirefoxPWA.metainfo.xml + + # Icon + doicon -s scalable packages/appstream/si.filips.FirefoxPWA.svg +} + +pkg_postinst() { + if [[ ! ${REPLACING_VERSIONS} ]]; then + elog "You have successfully installed the native part of the PWAsForFirefox project." + elog "You should also install the Firefox extension if you haven't already." + elog + elog "Download:" + elog "\thttps://addons.mozilla.org/firefox/addon/pwas-for-firefox/" + fi + + xdg_pkg_postinst +} + +pkg_postrm() { + if [[ ! ${REPLACED_BY_VERSION} ]]; then + elog "Runtime, profiles and web apps are still installed in user directories." + elog "You can remove them manually after this package is uninstalled." + elog "Doing that will remove all installed web apps and their data." + fi + + xdg_pkg_postrm +} |