diff --git a/devel/Makefile b/devel/Makefile index 5d6c8ffa3e5b..352cf08370f9 100644 --- a/devel/Makefile +++ b/devel/Makefile @@ -1,7731 +1,7732 @@ COMMENT = Development utilities SUBDIR += 9base SUBDIR += ElectricFence SUBDIR += R-cran-BH SUBDIR += R-cran-Defaults SUBDIR += R-cran-Hmisc SUBDIR += R-cran-ModelMetrics SUBDIR += R-cran-R6 SUBDIR += R-cran-RUnit SUBDIR += R-cran-Rcpp SUBDIR += R-cran-RcppProgress SUBDIR += R-cran-Rdpack SUBDIR += R-cran-abind SUBDIR += R-cran-bindr SUBDIR += R-cran-bindrcpp SUBDIR += R-cran-bit SUBDIR += R-cran-bit64 SUBDIR += R-cran-bitops SUBDIR += R-cran-blob SUBDIR += R-cran-brio SUBDIR += R-cran-broom SUBDIR += R-cran-caTools SUBDIR += R-cran-callr SUBDIR += R-cran-caret SUBDIR += R-cran-checkmate SUBDIR += R-cran-chron SUBDIR += R-cran-classInt SUBDIR += R-cran-cli SUBDIR += R-cran-cliapp SUBDIR += R-cran-clipr SUBDIR += R-cran-clisymbols SUBDIR += R-cran-collapse SUBDIR += R-cran-covr SUBDIR += R-cran-cpp11 SUBDIR += R-cran-crayon SUBDIR += R-cran-cyclocomp SUBDIR += R-cran-data.table SUBDIR += R-cran-desc SUBDIR += R-cran-devtools SUBDIR += R-cran-diffobj SUBDIR += R-cran-doParallel SUBDIR += R-cran-ellipsis SUBDIR += R-cran-evaluate SUBDIR += R-cran-fansi SUBDIR += R-cran-filelock SUBDIR += R-cran-fontawesome SUBDIR += R-cran-foreach SUBDIR += R-cran-future SUBDIR += R-cran-future.apply SUBDIR += R-cran-gbRd SUBDIR += R-cran-gbm SUBDIR += R-cran-gdata SUBDIR += R-cran-generics SUBDIR += R-cran-gert SUBDIR += R-cran-getopt SUBDIR += R-cran-git2r SUBDIR += R-cran-glmnet SUBDIR += R-cran-globals SUBDIR += R-cran-glue SUBDIR += R-cran-gmodels SUBDIR += R-cran-gsubfn SUBDIR += R-cran-gtools SUBDIR += R-cran-hardhat SUBDIR += R-cran-hms SUBDIR += R-cran-ini SUBDIR += R-cran-iterators SUBDIR += R-cran-itertools SUBDIR += R-cran-later SUBDIR += R-cran-lifecycle SUBDIR += R-cran-lintr SUBDIR += R-cran-listenv SUBDIR += R-cran-lubridate SUBDIR += R-cran-magrittr SUBDIR += R-cran-memoise SUBDIR += R-cran-microbenchmark SUBDIR += R-cran-mockery SUBDIR += R-cran-msm SUBDIR += R-cran-multicool SUBDIR += R-cran-optparse SUBDIR += R-cran-pak SUBDIR += R-cran-parallelly SUBDIR += R-cran-parsedate SUBDIR += R-cran-pillar SUBDIR += R-cran-pkgbuild SUBDIR += R-cran-pkgcache SUBDIR += R-cran-pkgconfig SUBDIR += R-cran-pkgdepends SUBDIR += R-cran-pkgload SUBDIR += R-cran-pkgmaker SUBDIR += R-cran-pkgsearch SUBDIR += R-cran-plogr SUBDIR += R-cran-plyr SUBDIR += R-cran-praise SUBDIR += R-cran-prettycode SUBDIR += R-cran-prettyunits SUBDIR += R-cran-progress SUBDIR += R-cran-progressr SUBDIR += R-cran-promises SUBDIR += R-cran-proto SUBDIR += R-cran-purrr SUBDIR += R-cran-rJava SUBDIR += R-cran-randomForest SUBDIR += R-cran-rappdirs SUBDIR += R-cran-rcmdcheck SUBDIR += R-cran-registry SUBDIR += R-cran-rematch2 SUBDIR += R-cran-remotes SUBDIR += R-cran-repr SUBDIR += R-cran-reshape SUBDIR += R-cran-reshape2 SUBDIR += R-cran-rgexf SUBDIR += R-cran-rlang SUBDIR += R-cran-rngtools SUBDIR += R-cran-roxygen2 SUBDIR += R-cran-rprojroot SUBDIR += R-cran-rstudioapi SUBDIR += R-cran-rversions SUBDIR += R-cran-sessioninfo SUBDIR += R-cran-sfsmisc SUBDIR += R-cran-sourcetools SUBDIR += R-cran-sys SUBDIR += R-cran-testthat SUBDIR += R-cran-tibble SUBDIR += R-cran-tidyr SUBDIR += R-cran-tidyselect SUBDIR += R-cran-tinytest SUBDIR += R-cran-tzdb SUBDIR += R-cran-usethis SUBDIR += R-cran-uuid SUBDIR += R-cran-vcd SUBDIR += R-cran-vctrs SUBDIR += R-cran-waldo SUBDIR += R-cran-whisker SUBDIR += R-cran-whoami SUBDIR += R-cran-withr SUBDIR += R-cran-zeallot SUBDIR += RStudio SUBDIR += SpecTcl SUBDIR += aarch64-none-elf-gcc SUBDIR += abi-compliance-checker SUBDIR += abseil SUBDIR += acme SUBDIR += acsccid SUBDIR += activitymail SUBDIR += actor-framework SUBDIR += adacurses SUBDIR += aegis SUBDIR += agar SUBDIR += aifad SUBDIR += aixlog SUBDIR += ald SUBDIR += allegro SUBDIR += allegro5 SUBDIR += amber SUBDIR += aml SUBDIR += ammonite SUBDIR += amqp-cpp SUBDIR += android-tools SUBDIR += anjuta SUBDIR += antlr SUBDIR += antlr3 SUBDIR += antlr4 SUBDIR += apache-ant SUBDIR += apache-commons-configuration SUBDIR += apache-commons-daemon SUBDIR += apache-commons-io SUBDIR += apache-commons-jxpath SUBDIR += apache-log4j2 SUBDIR += apache-rat SUBDIR += aphpbreakdown SUBDIR += aphpunit SUBDIR += api-sanity-autotest SUBDIR += apitrace SUBDIR += app-builder SUBDIR += appstream SUBDIR += appstream-compose SUBDIR += appstream-glib SUBDIR += appstream-qt SUBDIR += apr1 SUBDIR += arachne-pnr SUBDIR += arcanist SUBDIR += arcanist-lib SUBDIR += arduino SUBDIR += arduino-avrdude SUBDIR += arduino-bsd-mk SUBDIR += arduino-builder SUBDIR += arduino-core SUBDIR += arduino-ctags SUBDIR += arduino-irremote SUBDIR += arduino-mk SUBDIR += arduino-openglcd SUBDIR += arduino-sevseg SUBDIR += arduino-tools SUBDIR += arduino18 SUBDIR += arduinoOTA SUBDIR += argc SUBDIR += argdata SUBDIR += argobots SUBDIR += argouml SUBDIR += argp-standalone SUBDIR += argparse SUBDIR += args SUBDIR += argtable SUBDIR += arm-elf-binutils SUBDIR += arm-none-eabi-gcc SUBDIR += arm-none-eabi-gcc492 SUBDIR += arm-none-eabi-newlib SUBDIR += aros-sdk SUBDIR += arpc SUBDIR += art SUBDIR += artifactory SUBDIR += asl SUBDIR += asmjit SUBDIR += asmutils SUBDIR += asmx SUBDIR += astah-community SUBDIR += astyle SUBDIR += asyncplusplus SUBDIR += atf SUBDIR += athens SUBDIR += atlantis SUBDIR += atlas SUBDIR += atlas-devel SUBDIR += autobook SUBDIR += autoconf SUBDIR += autoconf-archive SUBDIR += autoconf-switch SUBDIR += autoconf2.13 SUBDIR += autoconf2.69 SUBDIR += autodia SUBDIR += autogen SUBDIR += automake SUBDIR += autotools SUBDIR += avalon-framework SUBDIR += avarice SUBDIR += avce00 SUBDIR += avr-gcc SUBDIR += avr-gdb SUBDIR += avr-libc SUBDIR += avra SUBDIR += avrdude SUBDIR += avro SUBDIR += avro-c SUBDIR += avro-cpp SUBDIR += awless SUBDIR += aws-c-common SUBDIR += aws-c-compression SUBDIR += aws-c-event-stream SUBDIR += aws-c-http SUBDIR += aws-c-io SUBDIR += aws-c-mqtt SUBDIR += aws-c-s3 SUBDIR += aws-c-sdkutils SUBDIR += aws-checksums SUBDIR += aws-crt-cpp SUBDIR += aws-sdk-cpp SUBDIR += aws-sdk-php SUBDIR += axmldec SUBDIR += ayatana-ido SUBDIR += b2 SUBDIR += babelflow SUBDIR += babeltrace SUBDIR += bacon SUBDIR += bam SUBDIR += bashdb SUBDIR += basu SUBDIR += bats-core SUBDIR += bazel SUBDIR += bazel-buildtools SUBDIR += bazel029 SUBDIR += bbparse SUBDIR += bcc SUBDIR += bcpp SUBDIR += bcunit SUBDIR += bear SUBDIR += benchmark SUBDIR += bencodetools SUBDIR += bennugd-core SUBDIR += bennugd-modules SUBDIR += bfg SUBDIR += bglibs SUBDIR += binaryen SUBDIR += bingrep SUBDIR += binutils SUBDIR += bison SUBDIR += bit SUBDIR += bitkeeper SUBDIR += blame SUBDIR += blitz SUBDIR += bloaty SUBDIR += blueprint-compiler SUBDIR += bmake SUBDIR += bmkdep SUBDIR += bnf SUBDIR += boehm-gc SUBDIR += boehm-gc-threaded SUBDIR += boost-all SUBDIR += boost-docs SUBDIR += boost-jam SUBDIR += boost-libs SUBDIR += boost-python-libs SUBDIR += boost_build SUBDIR += bossa SUBDIR += boxfort SUBDIR += bpython SUBDIR += brz SUBDIR += bsdbuild SUBDIR += bsdcflow SUBDIR += bsddialog SUBDIR += bsdowl SUBDIR += bugzilla44 SUBDIR += bugzilla50 SUBDIR += build SUBDIR += build2 SUBDIR += buildkite-agent SUBDIR += buildstream SUBDIR += bullet SUBDIR += bunyan SUBDIR += busybee SUBDIR += byacc SUBDIR += byaccj SUBDIR += c2mdoc SUBDIR += c4core SUBDIR += calibrator SUBDIR += caliper SUBDIR += capnproto SUBDIR += capnproto080 SUBDIR += capstone3 SUBDIR += capstone4 SUBDIR += capstone5 SUBDIR += cargo-bloat SUBDIR += cargo-c SUBDIR += cargo-generate SUBDIR += cask SUBDIR += catch SUBDIR += catch2 SUBDIR += cbang SUBDIR += cbfmt SUBDIR += cbrowser SUBDIR += cc65 SUBDIR += ccache SUBDIR += ccache-memcached SUBDIR += ccache-memcached-static SUBDIR += ccache-static SUBDIR += ccache4 SUBDIR += cccc SUBDIR += ccdoc SUBDIR += ccls SUBDIR += ccrtp SUBDIR += cctz SUBDIR += cdash SUBDIR += cdecl SUBDIR += cdialog SUBDIR += cdk SUBDIR += cereal SUBDIR += cervisia SUBDIR += cflow SUBDIR += cflow2vcg SUBDIR += cfr SUBDIR += cgdb SUBDIR += cgilib SUBDIR += cgit SUBDIR += cgprof SUBDIR += charva SUBDIR += check SUBDIR += checkbashisms SUBDIR += checkheaders SUBDIR += chroma SUBDIR += chrpath SUBDIR += chruby SUBDIR += cil SUBDIR += cirrus-cli SUBDIR += cityhash SUBDIR += cjose SUBDIR += cl-alexandria SUBDIR += cl-alexandria-sbcl SUBDIR += cl-asdf SUBDIR += cl-cffi SUBDIR += cl-infix SUBDIR += cl-infix-sbcl SUBDIR += cl-port SUBDIR += cl-port-sbcl SUBDIR += cl-split-sequence SUBDIR += cl-split-sequence-sbcl SUBDIR += cl-trivial-features SUBDIR += cl-trivial-features-sbcl SUBDIR += cl-trivial-gray-streams SUBDIR += cl-trivial-gray-streams-sbcl SUBDIR += clazy SUBDIR += cld2 SUBDIR += clewn SUBDIR += cli SUBDIR += cli11 SUBDIR += clig SUBDIR += cligen SUBDIR += clinfo SUBDIR += clipp SUBDIR += clisp-hyperspec SUBDIR += clixon SUBDIR += clojure-cider SUBDIR += cloudabi SUBDIR += cloudabi-toolchain SUBDIR += clthreads SUBDIR += cltune SUBDIR += clxclient SUBDIR += cmake SUBDIR += cmake-core SUBDIR += cmake-doc SUBDIR += cmake-fedora SUBDIR += cmake-gui SUBDIR += cmake-man SUBDIR += cmake-modules-webos SUBDIR += cmakedoc SUBDIR += cmph SUBDIR += cmunge SUBDIR += coccinelle SUBDIR += cocogitto SUBDIR += codeblocks SUBDIR += codequery SUBDIR += codesearch-py SUBDIR += codeville SUBDIR += codeworker SUBDIR += collada-dom SUBDIR += color SUBDIR += colorgcc SUBDIR += colormake SUBDIR += commit-patch SUBDIR += commoncpp SUBDIR += compiler-rt SUBDIR += compiz-bcop SUBDIR += concurrencpp SUBDIR += concurrencykit SUBDIR += concurrentqueue SUBDIR += configkit SUBDIR += cons SUBDIR += cons-test SUBDIR += containers SUBDIR += convco SUBDIR += cook SUBDIR += corrade SUBDIR += courier-unicode SUBDIR += coursier SUBDIR += covtool SUBDIR += cpan-upload SUBDIR += cpan-upload-http SUBDIR += cpp-hocon SUBDIR += cpp-netlib SUBDIR += cpp2py SUBDIR += cppcheck SUBDIR += cppi SUBDIR += cpplint SUBDIR += cpprestsdk SUBDIR += cpptest SUBDIR += cppunit SUBDIR += cppurses SUBDIR += cpputest SUBDIR += cproto SUBDIR += cpu_features SUBDIR += cquery SUBDIR += cram SUBDIR += crc32c SUBDIR += creduce SUBDIR += critcl SUBDIR += criterion SUBDIR += cscope SUBDIR += cscout SUBDIR += csmith SUBDIR += csoap SUBDIR += cssc SUBDIR += ctags SUBDIR += ctre SUBDIR += ctypes.sh SUBDIR += cunit SUBDIR += cut SUBDIR += cutils SUBDIR += cutter SUBDIR += cvise SUBDIR += cvs SUBDIR += cvs+ipv6 SUBDIR += cvs-devel SUBDIR += cvs-syncmail SUBDIR += cvs2cl SUBDIR += cvs2darcs SUBDIR += cvs2html SUBDIR += cvsadmin SUBDIR += cvsbook SUBDIR += cvschangelogbuilder SUBDIR += cvschk SUBDIR += cvsd SUBDIR += cvsdadm SUBDIR += cvsdelta SUBDIR += cvsdiff2patch SUBDIR += cvsgraph SUBDIR += cvslines SUBDIR += cvsmonitor SUBDIR += cvsplot SUBDIR += cvsps SUBDIR += cvsps-devel SUBDIR += cvsspam SUBDIR += cvstrac SUBDIR += cvsutils SUBDIR += cvsweb SUBDIR += cvsweb3 SUBDIR += cvswrap SUBDIR += cweb SUBDIR += cwrap SUBDIR += cxmon SUBDIR += cxref SUBDIR += cxxopts SUBDIR += cxxtest SUBDIR += cxxtools SUBDIR += d-feet SUBDIR += d-scanner SUBDIR += d-spy SUBDIR += darts SUBDIR += dash.el SUBDIR += dasm SUBDIR += datadraw SUBDIR += date SUBDIR += dbus SUBDIR += dbus-c++ SUBDIR += dbus-glib SUBDIR += dbus-java SUBDIR += dbus-sharp SUBDIR += dbus-sharp-glib SUBDIR += dbus-tcl SUBDIR += dcd-client SUBDIR += dcd-server SUBDIR += dconf SUBDIR += dconf-editor SUBDIR += debugedit SUBDIR += dee SUBDIR += deforaos-libsystem SUBDIR += deheader SUBDIR += delta SUBDIR += delve SUBDIR += deployer SUBDIR += derelict-sdl2 SUBDIR += derelict-util SUBDIR += desed SUBDIR += desktop-file-utils SUBDIR += dev86 SUBDIR += devhelp SUBDIR += devtodo SUBDIR += dfuife-curses SUBDIR += dia2code SUBDIR += dia2code+ SUBDIR += ding-libs SUBDIR += directfb SUBDIR += dispy SUBDIR += distcc SUBDIR += distel SUBDIR += distorm SUBDIR += djgpp-binutils SUBDIR += dlib SUBDIR += dmake SUBDIR += dmalloc SUBDIR += dmlc-core SUBDIR += dmucs SUBDIR += docopt.cpp SUBDIR += doctest SUBDIR += doctorj SUBDIR += dolphin-plugins SUBDIR += dotconf SUBDIR += double-conversion SUBDIR += doxygen SUBDIR += dparser SUBDIR += dragon SUBDIR += ds2 SUBDIR += dsymbol SUBDIR += dtool SUBDIR += dub SUBDIR += dupl SUBDIR += duplo SUBDIR += dura SUBDIR += dwarf2json SUBDIR += dwarfdump SUBDIR += dwarves SUBDIR += dwz SUBDIR += dxa65 SUBDIR += dyncall SUBDIR += e00compr SUBDIR += eastl SUBDIR += easy-profiler SUBDIR += easyexif SUBDIR += easygit SUBDIR += easyloggingpp SUBDIR += ebnf2yacc SUBDIR += ecgi SUBDIR += edi SUBDIR += editline SUBDIR += efivar SUBDIR += efl SUBDIR += egypt SUBDIR += eiffelstudio SUBDIR += electron19 SUBDIR += electron21 SUBDIR += electron22 + SUBDIR += electron23 SUBDIR += elf SUBDIR += elf-dissector SUBDIR += elfcat SUBDIR += elfio SUBDIR += elfkickers SUBDIR += elfsh SUBDIR += elfutils SUBDIR += elixir-hex SUBDIR += elixir-make SUBDIR += elm-format SUBDIR += embb SUBDIR += emscripten SUBDIR += entt SUBDIR += envsubst SUBDIR += epl.el SUBDIR += epm SUBDIR += eql5 SUBDIR += eric6 SUBDIR += eris SUBDIR += erlang-cl SUBDIR += erlang-native-compiler SUBDIR += erlang-rebar3_hex SUBDIR += erlang-recon SUBDIR += es-eric6 SUBDIR += esbuild SUBDIR += estd SUBDIR += etcd SUBDIR += etcd31 SUBDIR += etcd32 SUBDIR += etcd33 SUBDIR += etcd34 SUBDIR += etl SUBDIR += evdev-proto SUBDIR += evemu SUBDIR += eventxx SUBDIR += exercisix SUBDIR += exomizer SUBDIR += f77flow SUBDIR += fam SUBDIR += fastcrc SUBDIR += fatal SUBDIR += fbthrift SUBDIR += fc++ SUBDIR += fccf SUBDIR += fcppt SUBDIR += fhist SUBDIR += fifechan SUBDIR += fire-hpp SUBDIR += firmware-utils SUBDIR += fistgen SUBDIR += flatbuffers SUBDIR += flatbuffers205 SUBDIR += flatcc SUBDIR += flatzebra SUBDIR += flex-sdk SUBDIR += flex-sdk35 SUBDIR += flexdock SUBDIR += flexjson SUBDIR += flyspray SUBDIR += fmake SUBDIR += fnc SUBDIR += fnccheck SUBDIR += fnm SUBDIR += folly SUBDIR += forge SUBDIR += forge-devel SUBDIR += fortran-utils SUBDIR += fortytwo-encore SUBDIR += fossil SUBDIR += fossology-nomos-standalone SUBDIR += fp16 SUBDIR += fpc-bfd SUBDIR += fpc-dbus SUBDIR += fpc-fcl-async SUBDIR += fpc-fcl-base SUBDIR += fpc-fcl-db SUBDIR += fpc-fcl-extra SUBDIR += fpc-fcl-fpcunit SUBDIR += fpc-fcl-image SUBDIR += fpc-fcl-js SUBDIR += fpc-fcl-json SUBDIR += fpc-fcl-net SUBDIR += fpc-fcl-passrc SUBDIR += fpc-fcl-pdf SUBDIR += fpc-fcl-registry SUBDIR += fpc-fcl-report SUBDIR += fpc-fcl-res SUBDIR += fpc-fcl-sdo SUBDIR += fpc-fcl-sound SUBDIR += fpc-fcl-stl SUBDIR += fpc-fcl-web SUBDIR += fpc-fcl-xml SUBDIR += fpc-fppkg SUBDIR += fpc-fv SUBDIR += fpc-gdbint SUBDIR += fpc-libmagic SUBDIR += fpc-newt SUBDIR += fpc-odata SUBDIR += fpc-pthreads SUBDIR += fpc-regexpr SUBDIR += fpc-sdl SUBDIR += fpc-symbolic SUBDIR += fpc-tplylib SUBDIR += fpc-zlib SUBDIR += fpp SUBDIR += freebsd-gcc12 SUBDIR += freebsd-gcc9 SUBDIR += freebsd-git-devtools SUBDIR += freebsd-sysroot SUBDIR += frink SUBDIR += fsmtrie SUBDIR += fstrcmp SUBDIR += fstrm SUBDIR += fsx SUBDIR += ftjam SUBDIR += ftnchek SUBDIR += ftxui SUBDIR += fuel SUBDIR += functionalplus SUBDIR += fungw SUBDIR += fuzzylite SUBDIR += fxdiv SUBDIR += g-wrap SUBDIR += ga SUBDIR += gaa SUBDIR += gamin SUBDIR += gammaray SUBDIR += gauche-readline SUBDIR += gaul SUBDIR += gbump SUBDIR += gcc-arm-embedded SUBDIR += gcc-msp430-ti-toolchain SUBDIR += gccmakedep SUBDIR += gcem SUBDIR += gcli SUBDIR += gconf2 SUBDIR += gconfmm26 SUBDIR += gdb SUBDIR += gdcm SUBDIR += gdmd SUBDIR += geany SUBDIR += geany-plugin-addons SUBDIR += geany-plugin-autoclose SUBDIR += geany-plugin-automark SUBDIR += geany-plugin-codenav SUBDIR += geany-plugin-commander SUBDIR += geany-plugin-ctags SUBDIR += geany-plugin-debugger SUBDIR += geany-plugin-defineformat SUBDIR += geany-plugin-doc SUBDIR += geany-plugin-extrasel SUBDIR += geany-plugin-gendoc SUBDIR += geany-plugin-geniuspaste SUBDIR += geany-plugin-git-changebar SUBDIR += geany-plugin-insertnum SUBDIR += geany-plugin-latex SUBDIR += geany-plugin-lineoperations SUBDIR += geany-plugin-lipsum SUBDIR += geany-plugin-lua SUBDIR += geany-plugin-macro SUBDIR += geany-plugin-markdown SUBDIR += geany-plugin-miniscript SUBDIR += geany-plugin-numberedbookmarks SUBDIR += geany-plugin-overview SUBDIR += geany-plugin-pairtaghighlighter SUBDIR += geany-plugin-pg SUBDIR += geany-plugin-pohelper SUBDIR += geany-plugin-pretty-printer SUBDIR += geany-plugin-prj SUBDIR += geany-plugin-projectorganizer SUBDIR += geany-plugin-scope SUBDIR += geany-plugin-sendmail SUBDIR += geany-plugin-shiftcolumn SUBDIR += geany-plugin-spellcheck SUBDIR += geany-plugin-tableconvert SUBDIR += geany-plugin-treebrowser SUBDIR += geany-plugin-updatechecker SUBDIR += geany-plugin-utilslib SUBDIR += geany-plugin-vc SUBDIR += geany-plugin-vimode SUBDIR += geany-plugin-workbench SUBDIR += geany-plugin-xmlsnippets SUBDIR += geany-plugins SUBDIR += geany-plugins-l10n SUBDIR += geany-themes SUBDIR += gearmand SUBDIR += generate SUBDIR += gengetopt SUBDIR += genht SUBDIR += genie SUBDIR += genromfs SUBDIR += getoptions SUBDIR += gettext SUBDIR += gettext-lint SUBDIR += gettext-msghack SUBDIR += gettext-po-mode SUBDIR += gettext-runtime SUBDIR += gettext-tiny SUBDIR += gettext-tools SUBDIR += gflags SUBDIR += gfold SUBDIR += gh SUBDIR += ghidra SUBDIR += ghostie SUBDIR += ghq SUBDIR += ghub SUBDIR += ghub-devel SUBDIR += gindent SUBDIR += gio-sharp SUBDIR += git SUBDIR += git-absorb SUBDIR += git-branchless SUBDIR += git-bug SUBDIR += git-cinnabar SUBDIR += git-cliff SUBDIR += git-codereview SUBDIR += git-cola SUBDIR += git-cvs SUBDIR += git-delta SUBDIR += git-extras SUBDIR += git-filter-repo SUBDIR += git-gui SUBDIR += git-lab SUBDIR += git-lfs SUBDIR += git-merge-changelog SUBDIR += git-modes SUBDIR += git-p4 SUBDIR += git-prev-next SUBDIR += git-review SUBDIR += git-subrepo SUBDIR += git-svn SUBDIR += git-town SUBDIR += git-workspace SUBDIR += gitaly SUBDIR += gitflow SUBDIR += gitg SUBDIR += github-backup-utils SUBDIR += gitinspector SUBDIR += gitklient SUBDIR += gitlab-metrics-exporter SUBDIR += gitlab-runner SUBDIR += gitlab-shell SUBDIR += gitleaks SUBDIR += gitlist SUBDIR += gitolite SUBDIR += gitolite2 SUBDIR += gitoxide SUBDIR += gitqlient SUBDIR += gittrac SUBDIR += gitty SUBDIR += gitui SUBDIR += glab SUBDIR += glade SUBDIR += glademm SUBDIR += glib20 SUBDIR += glibd SUBDIR += glibmm SUBDIR += glibmm26 SUBDIR += glitter SUBDIR += gllvm SUBDIR += global SUBDIR += glog SUBDIR += glrparser SUBDIR += glui SUBDIR += gmake SUBDIR += gn SUBDIR += gnome-builder SUBDIR += gnome-common SUBDIR += gnu-efi SUBDIR += gnucflow SUBDIR += gnulib SUBDIR += gnulibiberty SUBDIR += gnustep SUBDIR += gnustep-make SUBDIR += go-bindata SUBDIR += go-bindata-assetfs SUBDIR += go-git SUBDIR += go-perf SUBDIR += go-protobuf SUBDIR += go-tools SUBDIR += go-wire SUBDIR += gob2 SUBDIR += gobject-introspection SUBDIR += gocheese SUBDIR += gocritic SUBDIR += godot SUBDIR += godot-tools SUBDIR += godot2 SUBDIR += godot2-tools SUBDIR += godot35 SUBDIR += godot35-tools SUBDIR += goffice SUBDIR += gogs SUBDIR += golangci-lint SUBDIR += golint SUBDIR += google-cloud-cpp SUBDIR += google-cloud-cpp117 SUBDIR += google-perftools SUBDIR += google-styleguide SUBDIR += googletest SUBDIR += gopls SUBDIR += goprotobuf SUBDIR += goredo SUBDIR += goreleaser SUBDIR += gorm SUBDIR += goswagger SUBDIR += got SUBDIR += gpds SUBDIR += gperf SUBDIR += gpm SUBDIR += gprbuild SUBDIR += gputils SUBDIR += gradle SUBDIR += gradle-completion SUBDIR += gradle5 SUBDIR += gradle6 SUBDIR += gradle62 SUBDIR += grantlee5 SUBDIR += grcov SUBDIR += grex SUBDIR += grpc SUBDIR += grpc142 SUBDIR += grv SUBDIR += gsettings-desktop-schemas SUBDIR += gsoap SUBDIR += gstreamer1-plugins-soup SUBDIR += gtgt SUBDIR += gtranslator SUBDIR += guichan SUBDIR += guile-lib SUBDIR += gumbo SUBDIR += gvfs SUBDIR += gvp SUBDIR += gwenhywfar SUBDIR += gwenhywfar-fox16 SUBDIR += gwenhywfar-gtk2 SUBDIR += gwenhywfar-gtk3 SUBDIR += gwenhywfar-qt5 SUBDIR += gzstream SUBDIR += hapy SUBDIR += hare SUBDIR += hcs12mem SUBDIR += heaptrack SUBDIR += heimdall SUBDIR += heirloom-devtools SUBDIR += hexcompare SUBDIR += hexd SUBDIR += hgreviewboard SUBDIR += hgsvn SUBDIR += hhdate SUBDIR += highlighterkit SUBDIR += highway SUBDIR += hoel SUBDIR += hotspot SUBDIR += hp48cc SUBDIR += hp48xgcc SUBDIR += hpx SUBDIR += hs-ShellCheck SUBDIR += hs-alex SUBDIR += hs-cabal-install SUBDIR += hs-cpphs SUBDIR += hs-darcs SUBDIR += hs-ghc-events SUBDIR += hs-ghcprofview SUBDIR += hs-git-annex SUBDIR += hs-git-brunch SUBDIR += hs-happy SUBDIR += hs-haskell-language-server SUBDIR += hs-hasktags SUBDIR += hs-hlint SUBDIR += hs-hoogle SUBDIR += hs-hpack SUBDIR += hs-hspec-discover SUBDIR += hs-mueval SUBDIR += hs-ormolu SUBDIR += hs-profiteur SUBDIR += hs-shake SUBDIR += hs-spago SUBDIR += hs-threadscope SUBDIR += htable SUBDIR += hub SUBDIR += hwloc SUBDIR += hwloc2 SUBDIR += hyperscan SUBDIR += ice SUBDIR += ice37 SUBDIR += icestorm SUBDIR += icmake SUBDIR += icontheme SUBDIR += icu SUBDIR += icu-le-hb SUBDIR += icu-lx SUBDIR += idutils SUBDIR += ignition-cmake SUBDIR += ignition-common SUBDIR += ignition-msgs SUBDIR += ignition-plugin SUBDIR += ignition-tools SUBDIR += ikos SUBDIR += imake SUBDIR += imtui SUBDIR += inastemp SUBDIR += include-what-you-use SUBDIR += indi SUBDIR += indicators SUBDIR += influx-pkg-config SUBDIR += inifiled SUBDIR += inih SUBDIR += inilib SUBDIR += inilike SUBDIR += iniparser SUBDIR += initutil SUBDIR += injeqt SUBDIR += intel-graphics-compiler SUBDIR += interactive_rebase_tool SUBDIR += ioncube SUBDIR += ipython SUBDIR += ireport SUBDIR += isa-l SUBDIR += isfreedesktop SUBDIR += isl SUBDIR += ispc SUBDIR += ivykis SUBDIR += jam SUBDIR += jansson SUBDIR += java-findbugs SUBDIR += jclassinfo SUBDIR += jcmdline SUBDIR += jech-dht SUBDIR += jenkins SUBDIR += jenkins-lts SUBDIR += jetbrains-clion SUBDIR += jetbrains-goland SUBDIR += jetbrains-phpstorm SUBDIR += jetbrains-pty4j SUBDIR += jetbrains-webstorm SUBDIR += jgoodies-looks SUBDIR += jiic SUBDIR += jiri SUBDIR += jline SUBDIR += jna SUBDIR += jrtplib SUBDIR += jsap SUBDIR += jsl SUBDIR += jsmin SUBDIR += json-c SUBDIR += json-dto SUBDIR += json-glib SUBDIR += jsoncpp SUBDIR += jsonnet SUBDIR += jsonrpc-glib SUBDIR += juce SUBDIR += judy SUBDIR += jwasm SUBDIR += kBuild SUBDIR += kapptemplate SUBDIR += kcachegrind SUBDIR += kconfig-frontends SUBDIR += kcov SUBDIR += kdbg SUBDIR += kde-dev-scripts SUBDIR += kde-dev-utils SUBDIR += kdesdk SUBDIR += kdesdk-kio SUBDIR += kdesdk-thumbnailers SUBDIR += kdesvn SUBDIR += kdev-php SUBDIR += kdev-python SUBDIR += kdevelop SUBDIR += kdevelop-pg-qt SUBDIR += kerl SUBDIR += kf5-extra-cmake-modules SUBDIR += kf5-kapidox SUBDIR += kf5-kauth SUBDIR += kf5-kbookmarks SUBDIR += kf5-kcmutils SUBDIR += kf5-kconfig SUBDIR += kf5-kcoreaddons SUBDIR += kf5-kcrash SUBDIR += kf5-kdbusaddons SUBDIR += kf5-kdeclarative SUBDIR += kf5-kdoctools SUBDIR += kf5-kfilemetadata SUBDIR += kf5-ki18n SUBDIR += kf5-kidletime SUBDIR += kf5-kio SUBDIR += kf5-kitemmodels SUBDIR += kf5-knewstuff SUBDIR += kf5-knotifications SUBDIR += kf5-knotifyconfig SUBDIR += kf5-kpackage SUBDIR += kf5-kparts SUBDIR += kf5-kpeople SUBDIR += kf5-kpty SUBDIR += kf5-kservice SUBDIR += kf5-ktexteditor SUBDIR += kf5-kunitconversion SUBDIR += kf5-solid SUBDIR += kf5-threadweaver SUBDIR += kio-extras SUBDIR += kirigami-gallery SUBDIR += kiwix-lib SUBDIR += kms-cmake-utils SUBDIR += kodi-platform SUBDIR += kokkos SUBDIR += kore SUBDIR += kpublictransport SUBDIR += kronosnet SUBDIR += ksql SUBDIR += ktextaddons SUBDIR += kyra SUBDIR += kyua SUBDIR += lab SUBDIR += lasi SUBDIR += lattice-ice40-examples-hx1k SUBDIR += lattice-ice40-examples-hx8k SUBDIR += lattice-ice40-tools SUBDIR += lazygit SUBDIR += lcov SUBDIR += leaktracer SUBDIR += leatherman SUBDIR += lefthook SUBDIR += leiningen SUBDIR += lemon SUBDIR += level-zero SUBDIR += lfcbase SUBDIR += lfcxml SUBDIR += libCello SUBDIR += libIDL SUBDIR += libPropList SUBDIR += libabigail SUBDIR += libac SUBDIR += libafterbase SUBDIR += libantlr3c SUBDIR += libantlr4 SUBDIR += libappindicator SUBDIR += libaravis SUBDIR += libarea SUBDIR += libarena SUBDIR += libassa SUBDIR += libassetml SUBDIR += libast SUBDIR += libastylej SUBDIR += libastylej-arduino SUBDIR += libatomic_ops SUBDIR += libaura SUBDIR += libavl SUBDIR += libayatana-appindicator SUBDIR += libayatana-indicator SUBDIR += libb2 SUBDIR += libbacktrace SUBDIR += libbde SUBDIR += libbegemot SUBDIR += libbfd SUBDIR += libbinio SUBDIR += libbpfjit SUBDIR += libbson SUBDIR += libburn SUBDIR += libcbor SUBDIR += libccid SUBDIR += libcdada SUBDIR += libcdb SUBDIR += libcds SUBDIR += libcfu SUBDIR += libchipcard SUBDIR += libcidr SUBDIR += libcii SUBDIR += libcircllhist SUBDIR += libcjson SUBDIR += libclc SUBDIR += libcli SUBDIR += libconcurrent SUBDIR += libconfig SUBDIR += libconfuse SUBDIR += libcreg SUBDIR += libcrossguid SUBDIR += libcsptr SUBDIR += libcuckoo SUBDIR += libcutl SUBDIR += libcwd SUBDIR += libdaemon SUBDIR += libdap SUBDIR += libdatadog SUBDIR += libdatovka SUBDIR += libdatrie SUBDIR += libdbusmenu SUBDIR += libdbusmenu-qt SUBDIR += libddoc SUBDIR += libddwaf SUBDIR += libdevq SUBDIR += libdfui SUBDIR += libdill SUBDIR += libdisasm SUBDIR += libdisorder SUBDIR += libdispatch SUBDIR += libdistance SUBDIR += libdlmalloc SUBDIR += libdlna SUBDIR += libdnsres SUBDIR += libdombey SUBDIR += libdparse SUBDIR += libds SUBDIR += libdsp SUBDIR += libdwarf SUBDIR += libe SUBDIR += libedit SUBDIR += libegit2 SUBDIR += libeio SUBDIR += libelf SUBDIR += libepoll-shim SUBDIR += libepp-nicbr SUBDIR += liberasurecode SUBDIR += libesedb SUBDIR += libestr SUBDIR += libev SUBDIR += libevdev SUBDIR += libevdevplus SUBDIR += libevent SUBDIR += libevt SUBDIR += libevtx SUBDIR += libewf SUBDIR += libexplain SUBDIR += libfaketime SUBDIR += libfastcommon SUBDIR += libfastjson SUBDIR += libffcall SUBDIR += libffi SUBDIR += libffi321 SUBDIR += libffi33 SUBDIR += libfirm SUBDIR += libfixposix SUBDIR += libflatarray SUBDIR += libfmt SUBDIR += libfort SUBDIR += libfortuna SUBDIR += libfreefare SUBDIR += libfsapfs SUBDIR += libfsext SUBDIR += libfsfat SUBDIR += libfshfs SUBDIR += libfsntfs SUBDIR += libfsxfs SUBDIR += libftdi SUBDIR += libftdi1 SUBDIR += libfwnt SUBDIR += libfwsi SUBDIR += libg19 SUBDIR += libg19draw SUBDIR += libgamepad SUBDIR += libgdata SUBDIR += libgee SUBDIR += libgee06 SUBDIR += libgetline SUBDIR += libght SUBDIR += libgit2 SUBDIR += libgit2-glib SUBDIR += libglade2 SUBDIR += libglademm24 SUBDIR += libgnt SUBDIR += libgnuregex SUBDIR += libgpc SUBDIR += libgpkg SUBDIR += libgpr SUBDIR += libgrading SUBDIR += libgraphqlparser SUBDIR += libgsf SUBDIR += libgta SUBDIR += libgtop SUBDIR += libgudev SUBDIR += libgusb SUBDIR += libgutenfetch SUBDIR += libheinz SUBDIR += libhoard SUBDIR += libhtp SUBDIR += libibuddy SUBDIR += libical SUBDIR += libindicator SUBDIR += libinjection SUBDIR += libinotify SUBDIR += libiqxmlrpc SUBDIR += libisofs SUBDIR += libixp SUBDIR += libjitterentropy SUBDIR += libk8055 SUBDIR += libklel SUBDIR += liblangtag SUBDIR += liblas SUBDIR += liblnk SUBDIR += liblockfile SUBDIR += liblogging SUBDIR += liblognorm SUBDIR += liblouis SUBDIR += liblpm SUBDIR += libltdl SUBDIR += libluksde SUBDIR += liblxqt SUBDIR += libmaa SUBDIR += libmatheval SUBDIR += libmatthew SUBDIR += libmba SUBDIR += libmcfp SUBDIR += libmill SUBDIR += libmimedir SUBDIR += libmodi SUBDIR += libmowgli SUBDIR += libmowgli2 SUBDIR += libmpcbdm SUBDIR += libmsiecf SUBDIR += libmsocket SUBDIR += libmtdev SUBDIR += libmtrie SUBDIR += libmustache SUBDIR += libnaji SUBDIR += libnest2d-ultimaker SUBDIR += libnfc SUBDIR += libnjs SUBDIR += libnotify SUBDIR += libnsutils SUBDIR += liboil SUBDIR += libolecf SUBDIR += libopenbsd SUBDIR += libopencm3 SUBDIR += libopentracing SUBDIR += libopkele SUBDIR += liborcus SUBDIR += libosinfo SUBDIR += libowfat SUBDIR += libpafe SUBDIR += libpafe-ruby SUBDIR += libparserutils SUBDIR += libpasori SUBDIR += libpci SUBDIR += libpciaccess SUBDIR += libpcl SUBDIR += libpdel SUBDIR += libpeak SUBDIR += libpeas SUBDIR += libpff SUBDIR += libphdi SUBDIR += libphk SUBDIR += libphonenumber SUBDIR += libplist SUBDIR += libpo6 SUBDIR += libpololu-avr SUBDIR += libpru SUBDIR += libqb SUBDIR += libqcow SUBDIR += libqsbr SUBDIR += libqtxdg SUBDIR += libr3 SUBDIR += librcc SUBDIR += librcd SUBDIR += libreadline-java SUBDIR += libregf SUBDIR += librelp SUBDIR += librest SUBDIR += librevisa SUBDIR += librevisa-vish SUBDIR += librevisa-vxi SUBDIR += librolegen SUBDIR += librttopo SUBDIR += libruin SUBDIR += libs11n SUBDIR += libsavitar SUBDIR += libscca SUBDIR += libsearpc SUBDIR += libserdes SUBDIR += libserialport SUBDIR += libshbuf SUBDIR += libshhmsg SUBDIR += libshhopt SUBDIR += libsigc++20 SUBDIR += libsigc++30 SUBDIR += libsigrok SUBDIR += libsigrokdecode SUBDIR += libsigscan SUBDIR += libsigsegv SUBDIR += libsimdpp SUBDIR += libslang2 SUBDIR += libsmdev SUBDIR += libsml SUBDIR += libsmpp34 SUBDIR += libsmraw SUBDIR += libsoup SUBDIR += libsoup3 SUBDIR += libspice-server SUBDIR += libstatgrab SUBDIR += libstatgrab0 SUBDIR += libstrfunc SUBDIR += libstroke SUBDIR += libsysctlmibinfo SUBDIR += libsysctlmibinfo2 SUBDIR += libsysinfo SUBDIR += libtai SUBDIR += libtap SUBDIR += libtar SUBDIR += libtecla SUBDIR += libtermkey SUBDIR += libtextstyle SUBDIR += libthai SUBDIR += libthmap SUBDIR += libthreadar SUBDIR += libtickit SUBDIR += libtifiles2 SUBDIR += libtool SUBDIR += libtpl SUBDIR += libtsm SUBDIR += libtuntap SUBDIR += libublio SUBDIR += libubox SUBDIR += libudev-devd SUBDIR += libuinputplus SUBDIR += libukcprog SUBDIR += libunicode SUBDIR += libuninum SUBDIR += libunistring SUBDIR += libunit SUBDIR += libunwind SUBDIR += libuutil SUBDIR += libuv SUBDIR += libvanessa_adt SUBDIR += libvanessa_logger SUBDIR += libvanessa_socket SUBDIR += libvc SUBDIR += libversion SUBDIR += libvex SUBDIR += libvhdi SUBDIR += libvirt SUBDIR += libvirt-dbus SUBDIR += libvirt-glib SUBDIR += libvirt-java SUBDIR += libvmdk SUBDIR += libvolume_id SUBDIR += libvsgpt SUBDIR += libvshadow SUBDIR += libvslvm SUBDIR += libvterm SUBDIR += libwfut SUBDIR += libx86 SUBDIR += libxalloc SUBDIR += libxo SUBDIR += libxs SUBDIR += libxtend SUBDIR += libzim SUBDIR += libzookeeper SUBDIR += libzvbi SUBDIR += lightning SUBDIR += linenoise-ng SUBDIR += linux-c7-dbus-glib SUBDIR += linux-c7-dbus-libs SUBDIR += linux-c7-devtools SUBDIR += linux-c7-elfutils-libelf SUBDIR += linux-c7-elfutils-libs SUBDIR += linux-c7-icu SUBDIR += linux-c7-libaio SUBDIR += linux-c7-libgfortran SUBDIR += linux-c7-libglade2 SUBDIR += linux-c7-libpciaccess SUBDIR += linux-c7-libsigc++20 SUBDIR += linux-c7-libthai SUBDIR += linux-c7-libtool-ltdl SUBDIR += linux-c7-libunwind SUBDIR += linux-c7-make SUBDIR += linux-c7-nspr SUBDIR += linux-c7-qt SUBDIR += linux-c7-sdl12 SUBDIR += linux-c7-sdl20 SUBDIR += linux-c7-strace SUBDIR += linux-c7-systemd-libs SUBDIR += linux-c7-zlib-devel SUBDIR += linux-ltp SUBDIR += linux-sublime-merge SUBDIR += linux_libusb SUBDIR += lion SUBDIR += listserialc SUBDIR += liteide SUBDIR += llbuild SUBDIR += llnextgen SUBDIR += llvm SUBDIR += llvm-cheri SUBDIR += llvm-devel SUBDIR += llvm-morello SUBDIR += llvm10 SUBDIR += llvm11 SUBDIR += llvm12 SUBDIR += llvm13 SUBDIR += llvm14 SUBDIR += llvm15 SUBDIR += llvm16 SUBDIR += lm4tools SUBDIR += lmdbg SUBDIR += lndir SUBDIR += lnphost SUBDIR += loccount SUBDIR += lockfree-malloc SUBDIR += log4c SUBDIR += log4cplus SUBDIR += log4cpp SUBDIR += log4cxx SUBDIR += log4j SUBDIR += log4net SUBDIR += log4sh SUBDIR += log4shib SUBDIR += loguru SUBDIR += lokalize SUBDIR += loki SUBDIR += love SUBDIR += love07 SUBDIR += love08 SUBDIR += love10 SUBDIR += love5 SUBDIR += lpc21isp SUBDIR += lrmi SUBDIR += lua-argparse SUBDIR += lua-bitlib SUBDIR += lua-bitop SUBDIR += lua-cjson SUBDIR += lua-cqueues SUBDIR += lua-gettext SUBDIR += lua-language-server SUBDIR += lua-lgi SUBDIR += lua-libevent SUBDIR += lua-lpeg SUBDIR += lua-luacheck SUBDIR += lua-luarocks SUBDIR += lua-lunit SUBDIR += lua-mode SUBDIR += lua-posix SUBDIR += lua-pty SUBDIR += lua-rds-parser SUBDIR += lua-resty-string SUBDIR += lua-stdlib SUBDIR += lua-stdlib-debug SUBDIR += lua-stdlib-normalize SUBDIR += lua-sysctl SUBDIR += luabind SUBDIR += luafilesystem SUBDIR += luajava SUBDIR += lutok SUBDIR += luv SUBDIR += lwp SUBDIR += lxqt-build-tools SUBDIR += lyra SUBDIR += m17n-db SUBDIR += m17n-docs SUBDIR += m17n-inscript2 SUBDIR += m17n-lib SUBDIR += m4 SUBDIR += mage SUBDIR += magit SUBDIR += magit-devel SUBDIR += make++ SUBDIR += makedepend SUBDIR += malloy SUBDIR += marisa-trie SUBDIR += marl SUBDIR += massif-visualizer SUBDIR += mate-common SUBDIR += maven SUBDIR += maven-wrapper SUBDIR += maven363 SUBDIR += mcpp SUBDIR += mdb SUBDIR += mdds SUBDIR += menhir SUBDIR += mercator SUBDIR += mercurial SUBDIR += mergify SUBDIR += meson SUBDIR += meson-python SUBDIR += microsoft-gsl SUBDIR += mill SUBDIR += mimalloc SUBDIR += mimir SUBDIR += mingw32-bin-msvcrt SUBDIR += mingw32-directx SUBDIR += mingw32-gcc SUBDIR += mingw32-libffi SUBDIR += mingw32-libyaml SUBDIR += mingw32-openssl SUBDIR += mingw32-pdcurses SUBDIR += mingw32-pthreads SUBDIR += mingw32-zlib SUBDIR += mir-core SUBDIR += mk-configure SUBDIR += mm SUBDIR += mm-common SUBDIR += modd SUBDIR += mold SUBDIR += mongo-c-driver SUBDIR += mono-addins SUBDIR += mpatrol SUBDIR += mph SUBDIR += mrc SUBDIR += msbuild SUBDIR += msgpack-c SUBDIR += msgpack-cxx SUBDIR += msgpack-d SUBDIR += msgpuck SUBDIR += msitools SUBDIR += msp430-debug-stack SUBDIR += mspdebug SUBDIR += mstch SUBDIR += mtbl SUBDIR += muon SUBDIR += mustache SUBDIR += mutagen SUBDIR += myrepos SUBDIR += nana SUBDIR += nanopb SUBDIR += nant SUBDIR += nasm SUBDIR += naturaldocs SUBDIR += ncc SUBDIR += ncnf SUBDIR += ncurses SUBDIR += ndesk-dbus SUBDIR += ndesk-dbus-glib SUBDIR += ndesk-options SUBDIR += netscape-java40 SUBDIR += netsurf-buildsystem SUBDIR += newfile SUBDIR += newt SUBDIR += newtonsoft-json SUBDIR += nextpnr SUBDIR += nexus2-oss SUBDIR += nimble SUBDIR += nini SUBDIR += ninja SUBDIR += nlohmann-json SUBDIR += node-thrift SUBDIR += notcurses SUBDIR += notify-sharp SUBDIR += nox SUBDIR += npth SUBDIR += nsgenbind SUBDIR += nspr SUBDIR += nss_wrapper SUBDIR += nsync SUBDIR += nuitka SUBDIR += obby SUBDIR += objconv SUBDIR += objecthash SUBDIR += ocaml-annexlib SUBDIR += ocaml-calendar SUBDIR += ocaml-camljava SUBDIR += ocaml-camlp4 SUBDIR += ocaml-camlp5 SUBDIR += ocaml-camomile SUBDIR += ocaml-camomile-examples SUBDIR += ocaml-cfg SUBDIR += ocaml-classes SUBDIR += ocaml-cmdliner SUBDIR += ocaml-cppo SUBDIR += ocaml-dune SUBDIR += ocaml-extlib SUBDIR += ocaml-findlib SUBDIR += ocaml-ipaddr SUBDIR += ocaml-lacaml SUBDIR += ocaml-lwt SUBDIR += ocaml-magic SUBDIR += ocaml-ocamlbuild SUBDIR += ocaml-opam SUBDIR += ocaml-ounit SUBDIR += ocaml-parmap SUBDIR += ocaml-pcre SUBDIR += ocaml-pomap SUBDIR += ocaml-ppx-tools SUBDIR += ocaml-re SUBDIR += ocaml-react SUBDIR += ocaml-res SUBDIR += ocaml-result SUBDIR += ocaml-sdl SUBDIR += ocaml-sem SUBDIR += ocaml-sexplib SUBDIR += ocaml-topkg SUBDIR += ocaml-type_conv SUBDIR += ocaml-uchar SUBDIR += ocaml-ulex SUBDIR += ocaml-uutf SUBDIR += ocaml-xstr SUBDIR += ocaml-xstrp4 SUBDIR += oci-cli SUBDIR += ocl-icd SUBDIR += oclgrind SUBDIR += ode SUBDIR += ois SUBDIR += okteta SUBDIR += omake SUBDIR += omniORB SUBDIR += onetbb SUBDIR += oniguruma SUBDIR += open-beagle SUBDIR += open62541 SUBDIR += opencl SUBDIR += opencl-clang SUBDIR += opencvs SUBDIR += opendht SUBDIR += opengrok SUBDIR += openocd SUBDIR += openwince-include SUBDIR += orc SUBDIR += orcania SUBDIR += osc SUBDIR += ossp-al SUBDIR += ossp-cfg SUBDIR += ossp-ex SUBDIR += ossp-l2 SUBDIR += ossp-val SUBDIR += ossp-var SUBDIR += ossp-xds SUBDIR += p4 SUBDIR += p4.el SUBDIR += p4api SUBDIR += p4delta SUBDIR += p4genpatch SUBDIR += p5-AI-Pathfinding-AStar SUBDIR += p5-AI-Prolog SUBDIR += p5-ARGV-Struct SUBDIR += p5-AWS-Signature4 SUBDIR += p5-Acme-Comment SUBDIR += p5-Acme-Damn SUBDIR += p5-Acme-MetaSyntactic SUBDIR += p5-Adapter-Async SUBDIR += p5-Agent SUBDIR += p5-Algorithm-Accounting SUBDIR += p5-Algorithm-Annotate SUBDIR += p5-Algorithm-Backoff SUBDIR += p5-Algorithm-Binpack SUBDIR += p5-Algorithm-Bucketizer SUBDIR += p5-Algorithm-C3 SUBDIR += p5-Algorithm-ChooseSubsets SUBDIR += p5-Algorithm-Cluster SUBDIR += p5-Algorithm-Cron SUBDIR += p5-Algorithm-Dependency SUBDIR += p5-Algorithm-Dependency-Objects SUBDIR += p5-Algorithm-Diff SUBDIR += p5-Algorithm-Evolutionary SUBDIR += p5-Algorithm-FloodControl SUBDIR += p5-Algorithm-IncludeExclude SUBDIR += p5-Algorithm-Interval2Prefix SUBDIR += p5-Algorithm-LCS SUBDIR += p5-Algorithm-LUHN SUBDIR += p5-Algorithm-MarkovChain SUBDIR += p5-Algorithm-Merge SUBDIR += p5-Algorithm-MinMax SUBDIR += p5-Algorithm-NaiveBayes SUBDIR += p5-Algorithm-Networksort SUBDIR += p5-Algorithm-Numerical-Shuffle SUBDIR += p5-Algorithm-Permute SUBDIR += p5-Algorithm-SVM SUBDIR += p5-Alias SUBDIR += p5-Alien-Base-ModuleBuild SUBDIR += p5-Alien-Build SUBDIR += p5-Alien-LibGumbo SUBDIR += p5-Alien-SDL SUBDIR += p5-Alzabo SUBDIR += p5-Any-Daemon SUBDIR += p5-Any-Moose SUBDIR += p5-Any-Moose-Convert SUBDIR += p5-AnyData SUBDIR += p5-AnyEvent SUBDIR += p5-AnyEvent-AIO SUBDIR += p5-AnyEvent-Connection SUBDIR += p5-AnyEvent-DBI SUBDIR += p5-AnyEvent-DBI-Abstract SUBDIR += p5-AnyEvent-DBus SUBDIR += p5-AnyEvent-Filesys-Notify SUBDIR += p5-AnyEvent-Fork SUBDIR += p5-AnyEvent-Gearman SUBDIR += p5-AnyEvent-Graphite SUBDIR += p5-AnyEvent-I3 SUBDIR += p5-AnyEvent-MessagePack SUBDIR += p5-AnyEvent-RPC SUBDIR += p5-AnyEvent-Run SUBDIR += p5-AnyEvent-Subprocess SUBDIR += p5-AnyEvent-Task SUBDIR += p5-AnyEvent-Worker SUBDIR += p5-AnyMQ SUBDIR += p5-App-Build SUBDIR += p5-App-CLI SUBDIR += p5-App-CLI-Extension SUBDIR += p5-App-Cache SUBDIR += p5-App-Cmd SUBDIR += p5-App-Control SUBDIR += p5-App-FatPacker SUBDIR += p5-App-GitGot SUBDIR += p5-App-GitHub SUBDIR += p5-App-Info SUBDIR += p5-App-Options SUBDIR += p5-App-Rad SUBDIR += p5-App-SD SUBDIR += p5-App-SVN-Bisect SUBDIR += p5-App-Trace SUBDIR += p5-App-cpanminus SUBDIR += p5-App-cpanminus-reporter SUBDIR += p5-App-cpanoutdated SUBDIR += p5-App-local-lib-helper SUBDIR += p5-App-perlbrew SUBDIR += p5-App-scan_prereqs_cpanfile SUBDIR += p5-AppConfig SUBDIR += p5-AppConfig-Std SUBDIR += p5-Array-Group SUBDIR += p5-Array-Heap SUBDIR += p5-Array-Iterator SUBDIR += p5-Array-Unique SUBDIR += p5-Array-Window SUBDIR += p5-Asm-Preproc SUBDIR += p5-Async-Interrupt SUBDIR += p5-Async-MergePoint SUBDIR += p5-AtExit SUBDIR += p5-Attribute-Handlers SUBDIR += p5-Attribute-Handlers-Prospective SUBDIR += p5-Attribute-Persistent SUBDIR += p5-AutoLoader SUBDIR += p5-AutoXS-Header SUBDIR += p5-Avro SUBDIR += p5-B-C SUBDIR += p5-B-COW SUBDIR += p5-B-Compiling SUBDIR += p5-B-Debug SUBDIR += p5-B-Deobfuscate SUBDIR += p5-B-Flags SUBDIR += p5-B-Generate SUBDIR += p5-B-Graph SUBDIR += p5-B-Hooks-AtRuntime SUBDIR += p5-B-Hooks-EndOfScope SUBDIR += p5-B-Hooks-OP-Annotation SUBDIR += p5-B-Hooks-OP-Check SUBDIR += p5-B-Hooks-OP-Check-EntersubForCV SUBDIR += p5-B-Hooks-OP-PPAddr SUBDIR += p5-B-Hooks-Parser SUBDIR += p5-B-Keywords SUBDIR += p5-B-OPCheck SUBDIR += p5-B-Size2 SUBDIR += p5-B-Utils SUBDIR += p5-BFD SUBDIR += p5-BS-Event SUBDIR += p5-BSD-Resource SUBDIR += p5-BSD-devstat SUBDIR += p5-BSD-stat SUBDIR += p5-BZ-Client SUBDIR += p5-Badger SUBDIR += p5-Benchmark-Timer SUBDIR += p5-Best SUBDIR += p5-Border-Style SUBDIR += p5-BorderStyle SUBDIR += p5-BorderStyleBase SUBDIR += p5-BorderStyles-Standard SUBDIR += p5-Brannigan SUBDIR += p5-Bread-Board SUBDIR += p5-Bread-Board-Declare SUBDIR += p5-Bundle-Perl6 SUBDIR += p5-C-Scan SUBDIR += p5-CBOR-XS SUBDIR += p5-CHI SUBDIR += p5-CHI-Driver-DBI SUBDIR += p5-CLASS SUBDIR += p5-CLI-Osprey SUBDIR += p5-CPAN-Changes SUBDIR += p5-CPAN-Checksums SUBDIR += p5-CPAN-DistnameInfo SUBDIR += p5-CPAN-Inject SUBDIR += p5-CPAN-Meta SUBDIR += p5-CPAN-Meta-Check SUBDIR += p5-CPAN-Meta-Requirements SUBDIR += p5-CPAN-Meta-YAML SUBDIR += p5-CPAN-Mini SUBDIR += p5-CPAN-Perl-Releases SUBDIR += p5-CPAN-Recent-Uploads SUBDIR += p5-CPAN-Reporter SUBDIR += p5-CPAN-Reporter-Smoker SUBDIR += p5-CPAN-SQLite SUBDIR += p5-CPAN-Site SUBDIR += p5-CPAN-Testers-Common-Client SUBDIR += p5-CPAN-Testers-Report SUBDIR += p5-CPAN-Uploader SUBDIR += p5-CPAN-YACSmoke SUBDIR += p5-CPANPLUS SUBDIR += p5-CPANPLUS-Dist-Build SUBDIR += p5-CPS SUBDIR += p5-CPU-Z80-Assembler SUBDIR += p5-Cache SUBDIR += p5-Cache-AgainstFile SUBDIR += p5-Cache-Cache SUBDIR += p5-Cache-FastMmap SUBDIR += p5-Cache-LRU SUBDIR += p5-Cache-Memcached-Tie SUBDIR += p5-Cache-Mmap SUBDIR += p5-Cache-Simple-TimedExpiry SUBDIR += p5-Cairo-GObject SUBDIR += p5-Calendar-Simple SUBDIR += p5-Call-Context SUBDIR += p5-Callback-Frame SUBDIR += p5-Canary-Stability SUBDIR += p5-Capture-Tiny SUBDIR += p5-Capture-Tiny-Extended SUBDIR += p5-Carp SUBDIR += p5-Carp-Always SUBDIR += p5-Carp-Always-Color SUBDIR += p5-Carp-Assert SUBDIR += p5-Carp-Assert-More SUBDIR += p5-Carp-Clan SUBDIR += p5-Carp-Clan-Share SUBDIR += p5-Carp-Datum SUBDIR += p5-Carp-REPL SUBDIR += p5-Check-ISA SUBDIR += p5-Child SUBDIR += p5-Chooser SUBDIR += p5-Class-Accessor SUBDIR += p5-Class-Accessor-Chained SUBDIR += p5-Class-Accessor-Children SUBDIR += p5-Class-Accessor-Complex SUBDIR += p5-Class-Accessor-Constructor SUBDIR += p5-Class-Accessor-Fast-Contained SUBDIR += p5-Class-Accessor-Fast-XS SUBDIR += p5-Class-Accessor-Grouped SUBDIR += p5-Class-Accessor-Installer SUBDIR += p5-Class-Accessor-Lite SUBDIR += p5-Class-Accessor-Lvalue SUBDIR += p5-Class-Accessor-Named SUBDIR += p5-Class-Adapter SUBDIR += p5-Class-AlzaboWrapper SUBDIR += p5-Class-ArrayObjects SUBDIR += p5-Class-AutoClass SUBDIR += p5-Class-Autouse SUBDIR += p5-Class-Base SUBDIR += p5-Class-BlackHole SUBDIR += p5-Class-C3 SUBDIR += p5-Class-C3-Adopt-NEXT SUBDIR += p5-Class-C3-Componentised SUBDIR += p5-Class-C3-XS SUBDIR += p5-Class-Closure SUBDIR += p5-Class-CodeStyler SUBDIR += p5-Class-Component SUBDIR += p5-Class-Constant SUBDIR += p5-Class-Container SUBDIR += p5-Class-Contract SUBDIR += p5-Class-Data-ConfigHash SUBDIR += p5-Class-Data-Inheritable SUBDIR += p5-Class-Data-Lite SUBDIR += p5-Class-Date SUBDIR += p5-Class-Declare SUBDIR += p5-Class-Default SUBDIR += p5-Class-Delegation SUBDIR += p5-Class-EHierarchy SUBDIR += p5-Class-ErrorHandler SUBDIR += p5-Class-Factory SUBDIR += p5-Class-Factory-Util SUBDIR += p5-Class-Field SUBDIR += p5-Class-Fields SUBDIR += p5-Class-Forward SUBDIR += p5-Class-Generate SUBDIR += p5-Class-Gomor SUBDIR += p5-Class-Handle SUBDIR += p5-Class-Hook SUBDIR += p5-Class-ISA SUBDIR += p5-Class-Inner SUBDIR += p5-Class-InsideOut SUBDIR += p5-Class-Inspector SUBDIR += p5-Class-Interfaces SUBDIR += p5-Class-Load SUBDIR += p5-Class-Load-XS SUBDIR += p5-Class-Loader SUBDIR += p5-Class-MakeMethods SUBDIR += p5-Class-Measure SUBDIR += p5-Class-Method-Modifiers SUBDIR += p5-Class-Method-Modifiers-Fast SUBDIR += p5-Class-MethodMaker SUBDIR += p5-Class-MethodMapper SUBDIR += p5-Class-Mix SUBDIR += p5-Class-Mixin SUBDIR += p5-Class-MixinFactory SUBDIR += p5-Class-Multimethods SUBDIR += p5-Class-Multimethods-Pure SUBDIR += p5-Class-NamedParms SUBDIR += p5-Class-Null SUBDIR += p5-Class-OOorNO SUBDIR += p5-Class-ObjectTemplate SUBDIR += p5-Class-ObjectTemplate-DB SUBDIR += p5-Class-Observable SUBDIR += p5-Class-ParmList SUBDIR += p5-Class-Prototyped SUBDIR += p5-Class-ReturnValue SUBDIR += p5-Class-Roles SUBDIR += p5-Class-STL-Containers SUBDIR += p5-Class-Singleton SUBDIR += p5-Class-Spiffy SUBDIR += p5-Class-StateMachine SUBDIR += p5-Class-Std SUBDIR += p5-Class-Std-Fast SUBDIR += p5-Class-Std-Utils SUBDIR += p5-Class-StrongSingleton SUBDIR += p5-Class-Tangram SUBDIR += p5-Class-Throwable SUBDIR += p5-Class-Tiny SUBDIR += p5-Class-Tiny-Chained SUBDIR += p5-Class-Tom SUBDIR += p5-Class-Trigger SUBDIR += p5-Class-Unload SUBDIR += p5-Class-Virtual SUBDIR += p5-Class-WhiteHole SUBDIR += p5-Class-Workflow SUBDIR += p5-Class-XPath SUBDIR += p5-Class-XSAccessor SUBDIR += p5-Clone SUBDIR += p5-Clone-Choose SUBDIR += p5-Clone-Fast SUBDIR += p5-Clone-More SUBDIR += p5-Clone-PP SUBDIR += p5-Code-Perl SUBDIR += p5-Color-ANSI-Util SUBDIR += p5-Color-RGB-Util SUBDIR += p5-Color-Theme-Role SUBDIR += p5-ColorThemeBase-Static SUBDIR += p5-ColorThemeUtil-ANSI SUBDIR += p5-ColorThemes-Standard SUBDIR += p5-Commandable SUBDIR += p5-Commands-Guarded SUBDIR += p5-CommitBit SUBDIR += p5-Compiler-Lexer SUBDIR += p5-Complete-Common SUBDIR += p5-Complete-Path SUBDIR += p5-Complete-Sah SUBDIR += p5-Complete-Sequence SUBDIR += p5-Complete-Util SUBDIR += p5-Config-AST SUBDIR += p5-Config-AWS SUBDIR += p5-Config-Any SUBDIR += p5-Config-ApacheFormat SUBDIR += p5-Config-Auto SUBDIR += p5-Config-AutoConf SUBDIR += p5-Config-Fast SUBDIR += p5-Config-General SUBDIR += p5-Config-GitLike SUBDIR += p5-Config-Grammar SUBDIR += p5-Config-INI SUBDIR += p5-Config-INI-Reader-Ordered SUBDIR += p5-Config-INI-Simple SUBDIR += p5-Config-Identity SUBDIR += p5-Config-IniFiles SUBDIR += p5-Config-IniHash SUBDIR += p5-Config-IniRegEx SUBDIR += p5-Config-JFDI SUBDIR += p5-Config-JSON SUBDIR += p5-Config-MVP SUBDIR += p5-Config-MVP-Reader-INI SUBDIR += p5-Config-Merge SUBDIR += p5-Config-Model SUBDIR += p5-Config-Model-Backend-Yaml SUBDIR += p5-Config-Model-Tester SUBDIR += p5-Config-MySQL SUBDIR += p5-Config-Objective SUBDIR += p5-Config-Options SUBDIR += p5-Config-Parser SUBDIR += p5-Config-Parser-ldap SUBDIR += p5-Config-Perl-V SUBDIR += p5-Config-Properties SUBDIR += p5-Config-Record SUBDIR += p5-Config-Setting SUBDIR += p5-Config-Simple SUBDIR += p5-Config-Std SUBDIR += p5-Config-Tiny SUBDIR += p5-Config-Validator SUBDIR += p5-Config-Versioned SUBDIR += p5-Config-Wrest SUBDIR += p5-Config-YAML SUBDIR += p5-ConfigReader SUBDIR += p5-ConfigReader-Simple SUBDIR += p5-Connector SUBDIR += p5-Const-Exporter SUBDIR += p5-Const-Fast SUBDIR += p5-Context-Preserve SUBDIR += p5-Contextual-Return SUBDIR += p5-Convert-Scalar SUBDIR += p5-Coro SUBDIR += p5-Curses SUBDIR += p5-Curses-Application SUBDIR += p5-Curses-Forms SUBDIR += p5-Curses-UI SUBDIR += p5-Curses-Widgets SUBDIR += p5-Cvs SUBDIR += p5-Cwd-Guard SUBDIR += p5-DB_File-Lock SUBDIR += p5-Daemon-Control SUBDIR += p5-Dancer-Debug SUBDIR += p5-Dancer-Logger-Syslog SUBDIR += p5-Danga-Socket SUBDIR += p5-Danga-Socket-Callback SUBDIR += p5-Data-ACL SUBDIR += p5-Data-Alias SUBDIR += p5-Data-Binary SUBDIR += p5-Data-Bind SUBDIR += p5-Data-Capture SUBDIR += p5-Data-ClearSilver-HDF SUBDIR += p5-Data-Clone SUBDIR += p5-Data-Compare SUBDIR += p5-Data-Diver SUBDIR += p5-Data-Dmp SUBDIR += p5-Data-Domain SUBDIR += p5-Data-Dump SUBDIR += p5-Data-Dump-Color SUBDIR += p5-Data-Dump-Streamer SUBDIR += p5-Data-DumpXML SUBDIR += p5-Data-Dumper SUBDIR += p5-Data-Dumper-Concise SUBDIR += p5-Data-Dumper-Perltidy SUBDIR += p5-Data-Dumper-Simple SUBDIR += p5-Data-Flow SUBDIR += p5-Data-GUID SUBDIR += p5-Data-Grouper SUBDIR += p5-Data-HashArray SUBDIR += p5-Data-HexDump SUBDIR += p5-Data-HexDump-Range SUBDIR += p5-Data-Hexdumper SUBDIR += p5-Data-Hexify SUBDIR += p5-Data-Hierarchy SUBDIR += p5-Data-IEEE754 SUBDIR += p5-Data-Inherited SUBDIR += p5-Data-Inspect SUBDIR += p5-Data-Integer SUBDIR += p5-Data-JavaScript-Anon SUBDIR += p5-Data-Lazy SUBDIR += p5-Data-Localize SUBDIR += p5-Data-Lock SUBDIR += p5-Data-MessagePack SUBDIR += p5-Data-MessagePack-Stream SUBDIR += p5-Data-Miscellany SUBDIR += p5-Data-Model SUBDIR += p5-Data-Munge SUBDIR += p5-Data-Object SUBDIR += p5-Data-Object-Args SUBDIR += p5-Data-Object-Attributes SUBDIR += p5-Data-Object-Cast SUBDIR += p5-Data-Object-Class SUBDIR += p5-Data-Object-ClassHas SUBDIR += p5-Data-Object-Data SUBDIR += p5-Data-Object-Exception SUBDIR += p5-Data-Object-Kind SUBDIR += p5-Data-Object-Name SUBDIR += p5-Data-Object-Opts SUBDIR += p5-Data-Object-Plugin SUBDIR += p5-Data-Object-Role SUBDIR += p5-Data-Object-Role-Arguable SUBDIR += p5-Data-Object-Role-Buildable SUBDIR += p5-Data-Object-Role-Dumpable SUBDIR += p5-Data-Object-Role-Errable SUBDIR += p5-Data-Object-Role-Formulatable SUBDIR += p5-Data-Object-Role-Immutable SUBDIR += p5-Data-Object-Role-Pluggable SUBDIR += p5-Data-Object-Role-Proxyable SUBDIR += p5-Data-Object-Role-Stashable SUBDIR += p5-Data-Object-Role-Throwable SUBDIR += p5-Data-Object-Role-Tryable SUBDIR += p5-Data-Object-RoleHas SUBDIR += p5-Data-Object-Space SUBDIR += p5-Data-Object-State SUBDIR += p5-Data-Object-Struct SUBDIR += p5-Data-Object-Try SUBDIR += p5-Data-Object-Types SUBDIR += p5-Data-Object-Vars SUBDIR += p5-Data-ObjectDriver SUBDIR += p5-Data-OptList SUBDIR += p5-Data-Page-NoTotalEntries SUBDIR += p5-Data-Page-Pageset SUBDIR += p5-Data-ParseBinary SUBDIR += p5-Data-Path SUBDIR += p5-Data-Peek SUBDIR += p5-Data-Perl SUBDIR += p5-Data-Printer SUBDIR += p5-Data-Properties SUBDIR += p5-Data-Rand SUBDIR += p5-Data-Rand-Obscure SUBDIR += p5-Data-Random SUBDIR += p5-Data-Range-Compare SUBDIR += p5-Data-Record SUBDIR += p5-Data-Recursive-Encode SUBDIR += p5-Data-Remember SUBDIR += p5-Data-Rmap SUBDIR += p5-Data-RoundRobin SUBDIR += p5-Data-Rx SUBDIR += p5-Data-SExpression SUBDIR += p5-Data-Sah-Normalize SUBDIR += p5-Data-Section SUBDIR += p5-Data-Section-Simple SUBDIR += p5-Data-Serializable SUBDIR += p5-Data-Serializer SUBDIR += p5-Data-Serializer-Sereal SUBDIR += p5-Data-ShowTable SUBDIR += p5-Data-Stag SUBDIR += p5-Data-Stream-Bulk SUBDIR += p5-Data-Structure-Util SUBDIR += p5-Data-Swap SUBDIR += p5-Data-Table SUBDIR += p5-Data-Taxonomy-Tags SUBDIR += p5-Data-TemporaryBag SUBDIR += p5-Data-Throttler SUBDIR += p5-Data-Throttler-Memcached SUBDIR += p5-Data-Thunk SUBDIR += p5-Data-TreeDumper SUBDIR += p5-Data-TreeDumper-Renderer-GTK SUBDIR += p5-Data-Types SUBDIR += p5-Data-URIEncode SUBDIR += p5-Data-UUID SUBDIR += p5-Data-Uniqid SUBDIR += p5-Data-Unixish SUBDIR += p5-Data-Util SUBDIR += p5-Data-Validate SUBDIR += p5-Data-Validator SUBDIR += p5-Data-Visitor SUBDIR += p5-Data-Visitor-Encode SUBDIR += p5-Data-Visitor-Tiny SUBDIR += p5-Data-Walk SUBDIR += p5-DataStruct-Flat SUBDIR += p5-Date-Business SUBDIR += p5-Date-Calc SUBDIR += p5-Date-Calc-Iterator SUBDIR += p5-Date-Calc-XS SUBDIR += p5-Date-DayOfWeek SUBDIR += p5-Date-Easter SUBDIR += p5-Date-Extract SUBDIR += p5-Date-EzDate SUBDIR += p5-Date-Holidays-DK SUBDIR += p5-Date-ICal SUBDIR += p5-Date-ISO SUBDIR += p5-Date-Leapyear SUBDIR += p5-Date-Manip SUBDIR += p5-Date-Pcalc SUBDIR += p5-Date-Piece SUBDIR += p5-Date-Range SUBDIR += p5-Date-Roman SUBDIR += p5-Date-Simple SUBDIR += p5-DateConvert SUBDIR += p5-DateTime SUBDIR += p5-DateTime-Astro SUBDIR += p5-DateTime-Calendar-Chinese SUBDIR += p5-DateTime-Calendar-Christian SUBDIR += p5-DateTime-Calendar-Discordian SUBDIR += p5-DateTime-Calendar-FrenchRevolutionary SUBDIR += p5-DateTime-Calendar-Hebrew SUBDIR += p5-DateTime-Calendar-Japanese SUBDIR += p5-DateTime-Calendar-Julian SUBDIR += p5-DateTime-Calendar-Mayan SUBDIR += p5-DateTime-Calendar-Pataphysical SUBDIR += p5-DateTime-Cron-Simple SUBDIR += p5-DateTime-Event-Chinese SUBDIR += p5-DateTime-Event-Cron SUBDIR += p5-DateTime-Event-Easter SUBDIR += p5-DateTime-Event-ICal SUBDIR += p5-DateTime-Event-Lunar SUBDIR += p5-DateTime-Event-NameDay SUBDIR += p5-DateTime-Event-Random SUBDIR += p5-DateTime-Event-Recurrence SUBDIR += p5-DateTime-Event-Sunrise SUBDIR += p5-DateTime-Event-Zodiac SUBDIR += p5-DateTime-Fiscal-Year SUBDIR += p5-DateTime-Format-Baby SUBDIR += p5-DateTime-Format-Bork SUBDIR += p5-DateTime-Format-Builder SUBDIR += p5-DateTime-Format-DBI SUBDIR += p5-DateTime-Format-DateManip SUBDIR += p5-DateTime-Format-DateParse SUBDIR += p5-DateTime-Format-Duration SUBDIR += p5-DateTime-Format-Epoch SUBDIR += p5-DateTime-Format-Excel SUBDIR += p5-DateTime-Format-Flexible SUBDIR += p5-DateTime-Format-HTTP SUBDIR += p5-DateTime-Format-IBeat SUBDIR += p5-DateTime-Format-ICal SUBDIR += p5-DateTime-Format-ISO8601 SUBDIR += p5-DateTime-Format-Mail SUBDIR += p5-DateTime-Format-MySQL SUBDIR += p5-DateTime-Format-Natural SUBDIR += p5-DateTime-Format-Oracle SUBDIR += p5-DateTime-Format-Pg SUBDIR += p5-DateTime-Format-RFC3339 SUBDIR += p5-DateTime-Format-RSS SUBDIR += p5-DateTime-Format-Roman SUBDIR += p5-DateTime-Format-SQLite SUBDIR += p5-DateTime-Format-Strptime SUBDIR += p5-DateTime-Format-W3CDTF SUBDIR += p5-DateTime-Format-XSD SUBDIR += p5-DateTime-Functions SUBDIR += p5-DateTime-HiRes SUBDIR += p5-DateTime-Incomplete SUBDIR += p5-DateTime-Locale SUBDIR += p5-DateTime-Precise SUBDIR += p5-DateTime-Set SUBDIR += p5-DateTime-TimeZone SUBDIR += p5-DateTime-TimeZone-Alias SUBDIR += p5-DateTime-TimeZone-LMT SUBDIR += p5-DateTime-Util-Calc SUBDIR += p5-DateTimeX-Easy SUBDIR += p5-Debug-Client SUBDIR += p5-Decision-ACL SUBDIR += p5-Declare-Constraints-Simple SUBDIR += p5-DefHash SUBDIR += p5-Devel-ArgNames SUBDIR += p5-Devel-Autoflush SUBDIR += p5-Devel-Backtrace SUBDIR += p5-Devel-BeginLift SUBDIR += p5-Devel-CallChecker SUBDIR += p5-Devel-Caller SUBDIR += p5-Devel-Caller-IgnoreNamespaces SUBDIR += p5-Devel-Caller-Perl SUBDIR += p5-Devel-Callsite SUBDIR += p5-Devel-CheckBin SUBDIR += p5-Devel-CheckCompiler SUBDIR += p5-Devel-CheckLib SUBDIR += p5-Devel-CheckOS SUBDIR += p5-Devel-Confess SUBDIR += p5-Devel-Constants SUBDIR += p5-Devel-CoreStack SUBDIR += p5-Devel-Cover SUBDIR += p5-Devel-Cover-Report-Clover SUBDIR += p5-Devel-Cycle SUBDIR += p5-Devel-DProfPP SUBDIR += p5-Devel-Declare SUBDIR += p5-Devel-Declare-Parser SUBDIR += p5-Devel-Diagram SUBDIR += p5-Devel-Ditto SUBDIR += p5-Devel-Dumpvar SUBDIR += p5-Devel-EvalContext SUBDIR += p5-Devel-Events SUBDIR += p5-Devel-Events-Objects SUBDIR += p5-Devel-FindPerl SUBDIR += p5-Devel-Gladiator SUBDIR += p5-Devel-GlobalDestruction SUBDIR += p5-Devel-GlobalDestruction-XS SUBDIR += p5-Devel-Hide SUBDIR += p5-Devel-InheritNamespace SUBDIR += p5-Devel-KYTProf SUBDIR += p5-Devel-Leak SUBDIR += p5-Devel-Leak-Cb SUBDIR += p5-Devel-Leak-Object SUBDIR += p5-Devel-LeakGuard-Object SUBDIR += p5-Devel-LeakTrace SUBDIR += p5-Devel-LexAlias SUBDIR += p5-Devel-MAT SUBDIR += p5-Devel-MAT-Dumper SUBDIR += p5-Devel-Messenger SUBDIR += p5-Devel-Modlist SUBDIR += p5-Devel-NYTProf SUBDIR += p5-Devel-OverloadInfo SUBDIR += p5-Devel-PPPort SUBDIR += p5-Devel-PackagePath SUBDIR += p5-Devel-PartialDump SUBDIR += p5-Devel-PatchPerl SUBDIR += p5-Devel-Platform-Info SUBDIR += p5-Devel-Pointer SUBDIR += p5-Devel-Profile SUBDIR += p5-Devel-REPL SUBDIR += p5-Devel-Refactor SUBDIR += p5-Devel-Refcount SUBDIR += p5-Devel-Required SUBDIR += p5-Devel-RingBuffer SUBDIR += p5-Devel-STrace SUBDIR += p5-Devel-SimpleTrace SUBDIR += p5-Devel-Size SUBDIR += p5-Devel-Size-Report SUBDIR += p5-Devel-SmallProf SUBDIR += p5-Devel-StackTrace SUBDIR += p5-Devel-StackTrace-AsHTML SUBDIR += p5-Devel-StackTrace-WithLexicals SUBDIR += p5-Devel-StealthDebug SUBDIR += p5-Devel-StrictMode SUBDIR += p5-Devel-Symdump SUBDIR += p5-Devel-Timer SUBDIR += p5-Devel-Trace SUBDIR += p5-Devel-TraceCalls SUBDIR += p5-Devel-TraceUse SUBDIR += p5-Devel-ebug SUBDIR += p5-Devel-ptkdb SUBDIR += p5-Device-USB SUBDIR += p5-Digest-TransformPath SUBDIR += p5-Dir-Project SUBDIR += p5-Dir-Self SUBDIR += p5-Dir-Watch SUBDIR += p5-Directory-Queue SUBDIR += p5-Directory-Scratch SUBDIR += p5-Directory-Scratch-Structured SUBDIR += p5-Dist-CheckConflicts SUBDIR += p5-Dist-Joseki SUBDIR += p5-Dist-Metadata SUBDIR += p5-Dist-Zilla SUBDIR += p5-Doxygen-Filter-Perl SUBDIR += p5-DynaLoader-Functions SUBDIR += p5-EV SUBDIR += p5-Env-PS1 SUBDIR += p5-Env-Path SUBDIR += p5-Error-Helper SUBDIR += p5-Eval-Closure SUBDIR += p5-Eval-Context SUBDIR += p5-Eval-LineNumbers SUBDIR += p5-Eval-WithLexicals SUBDIR += p5-Event SUBDIR += p5-Event-ExecFlow SUBDIR += p5-Event-Join SUBDIR += p5-Event-Lib SUBDIR += p5-Event-Notify SUBDIR += p5-Event-RPC SUBDIR += p5-Every SUBDIR += p5-Exception-Class SUBDIR += p5-Exception-Class-TryCatch SUBDIR += p5-Exception-Handler SUBDIR += p5-Expect-Simple SUBDIR += p5-ExportTo SUBDIR += p5-Exporter SUBDIR += p5-Exporter-Declare SUBDIR += p5-Exporter-Easy SUBDIR += p5-Exporter-Lite SUBDIR += p5-Exporter-Tidy SUBDIR += p5-Exporter-Tiny SUBDIR += p5-ExtUtils-AutoInstall SUBDIR += p5-ExtUtils-CBuilder SUBDIR += p5-ExtUtils-CChecker SUBDIR += p5-ExtUtils-Config SUBDIR += p5-ExtUtils-Constant SUBDIR += p5-ExtUtils-CppGuess SUBDIR += p5-ExtUtils-Depends SUBDIR += p5-ExtUtils-Helpers SUBDIR += p5-ExtUtils-Install SUBDIR += p5-ExtUtils-InstallPaths SUBDIR += p5-ExtUtils-LibBuilder SUBDIR += p5-ExtUtils-MakeMaker SUBDIR += p5-ExtUtils-MakeMaker-CPANfile SUBDIR += p5-ExtUtils-MakeMaker-Coverage SUBDIR += p5-ExtUtils-Manifest SUBDIR += p5-ExtUtils-ParseXS SUBDIR += p5-ExtUtils-PkgConfig SUBDIR += p5-ExtUtils-XSBuilder SUBDIR += p5-ExtUtils-XSpp SUBDIR += p5-FFI-C-Stat SUBDIR += p5-FFI-CheckLib SUBDIR += p5-FFI-Platypus SUBDIR += p5-FFI-Platypus-Declare SUBDIR += p5-FFI-Platypus-Type-Enum SUBDIR += p5-FFI-Platypus-Type-PtrObject SUBDIR += p5-FSA-Rules SUBDIR += p5-Feature-Compat-Try SUBDIR += p5-Fennec-Lite SUBDIR += p5-File-Append-TempFile SUBDIR += p5-File-Assets SUBDIR += p5-File-Attributes SUBDIR += p5-File-Attributes-Recursive SUBDIR += p5-File-BOM SUBDIR += p5-File-BaseDir SUBDIR += p5-File-BasicFlock SUBDIR += p5-File-Binary SUBDIR += p5-File-Cache SUBDIR += p5-File-Cat SUBDIR += p5-File-ChangeNotify SUBDIR += p5-File-ConfigDir SUBDIR += p5-File-Copy-Link SUBDIR += p5-File-Copy-Recursive SUBDIR += p5-File-Copy-Recursive-Reduced SUBDIR += p5-File-CountLines SUBDIR += p5-File-CreationTime SUBDIR += p5-File-DesktopEntry SUBDIR += p5-File-Dir-Dumper SUBDIR += p5-File-DirSync SUBDIR += p5-File-ExtAttr SUBDIR += p5-File-FcntlLock SUBDIR += p5-File-Find-Closures SUBDIR += p5-File-Find-Object SUBDIR += p5-File-Find-Object-Rule SUBDIR += p5-File-Find-Rule SUBDIR += p5-File-Find-Rule-Filesys-Virtual SUBDIR += p5-File-Find-Rule-Perl SUBDIR += p5-File-Find-Rule-VCS SUBDIR += p5-File-Finder SUBDIR += p5-File-Flat SUBDIR += p5-File-Flock SUBDIR += p5-File-Flock-Retry SUBDIR += p5-File-FnMatch SUBDIR += p5-File-Grep SUBDIR += p5-File-HStore SUBDIR += p5-File-HomeDir SUBDIR += p5-File-HomeDir-PathClass SUBDIR += p5-File-HomeDir-Tiny SUBDIR += p5-File-Iterator SUBDIR += p5-File-LibMagic SUBDIR += p5-File-LoadLines SUBDIR += p5-File-MMagic SUBDIR += p5-File-MMagic-XS SUBDIR += p5-File-Map SUBDIR += p5-File-MimeInfo SUBDIR += p5-File-Modified SUBDIR += p5-File-Monitor SUBDIR += p5-File-NCopy SUBDIR += p5-File-NFSLock SUBDIR += p5-File-Path SUBDIR += p5-File-Path-Expand SUBDIR += p5-File-Path-Tiny SUBDIR += p5-File-PathConvert SUBDIR += p5-File-Pid SUBDIR += p5-File-Pid-Quick SUBDIR += p5-File-Policy SUBDIR += p5-File-Random SUBDIR += p5-File-ReadBackwards SUBDIR += p5-File-Remove SUBDIR += p5-File-SafeDO SUBDIR += p5-File-SearchPath SUBDIR += p5-File-Share SUBDIR += p5-File-ShareDir SUBDIR += p5-File-ShareDir-Dist SUBDIR += p5-File-ShareDir-Install SUBDIR += p5-File-ShareDir-PAR SUBDIR += p5-File-ShareDir-PathClass SUBDIR += p5-File-ShareDir-ProjectDistDir SUBDIR += p5-File-ShareDir-Tarball SUBDIR += p5-File-Slurp SUBDIR += p5-File-Slurp-Tiny SUBDIR += p5-File-Slurp-Tree SUBDIR += p5-File-Slurper SUBDIR += p5-File-Spec-Native SUBDIR += p5-File-Stream SUBDIR += p5-File-Sync SUBDIR += p5-File-Tail SUBDIR += p5-File-Tail-Dir SUBDIR += p5-File-Tail-Multi SUBDIR += p5-File-Tail-Scribe SUBDIR += p5-File-Temp SUBDIR += p5-File-Tempdir SUBDIR += p5-File-Touch SUBDIR += p5-File-TreeCreate SUBDIR += p5-File-Type SUBDIR += p5-File-Util SUBDIR += p5-File-Write-Rotate SUBDIR += p5-File-chdir SUBDIR += p5-File-chmod SUBDIR += p5-File-pushd SUBDIR += p5-FileHandle-Fmode SUBDIR += p5-FileHandle-Unget SUBDIR += p5-Filesys-Notify-KQueue SUBDIR += p5-Filesys-Notify-Simple SUBDIR += p5-Filesys-Virtual SUBDIR += p5-Filesys-Virtual-Plain SUBDIR += p5-Filter SUBDIR += p5-Filter-Template SUBDIR += p5-Find-Lib SUBDIR += p5-FindBin-libs SUBDIR += p5-Forest SUBDIR += p5-Form-Sensible SUBDIR += p5-FreeBSD-i386-Ptrace SUBDIR += p5-FreezeThaw SUBDIR += p5-Function-Fallback-CoreOrPP SUBDIR += p5-Function-Parameters SUBDIR += p5-Future SUBDIR += p5-Future-AsyncAwait SUBDIR += p5-Future-IO SUBDIR += p5-Gearman SUBDIR += p5-Gearman-Client-Async SUBDIR += p5-Gearman-Server SUBDIR += p5-Gearman-XS SUBDIR += p5-Geo-JSON SUBDIR += p5-Geo-ShapeFile SUBDIR += p5-Getargs-Long SUBDIR += p5-Getopt-ArgvFile SUBDIR += p5-Getopt-Attribute SUBDIR += p5-Getopt-Compact SUBDIR += p5-Getopt-Compact-WithCmd SUBDIR += p5-Getopt-Declare SUBDIR += p5-Getopt-EX SUBDIR += p5-Getopt-Euclid SUBDIR += p5-Getopt-GUI-Long SUBDIR += p5-Getopt-Long SUBDIR += p5-Getopt-Long-Descriptive SUBDIR += p5-Getopt-Tabular SUBDIR += p5-Git-PurePerl SUBDIR += p5-Git-Repository SUBDIR += p5-Git-Repository-Plugin-Log SUBDIR += p5-Git-Sub SUBDIR += p5-Git-Version-Compare SUBDIR += p5-Git-Wrapper SUBDIR += p5-Glib SUBDIR += p5-Glib-Object-Introspection SUBDIR += p5-Goo-Canvas2 SUBDIR += p5-Google-Checkout SUBDIR += p5-Google-ProtocolBuffers SUBDIR += p5-GraphQL SUBDIR += p5-Gravatar-URL SUBDIR += p5-Gtk2-Notify SUBDIR += p5-Gtk2-Spell SUBDIR += p5-Guard SUBDIR += p5-HOP-Lexer SUBDIR += p5-HOP-Stream SUBDIR += p5-Hash-AsObject SUBDIR += p5-Hash-AutoHash SUBDIR += p5-Hash-AutoHash-Args SUBDIR += p5-Hash-Case SUBDIR += p5-Hash-Diff SUBDIR += p5-Hash-FieldHash SUBDIR += p5-Hash-Flatten SUBDIR += p5-Hash-Merge-Simple SUBDIR += p5-Hash-MoreUtils SUBDIR += p5-Hash-MultiKey SUBDIR += p5-Hash-MultiValue SUBDIR += p5-Hash-NoRef SUBDIR += p5-Hash-Objectify SUBDIR += p5-Hash-Ordered SUBDIR += p5-Hash-Slice SUBDIR += p5-Hash-Union SUBDIR += p5-Hash-Util-FieldHash-Compat SUBDIR += p5-Hash-WithDefaults SUBDIR += p5-Heap SUBDIR += p5-Heap-Simple SUBDIR += p5-Heap-Simple-Perl SUBDIR += p5-Heap-Simple-XS SUBDIR += p5-Hook-LexWrap SUBDIR += p5-IO-AIO SUBDIR += p5-IO-All SUBDIR += p5-IO-All-LWP SUBDIR += p5-IO-Any SUBDIR += p5-IO-Async SUBDIR += p5-IO-BufferedSelect SUBDIR += p5-IO-Callback SUBDIR += p5-IO-Capture SUBDIR += p5-IO-CaptureOutput SUBDIR += p5-IO-Digest SUBDIR += p5-IO-Event SUBDIR += p5-IO-FDPass SUBDIR += p5-IO-File-AtomicChange SUBDIR += p5-IO-HTML SUBDIR += p5-IO-Handle-Util SUBDIR += p5-IO-Interactive SUBDIR += p5-IO-KQueue SUBDIR += p5-IO-Lambda SUBDIR += p5-IO-LockedFile SUBDIR += p5-IO-MultiPipe SUBDIR += p5-IO-Multiplex SUBDIR += p5-IO-NestedCapture SUBDIR += p5-IO-Null SUBDIR += p5-IO-Pager SUBDIR += p5-IO-Pipely SUBDIR += p5-IO-Prompt SUBDIR += p5-IO-Prompt-Simple SUBDIR += p5-IO-Prompt-Tiny SUBDIR += p5-IO-Prompter SUBDIR += p5-IO-Pty-Easy SUBDIR += p5-IO-SessionData SUBDIR += p5-IO-String SUBDIR += p5-IO-Stringy SUBDIR += p5-IO-Stty SUBDIR += p5-IO-Tee SUBDIR += p5-IO-TieCombine SUBDIR += p5-IO-Toolkit SUBDIR += p5-IO-Tty SUBDIR += p5-IO-Util SUBDIR += p5-IO-YAML SUBDIR += p5-IOC SUBDIR += p5-IPC-Cache SUBDIR += p5-IPC-Cmd SUBDIR += p5-IPC-DirQueue SUBDIR += p5-IPC-Locker SUBDIR += p5-IPC-MM SUBDIR += p5-IPC-MMA SUBDIR += p5-IPC-Mmap SUBDIR += p5-IPC-Mmap-Share SUBDIR += p5-IPC-Open3-Simple SUBDIR += p5-IPC-PerlSSH SUBDIR += p5-IPC-PubSub SUBDIR += p5-IPC-Run SUBDIR += p5-IPC-Run-SafeHandles SUBDIR += p5-IPC-Run3 SUBDIR += p5-IPC-ShareLite SUBDIR += p5-IPC-Shareable SUBDIR += p5-IPC-SharedCache SUBDIR += p5-IPC-ShellCmd SUBDIR += p5-IPC-Signal SUBDIR += p5-IPC-System-Simple SUBDIR += p5-IRI SUBDIR += p5-Import-Base SUBDIR += p5-Import-Into SUBDIR += p5-Importer SUBDIR += p5-Inline SUBDIR += p5-Inline-ASM SUBDIR += p5-Inline-C SUBDIR += p5-Inline-CPP SUBDIR += p5-Inline-Files SUBDIR += p5-Inline-Filters SUBDIR += p5-Inline-Java SUBDIR += p5-Inline-Python SUBDIR += p5-Inline-TT SUBDIR += p5-Inline-Tcl SUBDIR += p5-InlineX-C2XS SUBDIR += p5-InlineX-CPP2XS SUBDIR += p5-Input-Validator SUBDIR += p5-Ioctl SUBDIR += p5-Iodef-Pb-Simple SUBDIR += p5-Iterator SUBDIR += p5-Iterator-IO SUBDIR += p5-Iterator-Misc SUBDIR += p5-Iterator-Simple SUBDIR += p5-Iterator-Simple-Lookahead SUBDIR += p5-Iterator-Util SUBDIR += p5-JIRA-REST SUBDIR += p5-JQuery SUBDIR += p5-JSON-Hyper SUBDIR += p5-JSON-Parse SUBDIR += p5-JSON-Path SUBDIR += p5-JSON-Pointer SUBDIR += p5-JSON-RPC SUBDIR += p5-JSON-RPC-Common SUBDIR += p5-JSON-RPC-Dispatcher SUBDIR += p5-JSON-Schema SUBDIR += p5-Java SUBDIR += p5-Jonk SUBDIR += p5-Keyword-Declare SUBDIR += p5-Keyword-Pluggable SUBDIR += p5-Keyword-Simple SUBDIR += p5-LV SUBDIR += p5-Lexical-Alias SUBDIR += p5-Lexical-Import SUBDIR += p5-Lexical-Persistence SUBDIR += p5-Lexical-SealRequireHints SUBDIR += p5-Lexical-Var SUBDIR += p5-Lingua-JA-Fold SUBDIR += p5-Lingua-Translit SUBDIR += p5-List-AllUtils SUBDIR += p5-List-BinarySearch SUBDIR += p5-List-Cycle SUBDIR += p5-List-Flatten SUBDIR += p5-List-Gen SUBDIR += p5-List-Group SUBDIR += p5-List-Objects-Types SUBDIR += p5-List-Objects-WithUtils SUBDIR += p5-List-Pairwise SUBDIR += p5-List-Permutor SUBDIR += p5-List-PowerSet SUBDIR += p5-List-Regexp SUBDIR += p5-List-Rotation-Cycle SUBDIR += p5-List-SomeUtils SUBDIR += p5-List-SomeUtils-XS SUBDIR += p5-List-Uniq SUBDIR += p5-List-UtilsBy SUBDIR += p5-List-UtilsBy-XS SUBDIR += p5-Locale-Maketext SUBDIR += p5-Locale-Maketext-Fuzzy SUBDIR += p5-Locale-Maketext-Gettext SUBDIR += p5-Locale-Maketext-Lexicon SUBDIR += p5-Locale-Maketext-Simple SUBDIR += p5-Locale-Msgfmt SUBDIR += p5-Locale-PGetText SUBDIR += p5-Locale-PO SUBDIR += p5-Locale-XGettext SUBDIR += p5-Locale-gettext SUBDIR += p5-Locale-libintl SUBDIR += p5-LockFile-Simple SUBDIR += p5-Log-Accounting-SVK SUBDIR += p5-Log-Accounting-SVN SUBDIR += p5-Log-Agent SUBDIR += p5-Log-Agent-Logger SUBDIR += p5-Log-Any SUBDIR += p5-Log-Any-Adapter-Dispatch SUBDIR += p5-Log-Any-Adapter-Log4perl SUBDIR += p5-Log-Any-App SUBDIR += p5-Log-Any-IfLOG SUBDIR += p5-Log-Contextual SUBDIR += p5-Log-Defer SUBDIR += p5-Log-Dispatch SUBDIR += p5-Log-Dispatch-Array SUBDIR += p5-Log-Dispatch-ArrayWithLimits SUBDIR += p5-Log-Dispatch-Colorful SUBDIR += p5-Log-Dispatch-Config SUBDIR += p5-Log-Dispatch-Configurator-Any SUBDIR += p5-Log-Dispatch-Configurator-YAML SUBDIR += p5-Log-Dispatch-DBI SUBDIR += p5-Log-Dispatch-Dir SUBDIR += p5-Log-Dispatch-Email-EmailSend SUBDIR += p5-Log-Dispatch-File-Rolling SUBDIR += p5-Log-Dispatch-File-Stamped SUBDIR += p5-Log-Dispatch-FileRotate SUBDIR += p5-Log-Dispatch-FileShared SUBDIR += p5-Log-Dispatch-FileWriteRotate SUBDIR += p5-Log-Dispatch-Perl SUBDIR += p5-Log-Dispatch-Screen-Color SUBDIR += p5-Log-Dispatch-Scribe SUBDIR += p5-Log-Dispatchouli SUBDIR += p5-Log-Dump SUBDIR += p5-Log-Handler SUBDIR += p5-Log-Log4perl SUBDIR += p5-Log-Log4perl-Appender-RabbitMQ SUBDIR += p5-Log-Log4perl-Appender-Socket-UNIX SUBDIR += p5-Log-Log4perl-Layout-JSON SUBDIR += p5-Log-Log4perl-Tiny SUBDIR += p5-Log-Message SUBDIR += p5-Log-Message-Simple SUBDIR += p5-Log-Minimal SUBDIR += p5-Log-Report SUBDIR += p5-Log-Report-Optional SUBDIR += p5-Log-Simple SUBDIR += p5-Log-Trace SUBDIR += p5-Log-TraceMessages SUBDIR += p5-Log-ger SUBDIR += p5-Logfile-Rotate SUBDIR += p5-Long-Jump SUBDIR += p5-Luka SUBDIR += p5-Lvalue SUBDIR += p5-MCE SUBDIR += p5-MCE-Shared SUBDIR += p5-MRO-Compat SUBDIR += p5-MRO-Define SUBDIR += p5-Mac-FileSpec-Unixish SUBDIR += p5-Mac-PropertyList SUBDIR += p5-Make SUBDIR += p5-Media-Type-Simple SUBDIR += p5-Memoize SUBDIR += p5-Memoize-ExpireLRU SUBDIR += p5-Meta-Builder SUBDIR += p5-MetaCPAN-Client SUBDIR += p5-Metabase-Client-Simple SUBDIR += p5-Metabase-Fact SUBDIR += p5-Method-Alias SUBDIR += p5-Method-Signatures SUBDIR += p5-Method-Signatures-Simple SUBDIR += p5-Metrics-Any SUBDIR += p5-Minilla SUBDIR += p5-Minion SUBDIR += p5-Mixin-Event-Dispatch SUBDIR += p5-Mixin-Linewise SUBDIR += p5-Mknod SUBDIR += p5-Mo SUBDIR += p5-Mock-MonkeyPatch SUBDIR += p5-Mock-Quick SUBDIR += p5-Mock-Sub SUBDIR += p5-Module-Build SUBDIR += p5-Module-Build-Convert SUBDIR += p5-Module-Build-Kwalitee SUBDIR += p5-Module-Build-Pluggable SUBDIR += p5-Module-Build-Pluggable-CPANfile SUBDIR += p5-Module-Build-Pluggable-ReadmeMarkdownFromPod SUBDIR += p5-Module-Build-Tiny SUBDIR += p5-Module-Build-Using-PkgConfig SUBDIR += p5-Module-Build-WithXSpp SUBDIR += p5-Module-Build-XSUtil SUBDIR += p5-Module-CPANTS-Analyse SUBDIR += p5-Module-CPANfile SUBDIR += p5-Module-CheckDeps SUBDIR += p5-Module-CheckVersion SUBDIR += p5-Module-Collect SUBDIR += p5-Module-Compile SUBDIR += p5-Module-CoreList SUBDIR += p5-Module-Dependency SUBDIR += p5-Module-Depends SUBDIR += p5-Module-Extract SUBDIR += p5-Module-Extract-Use SUBDIR += p5-Module-ExtractUse SUBDIR += p5-Module-Find SUBDIR += p5-Module-Functions SUBDIR += p5-Module-Implementation SUBDIR += p5-Module-Info SUBDIR += p5-Module-Info-File SUBDIR += p5-Module-Inspector SUBDIR += p5-Module-Install SUBDIR += p5-Module-Install-AuthorRequires SUBDIR += p5-Module-Install-AuthorTests SUBDIR += p5-Module-Install-ReadmeFromPod SUBDIR += p5-Module-Install-Repository SUBDIR += p5-Module-Install-Template SUBDIR += p5-Module-Install-TestBase SUBDIR += p5-Module-Install-XSUtil SUBDIR += p5-Module-Installed-Tiny SUBDIR += p5-Module-List SUBDIR += p5-Module-Load SUBDIR += p5-Module-Load-Conditional SUBDIR += p5-Module-Load-Util SUBDIR += p5-Module-Loaded SUBDIR += p5-Module-Loader SUBDIR += p5-Module-Manifest SUBDIR += p5-Module-Math-Depends SUBDIR += p5-Module-Metadata SUBDIR += p5-Module-Path SUBDIR += p5-Module-Pluggable SUBDIR += p5-Module-Pluggable-Fast SUBDIR += p5-Module-Pluggable-Ordered SUBDIR += p5-Module-Reader SUBDIR += p5-Module-Recursive-Require SUBDIR += p5-Module-Refresh SUBDIR += p5-Module-Release SUBDIR += p5-Module-Reload SUBDIR += p5-Module-Reload-Sel SUBDIR += p5-Module-Runtime SUBDIR += p5-Module-Runtime-Conflicts SUBDIR += p5-Module-ScanDeps SUBDIR += p5-Module-Setup SUBDIR += p5-Module-Starter SUBDIR += p5-Module-Starter-PBP SUBDIR += p5-Module-Starter-Plugin-SimpleStore SUBDIR += p5-Module-Starter-Plugin-TT2 SUBDIR += p5-Module-Used SUBDIR += p5-Module-Util SUBDIR += p5-Module-Version SUBDIR += p5-Module-Versions SUBDIR += p5-Module-Versions-Report SUBDIR += p5-Mojo-Base-XS SUBDIR += p5-Mojo-Log-Clearable SUBDIR += p5-Mojolicious-Plugin-NYTProf SUBDIR += p5-Moo SUBDIR += p5-MooX-Aliases SUBDIR += p5-MooX-Attribute-ENV SUBDIR += p5-MooX-Cmd SUBDIR += p5-MooX-ConfigFromFile SUBDIR += p5-MooX-File-ConfigDir SUBDIR += p5-MooX-HandlesVia SUBDIR += p5-MooX-Locale-Passthrough SUBDIR += p5-MooX-Options SUBDIR += p5-MooX-Role-Parameterized SUBDIR += p5-MooX-Singleton SUBDIR += p5-MooX-StrictConstructor SUBDIR += p5-MooX-Thunking SUBDIR += p5-MooX-Traits SUBDIR += p5-MooX-TypeTiny SUBDIR += p5-MooX-Types-MooseLike SUBDIR += p5-MooX-Types-MooseLike-Numeric SUBDIR += p5-MooX-late SUBDIR += p5-Moos SUBDIR += p5-Moose SUBDIR += p5-Moose-Autobox SUBDIR += p5-Moose-Policy SUBDIR += p5-Moose-Test SUBDIR += p5-MooseX-Aliases SUBDIR += p5-MooseX-App SUBDIR += p5-MooseX-App-Cmd SUBDIR += p5-MooseX-ArrayRef SUBDIR += p5-MooseX-Async SUBDIR += p5-MooseX-Attribute-Chained SUBDIR += p5-MooseX-Attribute-ENV SUBDIR += p5-MooseX-AttributeHelpers SUBDIR += p5-MooseX-AttributeShortcuts SUBDIR += p5-MooseX-AuthorizedMethods SUBDIR += p5-MooseX-ClassAttribute SUBDIR += p5-MooseX-Clone SUBDIR += p5-MooseX-CompileTime-Traits SUBDIR += p5-MooseX-ConfigFromFile SUBDIR += p5-MooseX-CoverableModifiers SUBDIR += p5-MooseX-Daemonize SUBDIR += p5-MooseX-Declare SUBDIR += p5-MooseX-Emulate-Class-Accessor-Fast SUBDIR += p5-MooseX-Extended SUBDIR += p5-MooseX-FollowPBP SUBDIR += p5-MooseX-Getopt SUBDIR += p5-MooseX-Has-Options SUBDIR += p5-MooseX-Has-Sugar SUBDIR += p5-MooseX-HasDefaults SUBDIR += p5-MooseX-IOC SUBDIR += p5-MooseX-InsideOut SUBDIR += p5-MooseX-LazyRequire SUBDIR += p5-MooseX-Lists SUBDIR += p5-MooseX-Log-Log4perl SUBDIR += p5-MooseX-MarkAsMethods SUBDIR += p5-MooseX-Meta-TypeConstraint-ForceCoercion SUBDIR += p5-MooseX-Meta-TypeConstraint-Mooish SUBDIR += p5-MooseX-MetaDescription SUBDIR += p5-MooseX-Method-Signatures SUBDIR += p5-MooseX-MethodAttributes SUBDIR += p5-MooseX-MultiInitArg SUBDIR += p5-MooseX-MultiMethods SUBDIR += p5-MooseX-MungeHas SUBDIR += p5-MooseX-NonMoose SUBDIR += p5-MooseX-Object-Pluggable SUBDIR += p5-MooseX-OneArgNew SUBDIR += p5-MooseX-POE SUBDIR += p5-MooseX-Params-Validate SUBDIR += p5-MooseX-RelatedClassRoles SUBDIR += p5-MooseX-Role-Loggable SUBDIR += p5-MooseX-Role-Matcher SUBDIR += p5-MooseX-Role-Parameterized SUBDIR += p5-MooseX-Role-Strict SUBDIR += p5-MooseX-Role-WarnOnConflict SUBDIR += p5-MooseX-Runnable SUBDIR += p5-MooseX-SemiAffordanceAccessor SUBDIR += p5-MooseX-SetOnce SUBDIR += p5-MooseX-SimpleConfig SUBDIR += p5-MooseX-Singleton SUBDIR += p5-MooseX-Storage SUBDIR += p5-MooseX-StrictConstructor SUBDIR += p5-MooseX-TraitFor-Meta-Class-BetterAnonClassNames SUBDIR += p5-MooseX-Traits SUBDIR += p5-MooseX-Traits-Pluggable SUBDIR += p5-MooseX-TransactionalMethods SUBDIR += p5-MooseX-Types SUBDIR += p5-MooseX-Types-Common SUBDIR += p5-MooseX-Types-DateTime SUBDIR += p5-MooseX-Types-DateTime-ButMaintained SUBDIR += p5-MooseX-Types-DateTime-MoreCoercions SUBDIR += p5-MooseX-Types-DateTime-MySQL SUBDIR += p5-MooseX-Types-DateTimeX SUBDIR += p5-MooseX-Types-ISO8601 SUBDIR += p5-MooseX-Types-JSON SUBDIR += p5-MooseX-Types-LoadableClass SUBDIR += p5-MooseX-Types-Path-Class SUBDIR += p5-MooseX-Types-Path-Tiny SUBDIR += p5-MooseX-Types-Perl SUBDIR += p5-MooseX-Types-PortNumber SUBDIR += p5-MooseX-Types-Set-Object SUBDIR += p5-MooseX-Types-Signal SUBDIR += p5-MooseX-Types-Stringlike SUBDIR += p5-MooseX-Types-Structured SUBDIR += p5-MooseX-Types-URI SUBDIR += p5-MooseX-Types-VariantTable SUBDIR += p5-MooseX-Util SUBDIR += p5-Mouse SUBDIR += p5-MouseX-App-Cmd SUBDIR += p5-MouseX-AttributeHelpers SUBDIR += p5-MouseX-ConfigFromFile SUBDIR += p5-MouseX-Foreign SUBDIR += p5-MouseX-Getopt SUBDIR += p5-MouseX-NativeTraits SUBDIR += p5-MouseX-StrictConstructor SUBDIR += p5-MouseX-Traits SUBDIR += p5-MouseX-Types SUBDIR += p5-MouseX-Types-Path-Class SUBDIR += p5-Multiplex-CMD SUBDIR += p5-NEXT SUBDIR += p5-Net-DBus SUBDIR += p5-No-Worries SUBDIR += p5-Number-Bytes-Human SUBDIR += p5-Number-Tolerant SUBDIR += p5-OLE-Storage_Lite SUBDIR += p5-OOTools SUBDIR += p5-Object-Accessor SUBDIR += p5-Object-Array SUBDIR += p5-Object-Authority SUBDIR += p5-Object-Container SUBDIR += p5-Object-Declare SUBDIR += p5-Object-Destroyer SUBDIR += p5-Object-Enum SUBDIR += p5-Object-Event SUBDIR += p5-Object-Import SUBDIR += p5-Object-InsideOut SUBDIR += p5-Object-MultiType SUBDIR += p5-Object-Pad SUBDIR += p5-Object-Pluggable SUBDIR += p5-Object-Realize-Later SUBDIR += p5-Object-Role SUBDIR += p5-Object-Signature SUBDIR += p5-Object-Simple SUBDIR += p5-Object-Tiny SUBDIR += p5-Object-Tiny-Lvalue SUBDIR += p5-Object-Tiny-RW SUBDIR += p5-Olson-Abbreviations SUBDIR += p5-Opcodes SUBDIR += p5-OrePAN2 SUBDIR += p5-Ouch SUBDIR += p5-PAR SUBDIR += p5-PAR-Dist SUBDIR += p5-PAR-Packer SUBDIR += p5-PCSC-Card SUBDIR += p5-PHP-Serialization SUBDIR += p5-POE SUBDIR += p5-POE-API-Hooks SUBDIR += p5-POE-API-Peek SUBDIR += p5-POE-Component-Child SUBDIR += p5-POE-Component-Cron SUBDIR += p5-POE-Component-Daemon SUBDIR += p5-POE-Component-DebugShell SUBDIR += p5-POE-Component-DirWatch SUBDIR += p5-POE-Component-Hailo SUBDIR += p5-POE-Component-IKC SUBDIR += p5-POE-Component-JobQueue SUBDIR += p5-POE-Component-Logger SUBDIR += p5-POE-Component-Pluggable SUBDIR += p5-POE-Component-RSS SUBDIR += p5-POE-Component-RSSAggregator SUBDIR += p5-POE-Component-Schedule SUBDIR += p5-POE-Component-Server-XMLRPC SUBDIR += p5-POE-Component-Syndicator SUBDIR += p5-POE-Component-TSTP SUBDIR += p5-POE-Devel-Profiler SUBDIR += p5-POE-Loop-AnyEvent SUBDIR += p5-POE-Loop-Glib SUBDIR += p5-POE-Loop-Tk SUBDIR += p5-POE-Quickie SUBDIR += p5-POE-Session-MultiDispatch SUBDIR += p5-POE-Stage SUBDIR += p5-POE-Test-Loops SUBDIR += p5-POE-XS-Loop-Poll SUBDIR += p5-POE-XS-Queue-Array SUBDIR += p5-POEx-Role-SessionInstantiation SUBDIR += p5-POEx-Role-Streaming SUBDIR += p5-POEx-Types SUBDIR += p5-POSIX-strftime-Compiler SUBDIR += p5-POSIX-strptime SUBDIR += p5-PPR SUBDIR += p5-PPerl SUBDIR += p5-PV SUBDIR += p5-Package-Constants SUBDIR += p5-Package-DeprecationManager SUBDIR += p5-Package-Generator SUBDIR += p5-Package-MoreUtil SUBDIR += p5-Package-Stash SUBDIR += p5-Package-Stash-XS SUBDIR += p5-Package-Util-Lite SUBDIR += p5-Package-Variant SUBDIR += p5-PadWalker SUBDIR += p5-Parallel-Async SUBDIR += p5-Parallel-Fork-BossWorker SUBDIR += p5-Parallel-ForkManager SUBDIR += p5-Parallel-Iterator SUBDIR += p5-Parallel-Prefork SUBDIR += p5-Parallel-Scoreboard SUBDIR += p5-Params-CallbackRequest SUBDIR += p5-Params-Check SUBDIR += p5-Params-Classify SUBDIR += p5-Params-Coerce SUBDIR += p5-Params-Util SUBDIR += p5-Params-Validate SUBDIR += p5-Params-Validate-Dependencies SUBDIR += p5-Params-ValidationCompiler SUBDIR += p5-Paranoid SUBDIR += p5-Paranoid-Log-Email SUBDIR += p5-Paranoid-Log-Syslog SUBDIR += p5-Parse-CPAN-Packages SUBDIR += p5-Parse-CPAN-Packages-Fast SUBDIR += p5-Parse-Distname SUBDIR += p5-Parse-ErrorString-Perl SUBDIR += p5-Parse-ExuberantCTags SUBDIR += p5-Parse-LocalDistribution SUBDIR += p5-Parse-Method-Signatures SUBDIR += p5-Parse-PMFile SUBDIR += p5-Parse-PerlConfig SUBDIR += p5-Parse-PlainConfig SUBDIR += p5-Parse-RecDescent SUBDIR += p5-Parse-VarName SUBDIR += p5-Parse-Win32Registry SUBDIR += p5-Parse-Yapp SUBDIR += p5-ParseLex SUBDIR += p5-ParseTemplate SUBDIR += p5-Parser-MGC SUBDIR += p5-PatchReader SUBDIR += p5-Path-Abstract SUBDIR += p5-Path-Class SUBDIR += p5-Path-Class-File-Lockable SUBDIR += p5-Path-Dispatcher SUBDIR += p5-Path-Dispatcher-Declarative SUBDIR += p5-Path-Extended SUBDIR += p5-Path-FindDev SUBDIR += p5-Path-IsDev SUBDIR += p5-Path-Iterator-Rule SUBDIR += p5-Path-Resource SUBDIR += p5-Path-Tiny SUBDIR += p5-PathTools SUBDIR += p5-Paws SUBDIR += p5-Pegex SUBDIR += p5-Perl-Critic-Deprecated SUBDIR += p5-Perl-Metrics-Lite SUBDIR += p5-Perl-Metrics-Simple SUBDIR += p5-Perl-OSType SUBDIR += p5-Perl-PrereqScanner SUBDIR += p5-Perl-PrereqScanner-Lite SUBDIR += p5-Perl-PrereqScanner-NotQuiteLite SUBDIR += p5-Perl-Tidy SUBDIR += p5-Perl-Unsafe-Signals SUBDIR += p5-Perl-Version SUBDIR += p5-Perl-osnames SUBDIR += p5-Perl4-CoreLibs SUBDIR += p5-Perl6-Builtins SUBDIR += p5-Perl6-Export SUBDIR += p5-Perl6-Export-Attrs SUBDIR += p5-Perl6-Form SUBDIR += p5-Perl6-Junction SUBDIR += p5-Perl6-Rules SUBDIR += p5-Perl6-Say SUBDIR += p5-Perl6-Slurp SUBDIR += p5-PerlIO-Layers SUBDIR += p5-PerlIO-Util SUBDIR += p5-PerlIO-eol SUBDIR += p5-PerlIO-locale SUBDIR += p5-PerlIO-utf8_strict SUBDIR += p5-PerlIO-via-MD5 SUBDIR += p5-PerlIO-via-Timeout SUBDIR += p5-PerlIO-via-dynamic SUBDIR += p5-PerlIO-via-symlink SUBDIR += p5-PerlX-Maybe SUBDIR += p5-PerlX-Maybe-XS SUBDIR += p5-Pid-File-Flock SUBDIR += p5-Pipeline SUBDIR += p5-Pithub SUBDIR += p5-PkgConfig SUBDIR += p5-PkgConfig-LibPkgConf SUBDIR += p5-Pod-Coverage SUBDIR += p5-Pod-Coverage-Moose SUBDIR += p5-Pod-Coverage-TrustPod SUBDIR += p5-Pod-Tests SUBDIR += p5-Pod-Usage SUBDIR += p5-Pragmatic SUBDIR += p5-Proc-BackOff SUBDIR += p5-Proc-Background SUBDIR += p5-Proc-Daemon SUBDIR += p5-Proc-FastSpawn SUBDIR += p5-Proc-Find-Parents SUBDIR += p5-Proc-Fork SUBDIR += p5-Proc-Guard SUBDIR += p5-Proc-PID-File SUBDIR += p5-Proc-Pidfile SUBDIR += p5-Proc-ProcessTable SUBDIR += p5-Proc-Queue SUBDIR += p5-Proc-Reliable SUBDIR += p5-Proc-SafeExec SUBDIR += p5-Proc-Simple SUBDIR += p5-Proc-Wait3 SUBDIR += p5-Proc-WaitStat SUBDIR += p5-Process-Status SUBDIR += p5-Progress-Any SUBDIR += p5-Project-Gantt SUBDIR += p5-Project-Libs SUBDIR += p5-Pthread-GetThreadId SUBDIR += p5-Qudo SUBDIR += p5-RPSL-Parser SUBDIR += p5-RRDTool-OO SUBDIR += p5-Rcs SUBDIR += p5-Rcs-Agent SUBDIR += p5-Readonly SUBDIR += p5-Readonly-XS SUBDIR += p5-ReadonlyX SUBDIR += p5-Reaper SUBDIR += p5-Ref-Util SUBDIR += p5-Ref-Util-XS SUBDIR += p5-Reflex SUBDIR += p5-Regexp-Assemble SUBDIR += p5-Regexp-Assemble-Compressed SUBDIR += p5-Regexp-Bind SUBDIR += p5-Regexp-Compare SUBDIR += p5-Regexp-Grammars SUBDIR += p5-Regexp-Lexer SUBDIR += p5-Regexp-Pattern-Perl SUBDIR += p5-Regexp-RegGrp SUBDIR += p5-Regexp-Shellish SUBDIR += p5-Regexp-Stringify SUBDIR += p5-Regexp-Subst-Parallel SUBDIR += p5-Regexp-Trie SUBDIR += p5-Religion SUBDIR += p5-Reply SUBDIR += p5-ResourcePool SUBDIR += p5-Resources SUBDIR += p5-Return-MultiLevel SUBDIR += p5-Return-Type SUBDIR += p5-Return-Value SUBDIR += p5-Rinci SUBDIR += p5-Role-Basic SUBDIR += p5-Role-HasMessage SUBDIR += p5-Role-Hooks SUBDIR += p5-Role-Identifiable SUBDIR += p5-Role-Tiny SUBDIR += p5-Rose-DateTime SUBDIR += p5-Rose-Object SUBDIR += p5-Router-R3 SUBDIR += p5-Routes-Tiny SUBDIR += p5-RunApp SUBDIR += p5-SDL SUBDIR += p5-SNMP-Persist SUBDIR += p5-SOAP-WSDL SUBDIR += p5-SPOPS SUBDIR += p5-SSN-Validate SUBDIR += p5-SUPER SUBDIR += p5-SVN-ACL SUBDIR += p5-SVN-Access SUBDIR += p5-SVN-Agent SUBDIR += p5-SVN-Dump SUBDIR += p5-SVN-Dumpfile SUBDIR += p5-SVN-Hook SUBDIR += p5-SVN-Hooks SUBDIR += p5-SVN-Log SUBDIR += p5-SVN-Look SUBDIR += p5-SVN-Mirror SUBDIR += p5-SVN-Notify SUBDIR += p5-SVN-Notify-Config SUBDIR += p5-SVN-Notify-Filter-AuthZMail SUBDIR += p5-SVN-Notify-Filter-EmailFlatFileDB SUBDIR += p5-SVN-Notify-Filter-Markdown SUBDIR += p5-SVN-Notify-Filter-Watchers SUBDIR += p5-SVN-Notify-Mirror SUBDIR += p5-SVN-Notify-Snapshot SUBDIR += p5-SVN-S4 SUBDIR += p5-SVN-Simple SUBDIR += p5-SVN-Statistics SUBDIR += p5-SVN-Web SUBDIR += p5-Safe-Isa SUBDIR += p5-Sah SUBDIR += p5-Scalar-Defer SUBDIR += p5-Scalar-Does SUBDIR += p5-Scalar-Listify SUBDIR += p5-Scalar-String SUBDIR += p5-Scalar-Util-LooksLikeNumber SUBDIR += p5-Scalar-Util-Numeric SUBDIR += p5-Scope-Container SUBDIR += p5-Scope-Guard SUBDIR += p5-Scope-Upper SUBDIR += p5-Script-isAperlScript SUBDIR += p5-Sentinel SUBDIR += p5-Sepia SUBDIR += p5-Set-Array SUBDIR += p5-Set-ConsistentHash SUBDIR += p5-Set-Crontab SUBDIR += p5-Set-CrossProduct SUBDIR += p5-Set-Infinite SUBDIR += p5-Set-NestedGroups SUBDIR += p5-Set-Object SUBDIR += p5-Set-Scalar SUBDIR += p5-Set-Tiny SUBDIR += p5-Shell-Base SUBDIR += p5-Shell-Config-Generate SUBDIR += p5-Shell-EnvImporter SUBDIR += p5-Shell-GetEnv SUBDIR += p5-Shell-Guess SUBDIR += p5-Shell-Parser SUBDIR += p5-Shell-Source SUBDIR += p5-ShipIt SUBDIR += p5-ShipIt-Step-Manifest SUBDIR += p5-Signal-Mask SUBDIR += p5-Slurp SUBDIR += p5-Smart-Comments SUBDIR += p5-Sort-Array SUBDIR += p5-Sort-ArrayOfArrays SUBDIR += p5-Sort-Key SUBDIR += p5-Sort-Key-DateTime SUBDIR += p5-Sort-Key-Top SUBDIR += p5-Sort-Maker SUBDIR += p5-Sort-Sub SUBDIR += p5-Sort-Tree SUBDIR += p5-Sort-Versions SUBDIR += p5-Specio SUBDIR += p5-Spiffy SUBDIR += p5-Spoon SUBDIR += p5-Storable SUBDIR += p5-Stream SUBDIR += p5-Stream-Buffered SUBDIR += p5-Stream-Reader SUBDIR += p5-String-Approx SUBDIR += p5-String-CRC32 SUBDIR += p5-String-Checker SUBDIR += p5-String-Diff SUBDIR += p5-String-Dump SUBDIR += p5-String-Ediff SUBDIR += p5-String-Errf SUBDIR += p5-String-Formatter SUBDIR += p5-String-Interpolate-Named SUBDIR += p5-String-KeyboardDistance SUBDIR += p5-String-LRC SUBDIR += p5-String-Parity SUBDIR += p5-String-Random SUBDIR += p5-String-RexxParse SUBDIR += p5-String-Similarity SUBDIR += p5-String-TT SUBDIR += p5-Struct-Dumb SUBDIR += p5-Sub-Alias SUBDIR += p5-Sub-Current SUBDIR += p5-Sub-Delete SUBDIR += p5-Sub-Exporter SUBDIR += p5-Sub-Exporter-ForMethods SUBDIR += p5-Sub-Exporter-GlobExporter SUBDIR += p5-Sub-Exporter-Lexical SUBDIR += p5-Sub-Exporter-Progressive SUBDIR += p5-Sub-HandlesVia SUBDIR += p5-Sub-Identify SUBDIR += p5-Sub-Infix SUBDIR += p5-Sub-Info SUBDIR += p5-Sub-Install SUBDIR += p5-Sub-Installer SUBDIR += p5-Sub-Multi SUBDIR += p5-Sub-Name SUBDIR += p5-Sub-Override SUBDIR += p5-Sub-Prototype SUBDIR += p5-Sub-Quote SUBDIR += p5-Sub-Signatures SUBDIR += p5-Sub-Uplevel SUBDIR += p5-Sub-WrapPackages SUBDIR += p5-Symbol-Get SUBDIR += p5-Symbol-Global-Name SUBDIR += p5-Symbol-Util SUBDIR += p5-Syntax-Keyword-Dynamically SUBDIR += p5-Syntax-Keyword-Gather SUBDIR += p5-Syntax-Keyword-Junction SUBDIR += p5-Syntax-Keyword-Match SUBDIR += p5-Syntax-Keyword-Try SUBDIR += p5-Sys-CPU SUBDIR += p5-Sys-Info SUBDIR += p5-Sys-Info-Base SUBDIR += p5-Sys-Info-Driver-BSD SUBDIR += p5-Sys-MemInfo SUBDIR += p5-Sys-Mmap SUBDIR += p5-Sys-RunAlone SUBDIR += p5-Sys-RunAlways SUBDIR += p5-Sys-Sendfile SUBDIR += p5-Sys-Sendfile-FreeBSD SUBDIR += p5-Sys-Sig SUBDIR += p5-Sys-SigAction SUBDIR += p5-Sys-Syscall SUBDIR += p5-Sys-Trace SUBDIR += p5-Sys-Virt SUBDIR += p5-System-Command SUBDIR += p5-System-Info SUBDIR += p5-System-Sub SUBDIR += p5-System2 SUBDIR += p5-TAP-Formatter-JUnit SUBDIR += p5-TAP-Harness-JUnit SUBDIR += p5-TAP-SimpleOutput SUBDIR += p5-Taint-Runtime SUBDIR += p5-Taint-Util SUBDIR += p5-Task-Tiny SUBDIR += p5-Task-Weaken SUBDIR += p5-Tee SUBDIR += p5-Template-Provider-Encode SUBDIR += p5-Term-ANSIColor SUBDIR += p5-Term-ANSIScreen SUBDIR += p5-Term-Animation SUBDIR += p5-Term-App-Roles SUBDIR += p5-Term-App-Util-Color SUBDIR += p5-Term-App-Util-Interactive SUBDIR += p5-Term-App-Util-Size SUBDIR += p5-Term-CallEditor SUBDIR += p5-Term-Choose SUBDIR += p5-Term-Choose-Util SUBDIR += p5-Term-Clui SUBDIR += p5-Term-Detect-Software SUBDIR += p5-Term-EditLine SUBDIR += p5-Term-Encoding SUBDIR += p5-Term-Form SUBDIR += p5-Term-Menus SUBDIR += p5-Term-ProgressBar SUBDIR += p5-Term-ProgressBar-Quiet SUBDIR += p5-Term-ProgressBar-Simple SUBDIR += p5-Term-Prompt SUBDIR += p5-Term-Query SUBDIR += p5-Term-RawInput SUBDIR += p5-Term-ReadKey SUBDIR += p5-Term-ReadLine SUBDIR += p5-Term-ReadLine-Gnu SUBDIR += p5-Term-ReadLine-Perl SUBDIR += p5-Term-ReadLine-TTYtter SUBDIR += p5-Term-ReadLine-Zoid SUBDIR += p5-Term-ReadPassword SUBDIR += p5-Term-Screen SUBDIR += p5-Term-ScreenColor SUBDIR += p5-Term-Shell SUBDIR += p5-Term-Size SUBDIR += p5-Term-Size-Any SUBDIR += p5-Term-Size-Perl SUBDIR += p5-Term-Sk SUBDIR += p5-Term-Table SUBDIR += p5-Term-TablePrint SUBDIR += p5-Term-Title SUBDIR += p5-Term-UI SUBDIR += p5-Term-VT102 SUBDIR += p5-Term-VT102-Boundless SUBDIR += p5-Term-Visual SUBDIR += p5-Test-API SUBDIR += p5-Test-Able SUBDIR += p5-Test-Able-Runner SUBDIR += p5-Test-Aggregate SUBDIR += p5-Test-Archive-Libarchive SUBDIR += p5-Test-Assertions SUBDIR += p5-Test-Auto SUBDIR += p5-Test-Base SUBDIR += p5-Test-Benchmark SUBDIR += p5-Test-BinaryData SUBDIR += p5-Test-Bits SUBDIR += p5-Test-CPAN-Meta SUBDIR += p5-Test-CPAN-Meta-YAML SUBDIR += p5-Test-CheckDeps SUBDIR += p5-Test-CheckManifest SUBDIR += p5-Test-Class SUBDIR += p5-Test-Class-Most SUBDIR += p5-Test-ClassAPI SUBDIR += p5-Test-Classy SUBDIR += p5-Test-CleanNamespaces SUBDIR += p5-Test-Cmd SUBDIR += p5-Test-Command SUBDIR += p5-Test-Command-Simple SUBDIR += p5-Test-Compile SUBDIR += p5-Test-DBIC-ExpectedQueries SUBDIR += p5-Test-DBIx-Class SUBDIR += p5-Test-Data SUBDIR += p5-Test-Debugger SUBDIR += p5-Test-Declare SUBDIR += p5-Test-Deep SUBDIR += p5-Test-Deep-UnorderedPairs SUBDIR += p5-Test-Dependencies SUBDIR += p5-Test-DependentModules SUBDIR += p5-Test-DiagINC SUBDIR += p5-Test-Differences SUBDIR += p5-Test-Distribution SUBDIR += p5-Test-EOL SUBDIR += p5-Test-Exception SUBDIR += p5-Test-Exit SUBDIR += p5-Test-Expect SUBDIR += p5-Test-FailWarnings SUBDIR += p5-Test-Fake-HTTPD SUBDIR += p5-Test-Fatal SUBDIR += p5-Test-File SUBDIR += p5-Test-File-Contents SUBDIR += p5-Test-File-ShareDir SUBDIR += p5-Test-Filename SUBDIR += p5-Test-Fixme SUBDIR += p5-Test-Fixture-DBIC-Schema SUBDIR += p5-Test-Future-IO-Impl SUBDIR += p5-Test-Group SUBDIR += p5-Test-HTML-Tidy SUBDIR += p5-Test-Harness SUBDIR += p5-Test-Harness-Straps SUBDIR += p5-Test-HasVersion SUBDIR += p5-Test-HexDifferences SUBDIR += p5-Test-HexString SUBDIR += p5-Test-Identity SUBDIR += p5-Test-If SUBDIR += p5-Test-InDistDir SUBDIR += p5-Test-Inline SUBDIR += p5-Test-Inter SUBDIR += p5-Test-JSON SUBDIR += p5-Test-Kwalitee SUBDIR += p5-Test-Lazy SUBDIR += p5-Test-LeakTrace SUBDIR += p5-Test-LectroTest SUBDIR += p5-Test-Lib SUBDIR += p5-Test-Lives SUBDIR += p5-Test-LoadAllModules SUBDIR += p5-Test-Log-Log4perl SUBDIR += p5-Test-Log4perl SUBDIR += p5-Test-LongString SUBDIR += p5-Test-Manifest SUBDIR += p5-Test-ManyParams SUBDIR += p5-Test-Memory-Cycle SUBDIR += p5-Test-Metrics-Any SUBDIR += p5-Test-Mini SUBDIR += p5-Test-Mini-Unit SUBDIR += p5-Test-Mock-Guard SUBDIR += p5-Test-Mock-LWP SUBDIR += p5-Test-Mock-LWP-Dispatch SUBDIR += p5-Test-Mock-One SUBDIR += p5-Test-Mock-Redis SUBDIR += p5-Test-MockDateTime SUBDIR += p5-Test-MockModule SUBDIR += p5-Test-MockObject SUBDIR += p5-Test-MockRandom SUBDIR += p5-Test-MockTime SUBDIR += p5-Test-MockTime-HiRes SUBDIR += p5-Test-Modern SUBDIR += p5-Test-Module-Used SUBDIR += p5-Test-Moose-More SUBDIR += p5-Test-More-UTF8 SUBDIR += p5-Test-Most SUBDIR += p5-Test-Name-FromLine SUBDIR += p5-Test-Needs SUBDIR += p5-Test-Net-LDAP SUBDIR += p5-Test-Net-RabbitMQ SUBDIR += p5-Test-NoTabs SUBDIR += p5-Test-NoWarnings SUBDIR += p5-Test-Number-Delta SUBDIR += p5-Test-Object SUBDIR += p5-Test-OpenLDAP SUBDIR += p5-Test-Output SUBDIR += p5-Test-POE-Client-TCP SUBDIR += p5-Test-POE-Server-TCP SUBDIR += p5-Test-Parser SUBDIR += p5-Test-PerlTidy SUBDIR += p5-Test-Pod SUBDIR += p5-Test-Pod-Coverage SUBDIR += p5-Test-Pod-Coverage-Permissive SUBDIR += p5-Test-Portability-Files SUBDIR += p5-Test-Prereq SUBDIR += p5-Test-RandomResults SUBDIR += p5-Test-Refcount SUBDIR += p5-Test-Reporter SUBDIR += p5-Test-Reporter-Transport-Metabase SUBDIR += p5-Test-Requires SUBDIR += p5-Test-Requires-Git SUBDIR += p5-Test-RequiresInternet SUBDIR += p5-Test-Roo SUBDIR += p5-Test-Script SUBDIR += p5-Test-Script-Run SUBDIR += p5-Test-SharedFork SUBDIR += p5-Test-Signature SUBDIR += p5-Test-Simple SUBDIR += p5-Test-Singleton SUBDIR += p5-Test-Snapshot SUBDIR += p5-Test-Spec SUBDIR += p5-Test-Spelling SUBDIR += p5-Test-Strict SUBDIR += p5-Test-SubCalls SUBDIR += p5-Test-Synopsis SUBDIR += p5-Test-Sys-Info SUBDIR += p5-Test-TAP-HTMLMatrix SUBDIR += p5-Test-TAP-Model SUBDIR += p5-Test-TCP SUBDIR += p5-Test-TableDriven SUBDIR += p5-Test-Taint SUBDIR += p5-Test-TempDir-Tiny SUBDIR += p5-Test-Time SUBDIR += p5-Test-Timer SUBDIR += p5-Test-TinyMocker SUBDIR += p5-Test-TrailingSpace SUBDIR += p5-Test-Trap SUBDIR += p5-Test-UNIXSock SUBDIR += p5-Test-Unit SUBDIR += p5-Test-UseAllModules SUBDIR += p5-Test-Version SUBDIR += p5-Test-WWW-Declare SUBDIR += p5-Test-WWW-Mechanize SUBDIR += p5-Test-WWW-Mechanize-CGI SUBDIR += p5-Test-WWW-Mechanize-CGIApp SUBDIR += p5-Test-WWW-Mechanize-Catalyst SUBDIR += p5-Test-WWW-Mechanize-PSGI SUBDIR += p5-Test-WWW-Selenium SUBDIR += p5-Test-Warn SUBDIR += p5-Test-Warnings SUBDIR += p5-Test-Weaken SUBDIR += p5-Test-Without-Module SUBDIR += p5-Test-XML SUBDIR += p5-Test-XML-Valid SUBDIR += p5-Test-YAML SUBDIR += p5-Test-YAML-Meta SUBDIR += p5-Test-YAML-Valid SUBDIR += p5-Test-utf8 SUBDIR += p5-Test2-Harness SUBDIR += p5-Test2-Harness-UI SUBDIR += p5-Test2-Plugin-Cover SUBDIR += p5-Test2-Plugin-DBIProfile SUBDIR += p5-Test2-Plugin-IOEvents SUBDIR += p5-Test2-Plugin-MemUsage SUBDIR += p5-Test2-Plugin-NoWarnings SUBDIR += p5-Test2-Plugin-UUID SUBDIR += p5-Test2-Suite SUBDIR += p5-Test2-Tools-Explain SUBDIR += p5-Test2-Tools-FFI SUBDIR += p5-Test2-Tools-MemoryCycle SUBDIR += p5-Text-Levenshtein SUBDIR += p5-Text-Levenshtein-Damerau SUBDIR += p5-Text-Levenshtein-Damerau-XS SUBDIR += p5-Text-LevenshteinXS SUBDIR += p5-Text-Outdent SUBDIR += p5-Text-vFile-asData SUBDIR += p5-TheSchwartz SUBDIR += p5-TheSchwartz-Simple SUBDIR += p5-TheSchwartz-Worker-SendEmail SUBDIR += p5-Thread-Apartment SUBDIR += p5-Thread-Cancel SUBDIR += p5-Thread-Pool-Simple SUBDIR += p5-Thread-Queue SUBDIR += p5-Thread-Queue-Duplex SUBDIR += p5-Thread-Suspend SUBDIR += p5-Thrift SUBDIR += p5-Thrift-XS SUBDIR += p5-Throwable SUBDIR += p5-Tickit SUBDIR += p5-Tickit-Widget-Table SUBDIR += p5-Tickit-Widgets SUBDIR += p5-Tie-Array-Pack SUBDIR += p5-Tie-Array-Sorted SUBDIR += p5-Tie-CPHash SUBDIR += p5-Tie-Cache SUBDIR += p5-Tie-DB_File-SplitHash SUBDIR += p5-Tie-DB_FileLock SUBDIR += p5-Tie-File SUBDIR += p5-Tie-File-AsHash SUBDIR += p5-Tie-FileLRUCache SUBDIR += p5-Tie-Function SUBDIR += p5-Tie-Hash-Indexed SUBDIR += p5-Tie-Hash-MultiValue SUBDIR += p5-Tie-Hash-Regex SUBDIR += p5-Tie-Hash-Sorted SUBDIR += p5-Tie-Hash-TwoWay SUBDIR += p5-Tie-IxHash SUBDIR += p5-Tie-LLHash SUBDIR += p5-Tie-RefHash SUBDIR += p5-Tie-RefHash-Weak SUBDIR += p5-Tie-RegexpHash SUBDIR += p5-Tie-Restore SUBDIR += p5-Tie-ShareLite SUBDIR += p5-Tie-Simple SUBDIR += p5-Tie-ToObject SUBDIR += p5-Tie-Util SUBDIR += p5-Tie-iCal SUBDIR += p5-Time-Clock SUBDIR += p5-Time-Crontab SUBDIR += p5-Time-Duration SUBDIR += p5-Time-Duration-Parse SUBDIR += p5-Time-Elapsed SUBDIR += p5-Time-Format SUBDIR += p5-Time-HiRes SUBDIR += p5-Time-Interval SUBDIR += p5-Time-Local SUBDIR += p5-Time-Mock SUBDIR += p5-Time-Moment SUBDIR += p5-Time-Moment-Role-TimeZone SUBDIR += p5-Time-Object SUBDIR += p5-Time-Out SUBDIR += p5-Time-ParseDate SUBDIR += p5-Time-Period SUBDIR += p5-Time-Piece SUBDIR += p5-Time-Piece-Range SUBDIR += p5-Time-Progress SUBDIR += p5-Time-Stopwatch SUBDIR += p5-Time-Warp SUBDIR += p5-Time-modules SUBDIR += p5-Time-timegm SUBDIR += p5-TimeDate SUBDIR += p5-ToolSet SUBDIR += p5-TraceFuncs SUBDIR += p5-Tree-Binary SUBDIR += p5-Tree-Binary-Dictionary SUBDIR += p5-Tree-DAG_Node SUBDIR += p5-Tree-Node SUBDIR += p5-Tree-Parser SUBDIR += p5-Tree-R SUBDIR += p5-Tree-RedBlack SUBDIR += p5-Tree-Simple SUBDIR += p5-Tree-Simple-View SUBDIR += p5-Tree-Simple-VisitorFactory SUBDIR += p5-Tree-Trie SUBDIR += p5-Type-Tiny SUBDIR += p5-Type-Tiny-Signatures SUBDIR += p5-Type-Tiny-XS SUBDIR += p5-Types-Core SUBDIR += p5-Types-Path-Tiny SUBDIR += p5-Types-Serialiser SUBDIR += p5-Types-URI SUBDIR += p5-Types-UUID SUBDIR += p5-UDCode SUBDIR += p5-UI-Dialog SUBDIR += p5-UNIVERSAL-can SUBDIR += p5-UNIVERSAL-isa SUBDIR += p5-UNIVERSAL-moniker SUBDIR += p5-UNIVERSAL-ref SUBDIR += p5-UNIVERSAL-require SUBDIR += p5-UNIVERSAL-which SUBDIR += p5-UUID SUBDIR += p5-UUID-Random SUBDIR += p5-UUID-Random-Patch-UseMRS SUBDIR += p5-UUID-Tiny SUBDIR += p5-UUID-URandom SUBDIR += p5-Uniq SUBDIR += p5-Unix-Groups SUBDIR += p5-Unix-Groups-FFI SUBDIR += p5-Unix-Statgrab SUBDIR += p5-Unix-Uptime SUBDIR += p5-User-Identity SUBDIR += p5-Util-Any SUBDIR += p5-VCP-Dest-svk SUBDIR += p5-VCP-Source-cvsbk SUBDIR += p5-VCP-autrijus SUBDIR += p5-VCS SUBDIR += p5-VCS-CVS SUBDIR += p5-VCS-Lite SUBDIR += p5-Validation-Class SUBDIR += p5-Variable-Disposition SUBDIR += p5-Variable-Eject SUBDIR += p5-Variable-Magic SUBDIR += p5-Venus SUBDIR += p5-Want SUBDIR += p5-WeakRef SUBDIR += p5-Workflow SUBDIR += p5-X-Tiny SUBDIR += p5-XML-Compile-Tester SUBDIR += p5-XML-Pastor SUBDIR += p5-XS-Object-Magic SUBDIR += p5-XS-Parse-Keyword SUBDIR += p5-XS-Parse-Sublike SUBDIR += p5-XSLoader SUBDIR += p5-XXX SUBDIR += p5-Xporter SUBDIR += p5-YAML-AppConfig SUBDIR += p5-Yada-Yada-Yada SUBDIR += p5-ZML SUBDIR += p5-accessors SUBDIR += p5-accessors-fast SUBDIR += p5-alias-module SUBDIR += p5-aliased SUBDIR += p5-asa SUBDIR += p5-autobox SUBDIR += p5-autobox-Core SUBDIR += p5-autobox-Transform SUBDIR += p5-autodie SUBDIR += p5-autovivification SUBDIR += p5-bareword-filehandles SUBDIR += p5-boolean SUBDIR += p5-capitalization SUBDIR += p5-carton SUBDIR += p5-common-sense SUBDIR += p5-constant SUBDIR += p5-constant-boolean SUBDIR += p5-constant-def SUBDIR += p5-constant-defer SUBDIR += p5-constant-lexical SUBDIR += p5-cpan-listchanges SUBDIR += p5-curry SUBDIR += p5-enum SUBDIR += p5-ex-lib SUBDIR += p5-experimental SUBDIR += p5-forks SUBDIR += p5-github_creator SUBDIR += p5-goto-file SUBDIR += p5-iCal-Parser SUBDIR += p5-indirect SUBDIR += p5-interface SUBDIR += p5-latest SUBDIR += p5-lexical-underscore SUBDIR += p5-lib-abs SUBDIR += p5-libalarm SUBDIR += p5-libxml-enno SUBDIR += p5-local-lib SUBDIR += p5-match-simple SUBDIR += p5-match-simple-XS SUBDIR += p5-mem SUBDIR += p5-mixin SUBDIR += p5-mocked SUBDIR += p5-multidimensional SUBDIR += p5-namespace-autoclean SUBDIR += p5-namespace-clean SUBDIR += p5-namespace-clean-xs SUBDIR += p5-namespace-sweep SUBDIR += p5-orz SUBDIR += p5-parent SUBDIR += p5-pip SUBDIR += p5-prefork SUBDIR += p5-relative SUBDIR += p5-routines SUBDIR += p5-self SUBDIR += p5-self-init SUBDIR += p5-strictures SUBDIR += p5-subatom SUBDIR += p5-subversion SUBDIR += p5-superclass SUBDIR += p5-syntax SUBDIR += p5-threads SUBDIR += p5-threads-shared SUBDIR += p5-true SUBDIR += p5-uni-perl SUBDIR += p5-version SUBDIR += p8-platform SUBDIR += packr SUBDIR += paexec SUBDIR += pam_wrapper SUBDIR += papi SUBDIR += papilio-loader SUBDIR += parallel-hashmap SUBDIR += parol SUBDIR += parol-ls SUBDIR += pas2dox SUBDIR += pasm SUBDIR += patch SUBDIR += patsh SUBDIR += pcc-libs SUBDIR += pcg-cpp SUBDIR += pcl SUBDIR += pcre SUBDIR += pcre++ SUBDIR += pcre2 SUBDIR += pcsc-cyberjack SUBDIR += pcsc-lite SUBDIR += pdcurses SUBDIR += pear SUBDIR += pear-Config SUBDIR += pear-Console_Color SUBDIR += pear-Console_CommandLine SUBDIR += pear-Console_Getargs SUBDIR += pear-Console_Table SUBDIR += pear-Date SUBDIR += pear-Date_Holidays SUBDIR += pear-Date_Holidays_Austria SUBDIR += pear-Date_Holidays_Brazil SUBDIR += pear-Date_Holidays_Denmark SUBDIR += pear-Date_Holidays_Discordian SUBDIR += pear-Date_Holidays_EnglandWales SUBDIR += pear-Date_Holidays_Germany SUBDIR += pear-Date_Holidays_Iceland SUBDIR += pear-Date_Holidays_Ireland SUBDIR += pear-Date_Holidays_Italy SUBDIR += pear-Date_Holidays_Japan SUBDIR += pear-Date_Holidays_Netherlands SUBDIR += pear-Date_Holidays_Norway SUBDIR += pear-Date_Holidays_PHPdotNet SUBDIR += pear-Date_Holidays_Romania SUBDIR += pear-Date_Holidays_Slovenia SUBDIR += pear-Date_Holidays_Sweden SUBDIR += pear-Date_Holidays_UNO SUBDIR += pear-Date_Holidays_USA SUBDIR += pear-Date_Holidays_Ukraine SUBDIR += pear-Event_Dispatcher SUBDIR += pear-FSM SUBDIR += pear-File_Iterator SUBDIR += pear-HTML_BBCodeParser SUBDIR += pear-HTML_CSS SUBDIR += pear-HTML_Common SUBDIR += pear-HTML_Common2 SUBDIR += pear-HTML_Form SUBDIR += pear-HTML_Javascript SUBDIR += pear-HTML_Page2 SUBDIR += pear-HTML_QuickForm SUBDIR += pear-HTML_QuickForm2 SUBDIR += pear-HTML_QuickForm_Controller SUBDIR += pear-HTML_QuickForm_Livesearch SUBDIR += pear-HTML_QuickForm_Renderer_Tableless SUBDIR += pear-HTML_QuickForm_SelectFilter SUBDIR += pear-HTML_QuickForm_advmultiselect SUBDIR += pear-HTML_Select SUBDIR += pear-HTML_Select_Common SUBDIR += pear-HTML_Table SUBDIR += pear-HTML_Template_Flexy SUBDIR += pear-HTML_Template_IT SUBDIR += pear-HTML_Template_PHPLIB SUBDIR += pear-HTML_Template_Sigma SUBDIR += pear-HTML_TreeMenu SUBDIR += pear-Horde_Alarm SUBDIR += pear-Horde_Argv SUBDIR += pear-Horde_Autoloader SUBDIR += pear-Horde_Autoloader_Cache SUBDIR += pear-Horde_Cache SUBDIR += pear-Horde_Cli SUBDIR += pear-Horde_Constraint SUBDIR += pear-Horde_Controller SUBDIR += pear-Horde_Core SUBDIR += pear-Horde_Data SUBDIR += pear-Horde_Date SUBDIR += pear-Horde_Date_Parser SUBDIR += pear-Horde_Exception SUBDIR += pear-Horde_History SUBDIR += pear-Horde_Icalendar SUBDIR += pear-Horde_Injector SUBDIR += pear-Horde_Itip SUBDIR += pear-Horde_Lock SUBDIR += pear-Horde_LoginTasks SUBDIR += pear-Horde_Nls SUBDIR += pear-Horde_Notification SUBDIR += pear-Horde_Prefs SUBDIR += pear-Horde_Queue SUBDIR += pear-Horde_Rdo SUBDIR += pear-Horde_Role SUBDIR += pear-Horde_Scheduler SUBDIR += pear-Horde_Serialize SUBDIR += pear-Horde_Stream SUBDIR += pear-Horde_Stream_Filter SUBDIR += pear-Horde_Stream_Wrapper SUBDIR += pear-Horde_Support SUBDIR += pear-Horde_Thrift SUBDIR += pear-Horde_Timezone SUBDIR += pear-Horde_Token SUBDIR += pear-Horde_Translation SUBDIR += pear-Horde_Tree SUBDIR += pear-Horde_Util SUBDIR += pear-Horde_View SUBDIR += pear-I18N SUBDIR += pear-Math_Fraction SUBDIR += pear-Net_Gearman SUBDIR += pear-OLE SUBDIR += pear-PEAR_Info SUBDIR += pear-PEAR_PackageFileManager SUBDIR += pear-PEAR_PackageFileManager2 SUBDIR += pear-PEAR_PackageFileManager_Plugins SUBDIR += pear-PHPTAL SUBDIR += pear-PHPUnit_MockObject SUBDIR += pear-PHP_ArrayOf SUBDIR += pear-PHP_Beautifier SUBDIR += pear-PHP_CodeCoverage SUBDIR += pear-PHP_CodeSniffer SUBDIR += pear-PHP_Compat SUBDIR += pear-PHP_CompatInfo SUBDIR += pear-PHP_Parser SUBDIR += pear-PHP_ParserGenerator SUBDIR += pear-PHP_Timer SUBDIR += pear-PHP_TokenStream SUBDIR += pear-PHP_UML SUBDIR += pear-Pager SUBDIR += pear-PhpDocumentor SUBDIR += pear-Pirum SUBDIR += pear-SebastianBergmann_FinderFacade SUBDIR += pear-SebastianBergmann_Git SUBDIR += pear-SebastianBergmann_PHPCPD SUBDIR += pear-SebastianBergmann_PHPLOC SUBDIR += pear-SebastianBergmann_Version SUBDIR += pear-Structure_LinkedList SUBDIR += pear-Structures_DataGrid SUBDIR += pear-Structures_DataGrid_Renderer_Console SUBDIR += pear-Structures_DataGrid_Renderer_HTMLSortForm SUBDIR += pear-Structures_DataGrid_Renderer_HTMLTable SUBDIR += pear-Structures_DataGrid_Renderer_XUL SUBDIR += pear-Symfony_Component_Console SUBDIR += pear-Symfony_Component_Finder SUBDIR += pear-System_Command SUBDIR += pear-Testing_Selenium SUBDIR += pear-Text_Diff SUBDIR += pear-TheSeer_DirectoryScanner SUBDIR += pear-TheSeer_fDOMDocument SUBDIR += pear-TheSeer_fXSL SUBDIR += pear-VFS SUBDIR += pear-Validate SUBDIR += pear-Validate_AU SUBDIR += pear-Validate_Finance SUBDIR += pear-Validate_Finance_CreditCard SUBDIR += pear-Validate_US SUBDIR += pear-Var_Dump SUBDIR += pear-VersionControl_Git SUBDIR += pear-VersionControl_SVN SUBDIR += pear-XML_NITF SUBDIR += pear-XML_Parser SUBDIR += pear-XML_RSS SUBDIR += pear-XML_SVG SUBDIR += pear-XML_Serializer SUBDIR += pear-XML_Transformer SUBDIR += pear-XML_Tree SUBDIR += pear-XML_Util SUBDIR += pear-channel-doctrine SUBDIR += pear-channel-ezc SUBDIR += pear-channel-geshi SUBDIR += pear-channel-horde SUBDIR += pear-channel-htmlpurifier.org SUBDIR += pear-channel-openpear SUBDIR += pear-channel-pdepend SUBDIR += pear-channel-phing SUBDIR += pear-channel-phpdoc SUBDIR += pear-channel-phpmd SUBDIR += pear-channel-pirum SUBDIR += pear-channel-symfony SUBDIR += pear-channel-symfony2 SUBDIR += pear-channel-theseer SUBDIR += pear-channel-twig SUBDIR += pear-codegen SUBDIR += pear-ezc_Base SUBDIR += pear-ezc_ConsoleTools SUBDIR += pear-geshi SUBDIR += pear-htmlpurifier SUBDIR += pear-pdepend-staticReflection SUBDIR += pear-phing SUBDIR += pecl-APCu SUBDIR += pecl-ast SUBDIR += pecl-dio SUBDIR += pecl-ds SUBDIR += pecl-eio SUBDIR += pecl-ev SUBDIR += pecl-event SUBDIR += pecl-expect SUBDIR += pecl-grpc SUBDIR += pecl-inotify SUBDIR += pecl-json_post SUBDIR += pecl-msgpack SUBDIR += pecl-mustache SUBDIR += pecl-protobuf SUBDIR += pecl-psr SUBDIR += pecl-raphf2 SUBDIR += pecl-runkit7 SUBDIR += pecl-swoole SUBDIR += pecl-sync SUBDIR += pecl-uploadprogress SUBDIR += pecl-uuid SUBDIR += pecl-uv SUBDIR += pecl-vld SUBDIR += pecl-xdebug SUBDIR += pecl-yac SUBDIR += pecl-yaconf SUBDIR += pecl-zookeeper SUBDIR += pegtl SUBDIR += pep8 SUBDIR += performance SUBDIR += perlconsole SUBDIR += phabricator SUBDIR += phasar SUBDIR += php-Psr_Log SUBDIR += php-composer SUBDIR += php-composer2 SUBDIR += php-geshi SUBDIR += php-ice37 SUBDIR += php-libawl SUBDIR += php-maxminddb SUBDIR += php80-ffi SUBDIR += php80-gettext SUBDIR += php80-intl SUBDIR += php80-pcntl SUBDIR += php80-readline SUBDIR += php80-shmop SUBDIR += php80-sysvmsg SUBDIR += php80-sysvsem SUBDIR += php80-sysvshm SUBDIR += php80-tokenizer SUBDIR += php81-ffi SUBDIR += php81-gettext SUBDIR += php81-intl SUBDIR += php81-pcntl SUBDIR += php81-readline SUBDIR += php81-shmop SUBDIR += php81-sysvmsg SUBDIR += php81-sysvsem SUBDIR += php81-sysvshm SUBDIR += php81-tokenizer SUBDIR += php82-ffi SUBDIR += php82-gettext SUBDIR += php82-intl SUBDIR += php82-pcntl SUBDIR += php82-readline SUBDIR += php82-shmop SUBDIR += php82-sysvmsg SUBDIR += php82-sysvsem SUBDIR += php82-sysvshm SUBDIR += php82-tokenizer SUBDIR += phpunit10 SUBDIR += phpunit8 SUBDIR += phpunit9 SUBDIR += physfs SUBDIR += pickle SUBDIR += picojson SUBDIR += picprog SUBDIR += pijul SUBDIR += pika SUBDIR += pipestatus SUBDIR += pire SUBDIR += pit SUBDIR += pkg-info.el SUBDIR += pkgconf SUBDIR += plan9port SUBDIR += plasma SUBDIR += plasma5-khotkeys SUBDIR += plasma5-kwrited SUBDIR += plasma5-plasma-sdk SUBDIR += please SUBDIR += pmccabe SUBDIR += pmd SUBDIR += pmdk SUBDIR += poco SUBDIR += poetry SUBDIR += popt SUBDIR += poxml SUBDIR += ppl SUBDIR += pprof SUBDIR += premake SUBDIR += premake4 SUBDIR += premake5 SUBDIR += projectcenter SUBDIR += protobuf SUBDIR += protobuf-c SUBDIR += protobuf-java SUBDIR += protobuf25 SUBDIR += prototool SUBDIR += protozero SUBDIR += pructl SUBDIR += psimd SUBDIR += pstreams SUBDIR += psvn SUBDIR += pth SUBDIR += pth-hard SUBDIR += pthreadpool SUBDIR += pthsem SUBDIR += ptl SUBDIR += ptlib SUBDIR += ptmalloc SUBDIR += ptmalloc2 SUBDIR += ptypes SUBDIR += publib SUBDIR += purescript-language-server SUBDIR += pushmi SUBDIR += py-Automat SUBDIR += py-BTrees SUBDIR += py-DateTime SUBDIR += py-Dumper SUBDIR += py-ExtensionClass SUBDIR += py-Faker SUBDIR += py-IBMQuantumExperience SUBDIR += py-Jinja2 SUBDIR += py-Jinja2-doc SUBDIR += py-Js2Py SUBDIR += py-PYB11Generator SUBDIR += py-PeachPy SUBDIR += py-Products.ExternalEditor SUBDIR += py-Products.PloneLanguageTool SUBDIR += py-PyExecJS SUBDIR += py-PyLD SUBDIR += py-PyUtilib SUBDIR += py-QtPy SUBDIR += py-RPyC SUBDIR += py-ZopeUndo SUBDIR += py-about-time SUBDIR += py-absl SUBDIR += py-absl-py SUBDIR += py-adb SUBDIR += py-addict SUBDIR += py-aenum SUBDIR += py-aioapns SUBDIR += py-aiocontextvars SUBDIR += py-aiofiles SUBDIR += py-aiohttp-apispec SUBDIR += py-aioice SUBDIR += py-aioitertools SUBDIR += py-aiologger SUBDIR += py-aiorpcX SUBDIR += py-aiortc SUBDIR += py-aiosignal SUBDIR += py-airtable-python-wrapper SUBDIR += py-amalgamate SUBDIR += py-aniso8601 SUBDIR += py-aniso86016 SUBDIR += py-anndata SUBDIR += py-ansi SUBDIR += py-antlr4-python3-runtime SUBDIR += py-anyconfig SUBDIR += py-anyio SUBDIR += py-anyjson SUBDIR += py-anytree SUBDIR += py-apache_conf_parser SUBDIR += py-apipkg SUBDIR += py-apispec SUBDIR += py-appdirs SUBDIR += py-applicationinsights SUBDIR += py-apptools SUBDIR += py-apscheduler SUBDIR += py-archinfo SUBDIR += py-argcomplete SUBDIR += py-argh SUBDIR += py-argparse SUBDIR += py-args SUBDIR += py-arpeggio SUBDIR += py-arrow SUBDIR += py-asciimatics SUBDIR += py-asgi-lifespan SUBDIR += py-asn1 SUBDIR += py-asn1crypto SUBDIR += py-aspy.yaml SUBDIR += py-ast-decompiler SUBDIR += py-asteval SUBDIR += py-astor SUBDIR += py-astroid SUBDIR += py-astroid253 SUBDIR += py-asttokens SUBDIR += py-astunparse SUBDIR += py-async-lru SUBDIR += py-async_generator SUBDIR += py-async_timeout SUBDIR += py-asynctest SUBDIR += py-atomiclong SUBDIR += py-atomicwrites SUBDIR += py-atpublic SUBDIR += py-attrdict SUBDIR += py-attrs SUBDIR += py-attrs-strict SUBDIR += py-autocommand SUBDIR += py-autoflake SUBDIR += py-automaton SUBDIR += py-autopage SUBDIR += py-autoprop SUBDIR += py-avro SUBDIR += py-awesomeversion SUBDIR += py-aws-lambda-builders SUBDIR += py-aws-requests-auth SUBDIR += py-aws-sam-translator SUBDIR += py-aws-xray-sdk SUBDIR += py-awscli SUBDIR += py-awscrt SUBDIR += py-azure-appconfiguration SUBDIR += py-azure-batch SUBDIR += py-azure-core SUBDIR += py-azure-cosmos SUBDIR += py-azure-data-tables SUBDIR += py-azure-datalake-store SUBDIR += py-azure-functions-devops-build SUBDIR += py-azure-graphrbac SUBDIR += py-azure-identity SUBDIR += py-azure-keyvault SUBDIR += py-azure-keyvault-administration SUBDIR += py-azure-loganalytics SUBDIR += py-azure-mgmt-advisor SUBDIR += py-azure-mgmt-apimanagement SUBDIR += py-azure-mgmt-appconfiguration SUBDIR += py-azure-mgmt-applicationinsights SUBDIR += py-azure-mgmt-authorization SUBDIR += py-azure-mgmt-batch SUBDIR += py-azure-mgmt-batchai SUBDIR += py-azure-mgmt-billing SUBDIR += py-azure-mgmt-botservice SUBDIR += py-azure-mgmt-cdn SUBDIR += py-azure-mgmt-cognitiveservices SUBDIR += py-azure-mgmt-compute SUBDIR += py-azure-mgmt-consumption SUBDIR += py-azure-mgmt-containerinstance SUBDIR += py-azure-mgmt-containerregistry SUBDIR += py-azure-mgmt-containerservice SUBDIR += py-azure-mgmt-core SUBDIR += py-azure-mgmt-cosmosdb SUBDIR += py-azure-mgmt-databoxedge SUBDIR += py-azure-mgmt-datalake-analytics SUBDIR += py-azure-mgmt-datalake-store SUBDIR += py-azure-mgmt-datamigration SUBDIR += py-azure-mgmt-deploymentmanager SUBDIR += py-azure-mgmt-devtestlabs SUBDIR += py-azure-mgmt-dns SUBDIR += py-azure-mgmt-eventgrid SUBDIR += py-azure-mgmt-eventhub SUBDIR += py-azure-mgmt-extendedlocation SUBDIR += py-azure-mgmt-hdinsight SUBDIR += py-azure-mgmt-imagebuilder SUBDIR += py-azure-mgmt-iotcentral SUBDIR += py-azure-mgmt-iothub SUBDIR += py-azure-mgmt-iothubprovisioningservices SUBDIR += py-azure-mgmt-keyvault SUBDIR += py-azure-mgmt-kusto SUBDIR += py-azure-mgmt-loganalytics SUBDIR += py-azure-mgmt-managedservices SUBDIR += py-azure-mgmt-managementgroups SUBDIR += py-azure-mgmt-maps SUBDIR += py-azure-mgmt-marketplaceordering SUBDIR += py-azure-mgmt-media SUBDIR += py-azure-mgmt-monitor SUBDIR += py-azure-mgmt-msi SUBDIR += py-azure-mgmt-netapp SUBDIR += py-azure-mgmt-network SUBDIR += py-azure-mgmt-policyinsights SUBDIR += py-azure-mgmt-privatedns SUBDIR += py-azure-mgmt-rdbms SUBDIR += py-azure-mgmt-recoveryservices SUBDIR += py-azure-mgmt-recoveryservicesbackup SUBDIR += py-azure-mgmt-redhatopenshift SUBDIR += py-azure-mgmt-redis SUBDIR += py-azure-mgmt-relay SUBDIR += py-azure-mgmt-reservations SUBDIR += py-azure-mgmt-resource SUBDIR += py-azure-mgmt-search SUBDIR += py-azure-mgmt-security SUBDIR += py-azure-mgmt-servicebus SUBDIR += py-azure-mgmt-servicefabric SUBDIR += py-azure-mgmt-servicefabricmanagedclusters SUBDIR += py-azure-mgmt-servicelinker SUBDIR += py-azure-mgmt-signalr SUBDIR += py-azure-mgmt-sql SUBDIR += py-azure-mgmt-sqlvirtualmachine SUBDIR += py-azure-mgmt-storage SUBDIR += py-azure-mgmt-synapse SUBDIR += py-azure-mgmt-trafficmanager SUBDIR += py-azure-mgmt-web SUBDIR += py-azure-multiapi-storage SUBDIR += py-azure-storage-blob SUBDIR += py-azure-storage-common SUBDIR += py-azure-synapse-accesscontrol SUBDIR += py-azure-synapse-artifacts SUBDIR += py-azure-synapse-managedprivateendpoints SUBDIR += py-azure-synapse-spark SUBDIR += py-b2sdk SUBDIR += py-babel SUBDIR += py-babelfish SUBDIR += py-babi_grammars SUBDIR += py-backcall SUBDIR += py-backoff SUBDIR += py-backports SUBDIR += py-backports.cached-property SUBDIR += py-backports.csv SUBDIR += py-backports.entry-points-selectable SUBDIR += py-backports.zoneinfo SUBDIR += py-banal SUBDIR += py-bandit SUBDIR += py-bcdoc SUBDIR += py-beartype SUBDIR += py-beautifultable SUBDIR += py-behave SUBDIR += py-beniget SUBDIR += py-bidict SUBDIR += py-billiard SUBDIR += py-binaryornot SUBDIR += py-biplist SUBDIR += py-bitarray SUBDIR += py-bitstring SUBDIR += py-black SUBDIR += py-blessed SUBDIR += py-blessings SUBDIR += py-blinker SUBDIR += py-blist SUBDIR += py-bluelet SUBDIR += py-boltons SUBDIR += py-boolean.py SUBDIR += py-boto SUBDIR += py-botocore SUBDIR += py-bps-restpy SUBDIR += py-breathe SUBDIR += py-bsd SUBDIR += py-btest SUBDIR += py-build SUBDIR += py-buildbot SUBDIR += py-buildbot-console-view SUBDIR += py-buildbot-grid-view SUBDIR += py-buildbot-pkg SUBDIR += py-buildbot-waterfall-view SUBDIR += py-buildbot-worker SUBDIR += py-buildbot-www SUBDIR += py-bullet3 SUBDIR += py-bytecode SUBDIR += py-cabby SUBDIR += py-cached-property SUBDIR += py-cachetools SUBDIR += py-cachetools3 SUBDIR += py-cachy SUBDIR += py-cadquery-pywrap SUBDIR += py-calver SUBDIR += py-canonicaljson SUBDIR += py-capstone SUBDIR += py-capturer SUBDIR += py-case SUBDIR += py-castellan SUBDIR += py-catalogue SUBDIR += py-cattrs SUBDIR += py-cbor SUBDIR += py-cbor2 SUBDIR += py-cclib SUBDIR += py-cdg SUBDIR += py-celery SUBDIR += py-celery-progress SUBDIR += py-cerberus SUBDIR += py-certsrv SUBDIR += py-cffi SUBDIR += py-cfgv SUBDIR += py-cfn-lint SUBDIR += py-cftime SUBDIR += py-chainmap SUBDIR += py-characteristic SUBDIR += py-check-jsonschema SUBDIR += py-check-manifest SUBDIR += py-cheetah3 SUBDIR += py-circuitbreaker SUBDIR += py-circuits SUBDIR += py-ciso8601 SUBDIR += py-ckanapi SUBDIR += py-clang SUBDIR += py-cld SUBDIR += py-cle SUBDIR += py-cleo SUBDIR += py-cli-helpers SUBDIR += py-cliapp SUBDIR += py-click SUBDIR += py-click-completion SUBDIR += py-click-default-group SUBDIR += py-click-default-group-wheel SUBDIR += py-click-log SUBDIR += py-click-option-group SUBDIR += py-click-plugins SUBDIR += py-click-threading SUBDIR += py-click7 SUBDIR += py-cliff SUBDIR += py-cligj SUBDIR += py-clikit SUBDIR += py-clint SUBDIR += py-cloudpickle SUBDIR += py-cluster SUBDIR += py-cmd2 SUBDIR += py-cmdtest SUBDIR += py-codecov SUBDIR += py-codegen SUBDIR += py-cog SUBDIR += py-collective.monkeypatcher SUBDIR += py-colorama SUBDIR += py-colored-traceback SUBDIR += py-coloredlogs SUBDIR += py-colorful SUBDIR += py-colorlog SUBDIR += py-colorspacious SUBDIR += py-columnize SUBDIR += py-comm SUBDIR += py-commandlines SUBDIR += py-conditional SUBDIR += py-configargparse SUBDIR += py-configobj SUBDIR += py-configparser SUBDIR += py-configupdater SUBDIR += py-confusable_homoglyphs SUBDIR += py-confuse SUBDIR += py-connection_pool SUBDIR += py-constantly SUBDIR += py-construct SUBDIR += py-construct-classes SUBDIR += py-contextlib2 SUBDIR += py-convertdate SUBDIR += py-cookiecutter SUBDIR += py-copier SUBDIR += py-coreapi SUBDIR += py-coreschema SUBDIR += py-country SUBDIR += py-cov-core SUBDIR += py-covdefaults SUBDIR += py-coverage SUBDIR += py-coverage_enable_subprocess SUBDIR += py-coveralls SUBDIR += py-cppheaderparser SUBDIR += py-cppy SUBDIR += py-crank SUBDIR += py-crashtest SUBDIR += py-crc32c SUBDIR += py-crcmod SUBDIR += py-cson SUBDIR += py-csv23 SUBDIR += py-ctags SUBDIR += py-ctypesgen SUBDIR += py-curio SUBDIR += py-cursive SUBDIR += py-curtsies SUBDIR += py-cvss SUBDIR += py-cwcwidth SUBDIR += py-cxx SUBDIR += py-cycler SUBDIR += py-cymbal SUBDIR += py-cymem SUBDIR += py-cysignals SUBDIR += py-cython-test-exception-raiser SUBDIR += py-cytoolz SUBDIR += py-d2to1 SUBDIR += py-daemon SUBDIR += py-daemon-runner SUBDIR += py-daemonize SUBDIR += py-daemons SUBDIR += py-dal SUBDIR += py-darts.util.lru SUBDIR += py-dask SUBDIR += py-dask-histogram SUBDIR += py-dataclasses-json SUBDIR += py-datadog SUBDIR += py-datapackage SUBDIR += py-datasette SUBDIR += py-datatest SUBDIR += py-dateparser SUBDIR += py-dateutil SUBDIR += py-dateutils SUBDIR += py-datrie SUBDIR += py-dbus SUBDIR += py-ddsketch SUBDIR += py-ddt SUBDIR += py-ddtrace SUBDIR += py-debtcollector SUBDIR += py-debugpy SUBDIR += py-debugtools SUBDIR += py-decorator SUBDIR += py-decoratortools SUBDIR += py-deepdiff SUBDIR += py-deepmerge SUBDIR += py-defusedxml SUBDIR += py-demjson SUBDIR += py-deprecat SUBDIR += py-deprecated SUBDIR += py-deprecation SUBDIR += py-devtools SUBDIR += py-dexml2 SUBDIR += py-diazo SUBDIR += py-dill SUBDIR += py-dirspec SUBDIR += py-diskcache SUBDIR += py-distlib SUBDIR += py-distributed SUBDIR += py-dj40-django-rq SUBDIR += py-dj40-graphene-django SUBDIR += py-dj41-django-rq SUBDIR += py-dj41-graphene-django SUBDIR += py-django-rq SUBDIR += py-dockerpty SUBDIR += py-docopt SUBDIR += py-doctest-ignore-unicode SUBDIR += py-dodgy SUBDIR += py-dogpile.cache SUBDIR += py-doit SUBDIR += py-donut-shellcode SUBDIR += py-dotted SUBDIR += py-dotty-dict SUBDIR += py-dpcontracts SUBDIR += py-dtfabric SUBDIR += py-dulwich SUBDIR += py-dulwich020 SUBDIR += py-dunamai SUBDIR += py-durus SUBDIR += py-dynrules SUBDIR += py-easyprocess SUBDIR += py-editables SUBDIR += py-editdistance SUBDIR += py-eggtestinfo SUBDIR += py-ejson SUBDIR += py-enlighten SUBDIR += py-entrypoints SUBDIR += py-enum-compat SUBDIR += py-envier SUBDIR += py-envisage SUBDIR += py-envs SUBDIR += py-epc SUBDIR += py-epdb SUBDIR += py-epsilon SUBDIR += py-etils SUBDIR += py-evdev SUBDIR += py-eventlib SUBDIR += py-ewmh SUBDIR += py-exam SUBDIR += py-exceptiongroup SUBDIR += py-executing SUBDIR += py-expiringdict SUBDIR += py-extras SUBDIR += py-extremes SUBDIR += py-fabric SUBDIR += py-fabric3 SUBDIR += py-face SUBDIR += py-factory-boy SUBDIR += py-fam SUBDIR += py-fastbencode SUBDIR += py-fastcache SUBDIR += py-fasteners SUBDIR += py-fastentrypoints SUBDIR += py-fastf1 SUBDIR += py-fastimport SUBDIR += py-fastjsonschema SUBDIR += py-fastnumbers SUBDIR += py-fastprogress SUBDIR += py-fbprophet SUBDIR += py-fields SUBDIR += py-filebytes SUBDIR += py-filedepot SUBDIR += py-filemagic SUBDIR += py-filetype SUBDIR += py-find-libpython SUBDIR += py-findlibs SUBDIR += py-findpython SUBDIR += py-first SUBDIR += py-five.globalrequest SUBDIR += py-fixtures SUBDIR += py-flake8 SUBDIR += py-flake8-black SUBDIR += py-flake8-bugbear SUBDIR += py-flake8-builtins SUBDIR += py-flake8-comprehensions SUBDIR += py-flake8-docstrings SUBDIR += py-flake8-future-annotations SUBDIR += py-flake8-import-order SUBDIR += py-flake8-polyfill SUBDIR += py-flake8-print SUBDIR += py-flake8-pyi SUBDIR += py-flake8-quotes SUBDIR += py-flake8_simplify SUBDIR += py-flaky SUBDIR += py-flask-babel SUBDIR += py-flatbuffers SUBDIR += py-flatdict SUBDIR += py-flex SUBDIR += py-flexmock SUBDIR += py-flit SUBDIR += py-flit-core SUBDIR += py-flit-scm SUBDIR += py-fluent SUBDIR += py-fluent-logger SUBDIR += py-flufl.i18n SUBDIR += py-flufl.lock SUBDIR += py-flynt SUBDIR += py-foolscap SUBDIR += py-freebsd SUBDIR += py-freebsd-sysctl SUBDIR += py-freenas.utils SUBDIR += py-freezegun SUBDIR += py-frictionless SUBDIR += py-frictionless-ckan-mapper SUBDIR += py-frozendict SUBDIR += py-frozenlist SUBDIR += py-fs SUBDIR += py-fs2 SUBDIR += py-fsspec SUBDIR += py-fudge SUBDIR += py-funcparserlib SUBDIR += py-funcsigs SUBDIR += py-funcy SUBDIR += py-furl SUBDIR += py-fusepy SUBDIR += py-future SUBDIR += py-futurist SUBDIR += py-fuzzywuzzy SUBDIR += py-fypp SUBDIR += py-game SUBDIR += py-game_sdl2 SUBDIR += py-gapic-generator SUBDIR += py-gast SUBDIR += py-gelidum SUBDIR += py-genson SUBDIR += py-genty SUBDIR += py-geojson SUBDIR += py-get-reader SUBDIR += py-gevent SUBDIR += py-geventhttpclient SUBDIR += py-git-semver SUBDIR += py-git-up SUBDIR += py-git-url-parse SUBDIR += py-gitdb SUBDIR += py-gitlab-webhook-handler SUBDIR += py-gitless SUBDIR += py-gitpython SUBDIR += py-giturlparse SUBDIR += py-glance-store SUBDIR += py-glob2 SUBDIR += py-glom SUBDIR += py-gobject3 SUBDIR += py-google-cloud-iam SUBDIR += py-google-crc32c SUBDIR += py-google-i18n-address SUBDIR += py-google-pasta SUBDIR += py-google-re2 SUBDIR += py-googleapis-common-protos SUBDIR += py-gpep517 SUBDIR += py-gpxpy SUBDIR += py-grab SUBDIR += py-graphene SUBDIR += py-graphene-django SUBDIR += py-graphene-sqlalchemy SUBDIR += py-graphene2 SUBDIR += py-graphql-core SUBDIR += py-graphql-core2 SUBDIR += py-graphql-relay SUBDIR += py-graphql-relay2 SUBDIR += py-greenlet SUBDIR += py-grizzled SUBDIR += py-grpc-google-iam-v1 SUBDIR += py-grpc-stubs SUBDIR += py-grpcio SUBDIR += py-grpcio-gcp SUBDIR += py-grpcio-status SUBDIR += py-grpcio-tools SUBDIR += py-gs_api_client SUBDIR += py-gtfslib SUBDIR += py-guppy3 SUBDIR += py-gyp SUBDIR += py-hash_ring SUBDIR += py-hatch SUBDIR += py-hatch-fancy-pypi-readme SUBDIR += py-hatch-jupyter-builder SUBDIR += py-hatch-nodejs-version SUBDIR += py-hatch-requirements-txt SUBDIR += py-hatch-semver SUBDIR += py-hatch-vcs SUBDIR += py-hatchling SUBDIR += py-heapdict SUBDIR += py-helpdev SUBDIR += py-hg-evolve SUBDIR += py-hglib SUBDIR += py-hgtools SUBDIR += py-hidraw SUBDIR += py-holidays SUBDIR += py-homebase SUBDIR += py-http-prompt SUBDIR += py-humanize SUBDIR += py-hunter SUBDIR += py-hupper SUBDIR += py-hvac SUBDIR += py-hypothesis SUBDIR += py-hypothesmith SUBDIR += py-icalendar SUBDIR += py-ice SUBDIR += py-ice37 SUBDIR += py-identify SUBDIR += py-ijson SUBDIR += py-imgkit SUBDIR += py-immutabledict SUBDIR += py-immutables SUBDIR += py-importlab SUBDIR += py-importlib-metadata SUBDIR += py-importlib-resources SUBDIR += py-incremental SUBDIR += py-infinity SUBDIR += py-inflect SUBDIR += py-inflection SUBDIR += py-iniconfig SUBDIR += py-inifile SUBDIR += py-iniparse SUBDIR += py-installer SUBDIR += py-intbitset SUBDIR += py-intelhex SUBDIR += py-interface-meta SUBDIR += py-intervals SUBDIR += py-intervaltree SUBDIR += py-invoke SUBDIR += py-ioflo SUBDIR += py-iopath SUBDIR += py-ipaddr SUBDIR += py-ipdb SUBDIR += py-ipydatawidgets SUBDIR += py-ipykernel SUBDIR += py-ipympl SUBDIR += py-ipyparallel SUBDIR += py-ipython_genutils SUBDIR += py-ipywidgets SUBDIR += py-iso8601 SUBDIR += py-isodate SUBDIR += py-isoduration SUBDIR += py-isort SUBDIR += py-itanium_demangler SUBDIR += py-itemadapter SUBDIR += py-itemloaders SUBDIR += py-iteration-utilities SUBDIR += py-itertree SUBDIR += py-itypes SUBDIR += py-janus SUBDIR += py-jaraco SUBDIR += py-jaraco.classes SUBDIR += py-jaraco.context SUBDIR += py-jaraco.functools SUBDIR += py-jaraco.itertools SUBDIR += py-jaraco.logging SUBDIR += py-jaraco.text SUBDIR += py-jaraco.timing SUBDIR += py-jaraco.util SUBDIR += py-javaproperties SUBDIR += py-jdcal SUBDIR += py-jedi SUBDIR += py-jeepney SUBDIR += py-jellyfish SUBDIR += py-jenkins-job-builder SUBDIR += py-jep SUBDIR += py-jinja2-ansible-filters SUBDIR += py-jinja2-time SUBDIR += py-jira SUBDIR += py-jitterentropy SUBDIR += py-jmespath SUBDIR += py-joblib SUBDIR += py-jsbeautifier SUBDIR += py-jschema-to-python SUBDIR += py-jsmin SUBDIR += py-json5 SUBDIR += py-json_tricks SUBDIR += py-jsondiff SUBDIR += py-jsonform SUBDIR += py-jsonlines SUBDIR += py-jsonnet SUBDIR += py-jsonpatch SUBDIR += py-jsonpath-ng SUBDIR += py-jsonpath-rw SUBDIR += py-jsonpickle SUBDIR += py-jsonpointer SUBDIR += py-jsonref SUBDIR += py-jsonrpclib-pelix SUBDIR += py-jsonschema SUBDIR += py-jsonschema-spec SUBDIR += py-jsonschema3 SUBDIR += py-jsonsir SUBDIR += py-jupyter-client SUBDIR += py-jupyter-core SUBDIR += py-jupyter-events SUBDIR += py-jupyter-kernel-test SUBDIR += py-jupyter-lsp SUBDIR += py-jupyter-packaging SUBDIR += py-jupyter-server SUBDIR += py-jupyter-server-fileid SUBDIR += py-jupyter-server-mathjax SUBDIR += py-jupyter-server-terminals SUBDIR += py-jupyter-server-ydoc SUBDIR += py-jupyter-telemetry SUBDIR += py-jupyter-ydoc SUBDIR += py-jupyter_console SUBDIR += py-jupyterlab SUBDIR += py-jupyterlab-lsp SUBDIR += py-jupyterlab-server SUBDIR += py-jupyterlab-widgets SUBDIR += py-jupyterlab_launcher SUBDIR += py-kaitaistruct SUBDIR += py-kaptan SUBDIR += py-kazoo SUBDIR += py-keystone-engine SUBDIR += py-keystoneauth1 SUBDIR += py-keystonemiddleware SUBDIR += py-kitchen SUBDIR += py-klepto SUBDIR += py-knack SUBDIR += py-l18n SUBDIR += py-lark SUBDIR += py-launchpadlib SUBDIR += py-lazr.config SUBDIR += py-lazr.delegates SUBDIR += py-lazr.restfulclient SUBDIR += py-lazr.uri SUBDIR += py-lazy SUBDIR += py-lazy-object-proxy SUBDIR += py-lazy_loader SUBDIR += py-libcst SUBDIR += py-libcst03 SUBDIR += py-libioc SUBDIR += py-libpeas SUBDIR += py-libplist SUBDIR += py-libtaxii SUBDIR += py-libtmux SUBDIR += py-libusb1 SUBDIR += py-libversion SUBDIR += py-libvirt SUBDIR += py-libzfs SUBDIR += py-line-profiler SUBDIR += py-linear-tsv SUBDIR += py-linecache2 SUBDIR += py-lineedit SUBDIR += py-littleutils SUBDIR += py-livemark SUBDIR += py-llfuse SUBDIR += py-llvmcpy SUBDIR += py-llvmlite SUBDIR += py-lml SUBDIR += py-localstack-client SUBDIR += py-locket SUBDIR += py-lockfile SUBDIR += py-logan SUBDIR += py-logbook SUBDIR += py-logfury SUBDIR += py-logilab-common SUBDIR += py-loguru SUBDIR += py-logutils SUBDIR += py-logzero SUBDIR += py-louie SUBDIR += py-lru-dict SUBDIR += py-lsprotocol SUBDIR += py-lunardate SUBDIR += py-lxml SUBDIR += py-lxml-stubs SUBDIR += py-mac-vendor-lookup SUBDIR += py-macholib SUBDIR += py-magic SUBDIR += py-mailcap-fix SUBDIR += py-makefun SUBDIR += py-manuel SUBDIR += py-marrow.mailer SUBDIR += py-marrow.util SUBDIR += py-marshmallow SUBDIR += py-marshmallow-enum SUBDIR += py-matrix-angular-sdk SUBDIR += py-matrix-common SUBDIR += py-maturin SUBDIR += py-mccabe SUBDIR += py-mdv SUBDIR += py-mediafile SUBDIR += py-mediapy SUBDIR += py-medikit SUBDIR += py-memory-allocator SUBDIR += py-memory-profiler SUBDIR += py-mergedeep SUBDIR += py-microversion-parse SUBDIR += py-milc SUBDIR += py-mime SUBDIR += py-minidump SUBDIR += py-minimongo SUBDIR += py-minio SUBDIR += py-mock SUBDIR += py-molecule SUBDIR += py-mondrian SUBDIR += py-mongokit SUBDIR += py-monkeytype SUBDIR += py-monotonic SUBDIR += py-monty SUBDIR += py-more-itertools SUBDIR += py-moto SUBDIR += py-mox SUBDIR += py-mox3 SUBDIR += py-mrkd SUBDIR += py-msal SUBDIR += py-msal-extensions SUBDIR += py-msgpack SUBDIR += py-mulpyplexer SUBDIR += py-multi_key_dict SUBDIR += py-multipledispatch SUBDIR += py-multiprocess SUBDIR += py-multiset SUBDIR += py-multitasking SUBDIR += py-munch SUBDIR += py-murmurhash SUBDIR += py-mutmut SUBDIR += py-mygpoclient SUBDIR += py-mypy SUBDIR += py-mypy-boto3-s3 SUBDIR += py-mypy-protobuf SUBDIR += py-mypy_extensions SUBDIR += py-mystic SUBDIR += py-naiveBayesClassifier SUBDIR += py-nanotime SUBDIR += py-natsort SUBDIR += py-natural SUBDIR += py-nbclassic SUBDIR += py-nbclient SUBDIR += py-nbconvert SUBDIR += py-nbdime SUBDIR += py-nbformat SUBDIR += py-nbval SUBDIR += py-nest-asyncio SUBDIR += py-node-semver SUBDIR += py-nodeenv SUBDIR += py-nose SUBDIR += py-nose-cov SUBDIR += py-nose-timer SUBDIR += py-nose2 SUBDIR += py-noseofyeti SUBDIR += py-nosexcover SUBDIR += py-notebook-shim SUBDIR += py-notify2 SUBDIR += py-num2words SUBDIR += py-numba SUBDIR += py-objgraph SUBDIR += py-objsize SUBDIR += py-oci SUBDIR += py-odfpy SUBDIR += py-offtrac SUBDIR += py-olefile SUBDIR += py-oletools SUBDIR += py-omnijson SUBDIR += py-omniorb SUBDIR += py-onigurumacffi SUBDIR += py-opcodes SUBDIR += py-openapi-codec SUBDIR += py-openapi-core SUBDIR += py-openapi-schema-validator SUBDIR += py-openapi-spec-validator SUBDIR += py-opencensus SUBDIR += py-opencensus-context SUBDIR += py-opendht SUBDIR += py-opengrok-tools SUBDIR += py-openstacksdk SUBDIR += py-opentelemetry-api SUBDIR += py-opentracing SUBDIR += py-opster SUBDIR += py-optik SUBDIR += py-orange-canvas-core SUBDIR += py-orange-widget-base SUBDIR += py-orca SUBDIR += py-ordered-set SUBDIR += py-ordereddict SUBDIR += py-orderedmultidict SUBDIR += py-orjson SUBDIR += py-os-brick SUBDIR += py-os-client-config SUBDIR += py-os-service-types SUBDIR += py-os-vif SUBDIR += py-os-win SUBDIR += py-osc-lib SUBDIR += py-oslo.cache SUBDIR += py-oslo.concurrency SUBDIR += py-oslo.config SUBDIR += py-oslo.context SUBDIR += py-oslo.db SUBDIR += py-oslo.i18n SUBDIR += py-oslo.limit SUBDIR += py-oslo.log SUBDIR += py-oslo.messaging SUBDIR += py-oslo.metrics SUBDIR += py-oslo.middleware SUBDIR += py-oslo.policy SUBDIR += py-oslo.privsep SUBDIR += py-oslo.reports SUBDIR += py-oslo.rootwrap SUBDIR += py-oslo.serialization SUBDIR += py-oslo.service SUBDIR += py-oslo.upgradecheck SUBDIR += py-oslo.utils SUBDIR += py-oslo.versionedobjects SUBDIR += py-oslo.vmware SUBDIR += py-oslotest SUBDIR += py-osprofiler SUBDIR += py-outcome SUBDIR += py-ovs SUBDIR += py-ovsdbapp SUBDIR += py-p4python SUBDIR += py-packaging SUBDIR += py-packaging21 SUBDIR += py-parallax SUBDIR += py-param SUBDIR += py-parameterized SUBDIR += py-parsedatetime SUBDIR += py-parsley SUBDIR += py-parver SUBDIR += py-pastel SUBDIR += py-patch SUBDIR += py-patch-ng SUBDIR += py-path SUBDIR += py-path.py SUBDIR += py-pathable SUBDIR += py-pathlib2 SUBDIR += py-pathos SUBDIR += py-pathspec SUBDIR += py-pathtools SUBDIR += py-paver SUBDIR += py-pbr SUBDIR += py-pcodedmp SUBDIR += py-pdm SUBDIR += py-pdm-backend SUBDIR += py-pdm-pep517 SUBDIR += py-pdoc SUBDIR += py-pebble SUBDIR += py-pefile SUBDIR += py-pendulum SUBDIR += py-pep440 SUBDIR += py-pep517 SUBDIR += py-pep562 SUBDIR += py-pep621 SUBDIR += py-pep8-naming SUBDIR += py-period SUBDIR += py-persistent SUBDIR += py-petname SUBDIR += py-pew SUBDIR += py-pex SUBDIR += py-phabricator SUBDIR += py-phonenumbers SUBDIR += py-phply SUBDIR += py-phpserialize SUBDIR += py-phx-class-registry SUBDIR += py-pid SUBDIR += py-pika SUBDIR += py-pika-pool SUBDIR += py-pinocchio SUBDIR += py-pint SUBDIR += py-pint-pandas SUBDIR += py-pip SUBDIR += py-pip-api SUBDIR += py-pip-licenses SUBDIR += py-pip-run SUBDIR += py-pip-shims SUBDIR += py-pip-tools SUBDIR += py-pip-tools4 SUBDIR += py-pipdeptree SUBDIR += py-pipenv SUBDIR += py-pipreqs SUBDIR += py-pipx SUBDIR += py-pkgconfig SUBDIR += py-pkgutil-resolve-name SUBDIR += py-plac SUBDIR += py-plan SUBDIR += py-platformdirs SUBDIR += py-plette SUBDIR += py-plex SUBDIR += py-plucky SUBDIR += py-pluggy SUBDIR += py-pluggy0 SUBDIR += py-pluginbase SUBDIR += py-plux SUBDIR += py-ply SUBDIR += py-pockets SUBDIR += py-podcastparser SUBDIR += py-poetry SUBDIR += py-poetry-core SUBDIR += py-poetry-dynamic-versioning SUBDIR += py-poetry-plugin-export SUBDIR += py-poetry-semver SUBDIR += py-poetry-types SUBDIR += py-poetry2setup SUBDIR += py-polib SUBDIR += py-pooch SUBDIR += py-pop SUBDIR += py-pop-config SUBDIR += py-portalocker SUBDIR += py-positional SUBDIR += py-posix_ipc SUBDIR += py-pox SUBDIR += py-poyo SUBDIR += py-ppft SUBDIR += py-prance SUBDIR += py-pre-commit SUBDIR += py-pre-commit-hooks SUBDIR += py-prefixed SUBDIR += py-preshed SUBDIR += py-pretend SUBDIR += py-prettyprinter SUBDIR += py-prettytable SUBDIR += py-prettytable0 SUBDIR += py-process-tests SUBDIR += py-proglog SUBDIR += py-progress SUBDIR += py-promise SUBDIR += py-prompt-toolkit SUBDIR += py-prompt-toolkit1 SUBDIR += py-prompt-toolkit2 SUBDIR += py-property-cached SUBDIR += py-proselint SUBDIR += py-proto-plus SUBDIR += py-protobuf SUBDIR += py-protobuf-compiler SUBDIR += py-proxmoxer SUBDIR += py-ptable SUBDIR += py-ptpython SUBDIR += py-ptvsd SUBDIR += py-pudb SUBDIR += py-pure-eval SUBDIR += py-purl SUBDIR += py-py SUBDIR += py-py-partiql-parser SUBDIR += py-py-ubjson SUBDIR += py-pyTooling SUBDIR += py-py_interface SUBDIR += py-pyasn1 SUBDIR += py-pyasn1-modules SUBDIR += py-pybind11 SUBDIR += py-pybix SUBDIR += py-pycadf SUBDIR += py-pycalendar SUBDIR += py-pycallgraph SUBDIR += py-pycapsicum SUBDIR += py-pycerberus SUBDIR += py-pycmd SUBDIR += py-pycodeexport SUBDIR += py-pycodestyle SUBDIR += py-pycognito SUBDIR += py-pycompilation SUBDIR += py-pycomplete SUBDIR += py-pycparser SUBDIR += py-pydantic SUBDIR += py-pydash SUBDIR += py-pydecor SUBDIR += py-pydenticon SUBDIR += py-pydevd SUBDIR += py-pydispatcher SUBDIR += py-pydocstyle SUBDIR += py-pydrive SUBDIR += py-pyee SUBDIR += py-pyelftools SUBDIR += py-pyface SUBDIR += py-pyfcm SUBDIR += py-pyflakes SUBDIR += py-pyformance SUBDIR += py-pygdbmi SUBDIR += py-pygit2 SUBDIR += py-pygithub SUBDIR += py-pygpx SUBDIR += py-pyhashxx SUBDIR += py-pyhcl SUBDIR += py-pyicu SUBDIR += py-pyina SUBDIR += py-pyinotify SUBDIR += py-pyinquirer SUBDIR += py-pyinstaller SUBDIR += py-pyjq SUBDIR += py-pyjsparser SUBDIR += py-pylama SUBDIR += py-pylev SUBDIR += py-pylibsrtp SUBDIR += py-pylint-django SUBDIR += py-pylint-plugin-utils SUBDIR += py-pylint-venv SUBDIR += py-pylru SUBDIR += py-pylru-cache SUBDIR += py-pyls-black SUBDIR += py-pymarc SUBDIR += py-pymaven-patch SUBDIR += py-pymisp SUBDIR += py-pympler SUBDIR += py-pymsgbox SUBDIR += py-pymtbl SUBDIR += py-pynest2d SUBDIR += py-pyopencl SUBDIR += py-pyparsing SUBDIR += py-pyparsing2 SUBDIR += py-pyperclip SUBDIR += py-pyperf SUBDIR += py-pyplusplus SUBDIR += py-pyproject-flake8 SUBDIR += py-pyproject-fmt SUBDIR += py-pyproject-metadata SUBDIR += py-pyproject_hooks SUBDIR += py-pypugjs SUBDIR += py-pyqtree SUBDIR += py-pyquery SUBDIR += py-pyquil SUBDIR += py-pyral SUBDIR += py-pyrepl SUBDIR += py-pyrfc3339 SUBDIR += py-pyright SUBDIR += py-pyro SUBDIR += py-pyrsistent SUBDIR += py-pyscaffold SUBDIR += py-pysdl2 SUBDIR += py-pyshp SUBDIR += py-pysimdjson SUBDIR += py-pysparklines SUBDIR += py-pystorm SUBDIR += py-pyte SUBDIR += py-pytest SUBDIR += py-pytest-aiohttp SUBDIR += py-pytest-asyncio SUBDIR += py-pytest-azurepipelines SUBDIR += py-pytest-benchmark SUBDIR += py-pytest-black SUBDIR += py-pytest-black-multipy SUBDIR += py-pytest-cache SUBDIR += py-pytest-canonical-data SUBDIR += py-pytest-capturelog SUBDIR += py-pytest-checkdocs SUBDIR += py-pytest-console-scripts SUBDIR += py-pytest-cov SUBDIR += py-pytest-cpp SUBDIR += py-pytest-datadir SUBDIR += py-pytest-django SUBDIR += py-pytest-enabler SUBDIR += py-pytest-env SUBDIR += py-pytest-factoryboy SUBDIR += py-pytest-fixture-config SUBDIR += py-pytest-flake8 SUBDIR += py-pytest-flakes SUBDIR += py-pytest-flask SUBDIR += py-pytest-forked SUBDIR += py-pytest-freezegun SUBDIR += py-pytest-helpers-namespace SUBDIR += py-pytest-html SUBDIR += py-pytest-httpbin SUBDIR += py-pytest-httpserver SUBDIR += py-pytest-isort SUBDIR += py-pytest-lazy-fixture SUBDIR += py-pytest-localserver SUBDIR += py-pytest-markdown SUBDIR += py-pytest-metadata SUBDIR += py-pytest-mock SUBDIR += py-pytest-mpl SUBDIR += py-pytest-mutagen SUBDIR += py-pytest-mypy SUBDIR += py-pytest-mypy-plugins SUBDIR += py-pytest-nunit SUBDIR += py-pytest-order SUBDIR += py-pytest-parallel SUBDIR += py-pytest-pep8 SUBDIR += py-pytest-plus SUBDIR += py-pytest-profiling SUBDIR += py-pytest-pycodestyle SUBDIR += py-pytest-qt SUBDIR += py-pytest-random-order SUBDIR += py-pytest-randomly SUBDIR += py-pytest-regressions SUBDIR += py-pytest-regtest SUBDIR += py-pytest-relaxed SUBDIR += py-pytest-rerunfailures SUBDIR += py-pytest-runner SUBDIR += py-pytest-shutil SUBDIR += py-pytest-subtests SUBDIR += py-pytest-sugar SUBDIR += py-pytest-timeout SUBDIR += py-pytest-tornado SUBDIR += py-pytest-tornasync SUBDIR += py-pytest-translations SUBDIR += py-pytest-trio SUBDIR += py-pytest-twisted SUBDIR += py-pytest-verbose-parametrize SUBDIR += py-pytest-virtualenv SUBDIR += py-pytest-watcher SUBDIR += py-pytest-xdist SUBDIR += py-pytest-xprocess SUBDIR += py-pytest4 SUBDIR += py-pytest4-cache SUBDIR += py-pytest4-cov SUBDIR += py-pytest4-flakes SUBDIR += py-python-Levenshtein SUBDIR += py-python-application SUBDIR += py-python-bugzilla SUBDIR += py-python-dbusmock SUBDIR += py-python-decouple SUBDIR += py-python-distutils-extra SUBDIR += py-python-dtrace SUBDIR += py-python-easyconfig SUBDIR += py-python-editor SUBDIR += py-python-engineio SUBDIR += py-python-gflags SUBDIR += py-python-gilt SUBDIR += py-python-gist SUBDIR += py-python-gitlab SUBDIR += py-python-jenkins SUBDIR += py-python-json-logger SUBDIR += py-python-jsonrpc-server SUBDIR += py-python-magic SUBDIR += py-python-mimeparse SUBDIR += py-python-pcre SUBDIR += py-python-ptrace SUBDIR += py-python-rapidjson SUBDIR += py-python-socketio SUBDIR += py-python-statsd SUBDIR += py-python-subunit SUBDIR += py-pythonbrew SUBDIR += py-pythondialog SUBDIR += py-pythonfinder SUBDIR += py-pythran SUBDIR += py-pytimeparse SUBDIR += py-pytoolconfig SUBDIR += py-pytools SUBDIR += py-pytrie SUBDIR += py-pytvmaze SUBDIR += py-pytweening SUBDIR += py-pytz SUBDIR += py-pytz-deprecation-shim SUBDIR += py-pytzdata SUBDIR += py-pyudev SUBDIR += py-pyupgrade SUBDIR += py-pyusb SUBDIR += py-pyvisa SUBDIR += py-pyvisa-py SUBDIR += py-pyxb SUBDIR += py-pyyaml-include SUBDIR += py-pyyaml5 SUBDIR += py-pyyaml_env_tag SUBDIR += py-pyzipper SUBDIR += py-q SUBDIR += py-qasync SUBDIR += py-qcs-api-client SUBDIR += py-qstylizer SUBDIR += py-qt5 SUBDIR += py-qt5-pyqt SUBDIR += py-qt5-qscintilla2 SUBDIR += py-qt5-sip SUBDIR += py-qt6 SUBDIR += py-qt6-pyqt SUBDIR += py-qt6-qscintilla2 SUBDIR += py-qt6-sip SUBDIR += py-qtbuilder SUBDIR += py-qtconsole SUBDIR += py-questionary SUBDIR += py-qutip SUBDIR += py-qutip-qip SUBDIR += py-ramlfications SUBDIR += py-rapidfuzz SUBDIR += py-rapidfuzz-capi SUBDIR += py-rapidfuzz2 SUBDIR += py-ratelimiter SUBDIR += py-rauth SUBDIR += py-raven SUBDIR += py-rchitect SUBDIR += py-re-assert SUBDIR += py-readme-renderer SUBDIR += py-rebulk SUBDIR += py-recordclass SUBDIR += py-recurring-ical-events SUBDIR += py-rednose SUBDIR += py-reedsolo SUBDIR += py-remote-pdb SUBDIR += py-repoze.lru SUBDIR += py-repoze.sphinx.autointerface SUBDIR += py-repoze.tm2 SUBDIR += py-repoze.who SUBDIR += py-repoze.xmliter SUBDIR += py-represent SUBDIR += py-requestsexceptions SUBDIR += py-requirements-detector SUBDIR += py-requirementslib SUBDIR += py-resolvelib SUBDIR += py-resolvelib05 SUBDIR += py-resolvelib07 SUBDIR += py-resolvelib1 SUBDIR += py-resolver SUBDIR += py-resource SUBDIR += py-responses SUBDIR += py-retry2 SUBDIR += py-retrying SUBDIR += py-retype SUBDIR += py-rfc3339 SUBDIR += py-rfc3339-validator SUBDIR += py-rfc3986-validator SUBDIR += py-robotframework SUBDIR += py-robotframework-databaselibrary SUBDIR += py-robotframework-pabot SUBDIR += py-robotframework-pythonlibcore SUBDIR += py-robotframework-requests SUBDIR += py-robotframework-seleniumlibrary SUBDIR += py-robotframework-stacktrace SUBDIR += py-robotremoteserver SUBDIR += py-rope SUBDIR += py-rose SUBDIR += py-rpcq SUBDIR += py-rply SUBDIR += py-rq SUBDIR += py-rq-scheduler SUBDIR += py-rstr SUBDIR += py-rtree SUBDIR += py-rtslib-fb SUBDIR += py-ruamel.yaml SUBDIR += py-ruamel.yaml.clib SUBDIR += py-rubymarshal SUBDIR += py-rush SUBDIR += py-rx SUBDIR += py-rx1 SUBDIR += py-saneyaml SUBDIR += py-sarge SUBDIR += py-sarif-om SUBDIR += py-scantree SUBDIR += py-schedule SUBDIR += py-scheduler SUBDIR += py-schema SUBDIR += py-schematics-patched SUBDIR += py-scikit-build SUBDIR += py-scikit-build-core SUBDIR += py-scooby SUBDIR += py-scripttest SUBDIR += py-selection SUBDIR += py-semantic-version SUBDIR += py-semver SUBDIR += py-sentry-sdk SUBDIR += py-serializable SUBDIR += py-serpent SUBDIR += py-session-info SUBDIR += py-setproctitle SUBDIR += py-setuptools SUBDIR += py-setuptools-declarative-requirements SUBDIR += py-setuptools-git SUBDIR += py-setuptools-pkg SUBDIR += py-setuptools-rust SUBDIR += py-setuptools44 SUBDIR += py-setuptools58 SUBDIR += py-setuptools_git_ls_files SUBDIR += py-setuptools_hg SUBDIR += py-setuptools_scm SUBDIR += py-setuptools_scm7 SUBDIR += py-setuptools_scm_git_archive SUBDIR += py-sexpdata SUBDIR += py-sgmllib3k SUBDIR += py-sh SUBDIR += py-shapely SUBDIR += py-shellingham SUBDIR += py-shtab SUBDIR += py-signalr-client-aio SUBDIR += py-simple-term-menu SUBDIR += py-simpleeval SUBDIR += py-simplegeneric SUBDIR += py-simplejson SUBDIR += py-simpleparse SUBDIR += py-simpletal SUBDIR += py-simpy SUBDIR += py-single-version SUBDIR += py-sip SUBDIR += py-sip4 SUBDIR += py-six SUBDIR += py-smmap SUBDIR += py-snakeviz SUBDIR += py-sniffio SUBDIR += py-sortedcontainers SUBDIR += py-sourcemap SUBDIR += py-sparse SUBDIR += py-speaklater SUBDIR += py-speg SUBDIR += py-spyder-kernels SUBDIR += py-spyder-unittest SUBDIR += py-squint SUBDIR += py-sre-yield SUBDIR += py-srsly SUBDIR += py-stack-data SUBDIR += py-stackexchange SUBDIR += py-statgrab SUBDIR += py-statsd SUBDIR += py-stdlib-list SUBDIR += py-stdnum SUBDIR += py-stevedore SUBDIR += py-stone SUBDIR += py-stopit SUBDIR += py-strategies SUBDIR += py-streamparse SUBDIR += py-strict-rfc3339 SUBDIR += py-stringbrewer SUBDIR += py-stringcase SUBDIR += py-structlog SUBDIR += py-subprocess-tee SUBDIR += py-subversion SUBDIR += py-sure SUBDIR += py-swagger-spec-validator SUBDIR += py-synr SUBDIR += py-sysctl SUBDIR += py-sysv_ipc SUBDIR += py-tables SUBDIR += py-tabulate SUBDIR += py-tabulator SUBDIR += py-tailer SUBDIR += py-tapi SUBDIR += py-tarantool-queue SUBDIR += py-tartiflette SUBDIR += py-tartiflette-aiohttp SUBDIR += py-taskflow SUBDIR += py-tasklib SUBDIR += py-tblib SUBDIR += py-tdworkflow SUBDIR += py-telepath SUBDIR += py-tempora SUBDIR += py-tenacity SUBDIR += py-tendo SUBDIR += py-termcolor SUBDIR += py-termcolor-whl SUBDIR += py-termstyle SUBDIR += py-testfixtures SUBDIR += py-testinfra SUBDIR += py-testoob SUBDIR += py-testpath SUBDIR += py-testrepository SUBDIR += py-testresources SUBDIR += py-testscenarios SUBDIR += py-testtools SUBDIR += py-thefuzz SUBDIR += py-threadpoolctl SUBDIR += py-threema-msgapi SUBDIR += py-thrift SUBDIR += py-thriftpy2 SUBDIR += py-tiamat SUBDIR += py-timelib SUBDIR += py-timeout-decorator SUBDIR += py-tinyarray SUBDIR += py-tinyrpc SUBDIR += py-tipper SUBDIR += py-tokenize-rt SUBDIR += py-toolz SUBDIR += py-tooz SUBDIR += py-toposort SUBDIR += py-tox SUBDIR += py-traceback2 SUBDIR += py-traitlets SUBDIR += py-traits SUBDIR += py-traittypes SUBDIR += py-transaction SUBDIR += py-transitions SUBDIR += py-tree-format SUBDIR += py-treelib SUBDIR += py-trimesh SUBDIR += py-trove-classifiers SUBDIR += py-ttictoc SUBDIR += py-ttkbootstrap SUBDIR += py-ttystatus SUBDIR += py-twiggy SUBDIR += py-twilio SUBDIR += py-twine SUBDIR += py-twisted SUBDIR += py-txaio SUBDIR += py-txi2p-tahoe SUBDIR += py-typechecks SUBDIR += py-typed-ast SUBDIR += py-typeguard SUBDIR += py-typer SUBDIR += py-types-Flask SUBDIR += py-types-Jinja2 SUBDIR += py-types-MarkupSafe SUBDIR += py-types-Pillow SUBDIR += py-types-PyYAML SUBDIR += py-types-Werkzeug SUBDIR += py-types-click SUBDIR += py-types-cryptography SUBDIR += py-types-docutils SUBDIR += py-types-futures SUBDIR += py-types-mock SUBDIR += py-types-protobuf SUBDIR += py-types-psutil SUBDIR += py-types-psycopg2 SUBDIR += py-types-requests SUBDIR += py-types-setuptools SUBDIR += py-types-toml SUBDIR += py-types-typed-ast SUBDIR += py-types-urllib3 SUBDIR += py-typing-extensions SUBDIR += py-typing-inspect SUBDIR += py-tzdata SUBDIR += py-tzlocal SUBDIR += py-u-msgpack-python SUBDIR += py-ua_parser SUBDIR += py-ubelt SUBDIR += py-uhid-freebsd SUBDIR += py-ujson SUBDIR += py-unearth SUBDIR += py-unicodecsv SUBDIR += py-unicodedata2 SUBDIR += py-unipath SUBDIR += py-unittest2 SUBDIR += py-unittest2pytest SUBDIR += py-unpaddedbase64 SUBDIR += py-update_checker SUBDIR += py-urlimport SUBDIR += py-urwid SUBDIR += py-urwid-readline SUBDIR += py-urwidtrees SUBDIR += py-us SUBDIR += py-user_agents SUBDIR += py-userpath SUBDIR += py-uvloop SUBDIR += py-validate-pyproject SUBDIR += py-validators SUBDIR += py-validictory SUBDIR += py-vcrpy SUBDIR += py-vcver SUBDIR += py-vcversioner SUBDIR += py-venusian SUBDIR += py-verboselogs SUBDIR += py-versioneer SUBDIR += py-versiontools SUBDIR += py-verspec SUBDIR += py-vine SUBDIR += py-virtualenv SUBDIR += py-virtualenv-api SUBDIR += py-virtualenv-clone SUBDIR += py-virtualenvwrapper SUBDIR += py-visidata SUBDIR += py-visitor SUBDIR += py-vistir SUBDIR += py-voluptuous SUBDIR += py-voluptuous-serialize SUBDIR += py-vsts SUBDIR += py-vsts-cd-manager SUBDIR += py-vulture SUBDIR += py-wadllib SUBDIR += py-warlock SUBDIR += py-watchdog SUBDIR += py-watchfiles SUBDIR += py-watchgod SUBDIR += py-watermark SUBDIR += py-wcwidth SUBDIR += py-weblib SUBDIR += py-websockets SUBDIR += py-websockify SUBDIR += py-wheel SUBDIR += py-whichcraft SUBDIR += py-whistle SUBDIR += py-widgetsnbextension SUBDIR += py-wlc SUBDIR += py-woops SUBDIR += py-wrapt SUBDIR += py-wsgi-intercept SUBDIR += py-wsgi_xmlrpc SUBDIR += py-wsgitools SUBDIR += py-wsgiutils SUBDIR += py-wsme SUBDIR += py-x-wr-timezone SUBDIR += py-xarray SUBDIR += py-xarray-einstats SUBDIR += py-xarray-simlab SUBDIR += py-xattr SUBDIR += py-xcaplib SUBDIR += py-xdg SUBDIR += py-xdis SUBDIR += py-xdoctest SUBDIR += py-xerox SUBDIR += py-xmltodict SUBDIR += py-xstatic SUBDIR += py-xstatic-angular SUBDIR += py-xstatic-angular-bootstrap SUBDIR += py-xstatic-angular-fileupload SUBDIR += py-xstatic-angular-gettext SUBDIR += py-xstatic-angular-lrdragndrop SUBDIR += py-xstatic-angular-schema-form SUBDIR += py-xstatic-bootstrap-datepicker SUBDIR += py-xstatic-bootstrap-scss SUBDIR += py-xstatic-bootswatch SUBDIR += py-xstatic-d3 SUBDIR += py-xstatic-font-awesome SUBDIR += py-xstatic-hogan SUBDIR += py-xstatic-jasmine SUBDIR += py-xstatic-jquery SUBDIR += py-xstatic-jquery-migrate SUBDIR += py-xstatic-jquery-ui SUBDIR += py-xstatic-jquery.quicksearch SUBDIR += py-xstatic-jquery.tablesorter SUBDIR += py-xstatic-jsencrypt SUBDIR += py-xstatic-mdi SUBDIR += py-xstatic-objectpath SUBDIR += py-xstatic-rickshaw SUBDIR += py-xstatic-roboto-fontface SUBDIR += py-xstatic-smart-table SUBDIR += py-xstatic-spin SUBDIR += py-xstatic-term.js SUBDIR += py-xstatic-tv4 SUBDIR += py-xxhash SUBDIR += py-y-py SUBDIR += py-yacs SUBDIR += py-yaml SUBDIR += py-yamllint SUBDIR += py-yamlordereddictloader SUBDIR += py-yandex-money-sdk SUBDIR += py-yappi SUBDIR += py-yapps2 SUBDIR += py-yarg SUBDIR += py-yaspin SUBDIR += py-yattag SUBDIR += py-yg.lockfile SUBDIR += py-ypy-websocket SUBDIR += py-yunomi SUBDIR += py-z3c.autoinclude SUBDIR += py-z3c.batching SUBDIR += py-z3c.zcmlhook SUBDIR += py-zarr SUBDIR += py-zc.buildout SUBDIR += py-zclockfile SUBDIR += py-zconfig SUBDIR += py-zfp SUBDIR += py-zict SUBDIR += py-zipp SUBDIR += py-zope.app.basicskin SUBDIR += py-zope.app.renderer SUBDIR += py-zope.app.schema SUBDIR += py-zope.broken SUBDIR += py-zope.browser SUBDIR += py-zope.browserresource SUBDIR += py-zope.cachedescriptors SUBDIR += py-zope.component SUBDIR += py-zope.configuration SUBDIR += py-zope.contentprovider SUBDIR += py-zope.contenttype SUBDIR += py-zope.copy SUBDIR += py-zope.datetime SUBDIR += py-zope.deferredimport SUBDIR += py-zope.deprecation SUBDIR += py-zope.dottedname SUBDIR += py-zope.event SUBDIR += py-zope.exceptions SUBDIR += py-zope.filerepresentation SUBDIR += py-zope.generations SUBDIR += py-zope.globalrequest SUBDIR += py-zope.i18n SUBDIR += py-zope.interface SUBDIR += py-zope.lifecycleevent SUBDIR += py-zope.location SUBDIR += py-zope.processlifetime SUBDIR += py-zope.publisher SUBDIR += py-zope.schema SUBDIR += py-zope.sequencesort SUBDIR += py-zope.size SUBDIR += py-zope.tales SUBDIR += py-zope.testbrowser SUBDIR += py-zope.testing SUBDIR += py-zope.traversing SUBDIR += py3c SUBDIR += pybind11 SUBDIR += pybind11-json SUBDIR += pybugz SUBDIR += pycanberra SUBDIR += pycharm-ce SUBDIR += pycharm-pro SUBDIR += pycos SUBDIR += pycount SUBDIR += pydbus-common SUBDIR += pydeps SUBDIR += pyderasn SUBDIR += pyenv SUBDIR += pygobject3-common SUBDIR += pylint SUBDIR += pyobfuscate SUBDIR += pyotherside-qt5 SUBDIR += pyside2 SUBDIR += pyside2-tools SUBDIR += pystring SUBDIR += pysvn SUBDIR += pythontidy SUBDIR += pytype SUBDIR += qbe SUBDIR += qca SUBDIR += qconf SUBDIR += qcoro SUBDIR += qgit SUBDIR += qjson SUBDIR += qmake SUBDIR += qschematic SUBDIR += qscintilla2-designerplugin-qt5 SUBDIR += qscintilla2-qt5 SUBDIR += qscintilla2-qt6 SUBDIR += qt-maybe SUBDIR += qt5 SUBDIR += qt5-assistant SUBDIR += qt5-buildtools SUBDIR += qt5-concurrent SUBDIR += qt5-core SUBDIR += qt5-dbus SUBDIR += qt5-designer SUBDIR += qt5-help SUBDIR += qt5-linguist SUBDIR += qt5-linguisttools SUBDIR += qt5-location SUBDIR += qt5-qdbus SUBDIR += qt5-qdbusviewer SUBDIR += qt5-qdoc SUBDIR += qt5-qdoc-data SUBDIR += qt5-qmake SUBDIR += qt5-remoteobjects SUBDIR += qt5-script SUBDIR += qt5-scripttools SUBDIR += qt5-scxml SUBDIR += qt5-testlib SUBDIR += qt5-uitools SUBDIR += qt6 SUBDIR += qt6-5compat SUBDIR += qt6-base SUBDIR += qt6-languageserver SUBDIR += qt6-positioning SUBDIR += qt6-remoteobjects SUBDIR += qt6-scxml SUBDIR += qt6-tools SUBDIR += qt6-translations SUBDIR += qtcreator SUBDIR += quantum SUBDIR += quickcheck++ SUBDIR += quilt SUBDIR += qxlsx SUBDIR += rabs SUBDIR += radare2 SUBDIR += radian SUBDIR += ragel SUBDIR += raknet SUBDIR += random123 SUBDIR += rang SUBDIR += range-v3 SUBDIR += rapidcheck SUBDIR += rapidfuzz-cpp SUBDIR += rapidjson SUBDIR += rapidyaml SUBDIR += rationl SUBDIR += raylib SUBDIR += rbenv SUBDIR += rbtools SUBDIR += rclint SUBDIR += rcs SUBDIR += rcs57 SUBDIR += re2 SUBDIR += re2c SUBDIR += readerwriterqueue SUBDIR += readline SUBDIR += rebar SUBDIR += rebar3 SUBDIR += recycle SUBDIR += redasm SUBDIR += redo SUBDIR += regexx SUBDIR += regexxer SUBDIR += remake SUBDIR += remotery SUBDIR += replay SUBDIR += replxx SUBDIR += reproc SUBDIR += resolv_wrapper SUBDIR += revive SUBDIR += rgbds SUBDIR += rgxg SUBDIR += rhtvision SUBDIR += rinutils SUBDIR += riscv32-unknown-elf-gcc SUBDIR += riscv64-none-elf-gcc SUBDIR += rkcommon SUBDIR += rlog SUBDIR += rlwrap SUBDIR += robin-hood-hashing SUBDIR += robin-map SUBDIR += roboctl SUBDIR += robodoc SUBDIR += root SUBDIR += ros-catkin SUBDIR += ros-catkin_pkg SUBDIR += ros-console_bridge SUBDIR += ros-rosdep SUBDIR += ros-rosdistro SUBDIR += ros-rosinstall_generator SUBDIR += ros-rospkg SUBDIR += ros-urdfdom SUBDIR += ros-urdfdom_headers SUBDIR += ros-vcstool SUBDIR += ros-vcstools SUBDIR += ros-wstool SUBDIR += roswell SUBDIR += rote SUBDIR += rpc2 SUBDIR += rpclib SUBDIR += rsvndump SUBDIR += rth SUBDIR += rttr SUBDIR += ruby-bsearch SUBDIR += ruby-build SUBDIR += ruby-gems SUBDIR += ruby-install SUBDIR += ruby-rbprof SUBDIR += ruby-setup.rb SUBDIR += ruby-subversion SUBDIR += rubygem-CFPropertyList SUBDIR += rubygem-abstract SUBDIR += rubygem-actionpack-action_caching SUBDIR += rubygem-actionpack-page_caching SUBDIR += rubygem-actionview4 SUBDIR += rubygem-actionview5 SUBDIR += rubygem-actionview50 SUBDIR += rubygem-actionview52 SUBDIR += rubygem-actionview60 SUBDIR += rubygem-actionview61 SUBDIR += rubygem-actionview70 SUBDIR += rubygem-active_scaffold SUBDIR += rubygem-activejob4 SUBDIR += rubygem-activejob5 SUBDIR += rubygem-activejob50 SUBDIR += rubygem-activejob52 SUBDIR += rubygem-activejob60 SUBDIR += rubygem-activejob61 SUBDIR += rubygem-activejob70 SUBDIR += rubygem-activemessaging SUBDIR += rubygem-activerecord-deprecated_finders SUBDIR += rubygem-activesupport4 SUBDIR += rubygem-activesupport5 SUBDIR += rubygem-activesupport50 SUBDIR += rubygem-activesupport52 SUBDIR += rubygem-activesupport60 SUBDIR += rubygem-activesupport61 SUBDIR += rubygem-activesupport70 SUBDIR += rubygem-airborne SUBDIR += rubygem-akismet SUBDIR += rubygem-algebrick SUBDIR += rubygem-algorithms SUBDIR += rubygem-aliyun-sdk SUBDIR += rubygem-allison SUBDIR += rubygem-amazing_print SUBDIR += rubygem-analogger SUBDIR += rubygem-annoy SUBDIR += rubygem-ansi SUBDIR += rubygem-apipie-bindings SUBDIR += rubygem-apipie-params SUBDIR += rubygem-app_config SUBDIR += rubygem-appraisal SUBDIR += rubygem-arr-pm SUBDIR += rubygem-arrayfields SUBDIR += rubygem-ascii85 SUBDIR += rubygem-asetus SUBDIR += rubygem-aspectr SUBDIR += rubygem-ast SUBDIR += rubygem-astrolabe SUBDIR += rubygem-async SUBDIR += rubygem-async-io SUBDIR += rubygem-atomic SUBDIR += rubygem-attic SUBDIR += rubygem-attr_required SUBDIR += rubygem-authlogic SUBDIR += rubygem-avro SUBDIR += rubygem-awesome_print SUBDIR += rubygem-awrence SUBDIR += rubygem-aws-crt SUBDIR += rubygem-aws-eventstream SUBDIR += rubygem-aws-partitions SUBDIR += rubygem-aws-sdk SUBDIR += rubygem-aws-sdk-accessanalyzer SUBDIR += rubygem-aws-sdk-account SUBDIR += rubygem-aws-sdk-acm SUBDIR += rubygem-aws-sdk-acmpca SUBDIR += rubygem-aws-sdk-alexaforbusiness SUBDIR += rubygem-aws-sdk-amplify SUBDIR += rubygem-aws-sdk-amplifybackend SUBDIR += rubygem-aws-sdk-amplifyuibuilder SUBDIR += rubygem-aws-sdk-apigateway SUBDIR += rubygem-aws-sdk-apigatewaymanagementapi SUBDIR += rubygem-aws-sdk-apigatewayv2 SUBDIR += rubygem-aws-sdk-appconfig SUBDIR += rubygem-aws-sdk-appconfigdata SUBDIR += rubygem-aws-sdk-appflow SUBDIR += rubygem-aws-sdk-appintegrationsservice SUBDIR += rubygem-aws-sdk-applicationautoscaling SUBDIR += rubygem-aws-sdk-applicationcostprofiler SUBDIR += rubygem-aws-sdk-applicationdiscoveryservice SUBDIR += rubygem-aws-sdk-applicationinsights SUBDIR += rubygem-aws-sdk-appmesh SUBDIR += rubygem-aws-sdk-appregistry SUBDIR += rubygem-aws-sdk-apprunner SUBDIR += rubygem-aws-sdk-appstream SUBDIR += rubygem-aws-sdk-appsync SUBDIR += rubygem-aws-sdk-arczonalshift SUBDIR += rubygem-aws-sdk-athena SUBDIR += rubygem-aws-sdk-auditmanager SUBDIR += rubygem-aws-sdk-augmentedairuntime SUBDIR += rubygem-aws-sdk-autoscaling SUBDIR += rubygem-aws-sdk-autoscalingplans SUBDIR += rubygem-aws-sdk-backup SUBDIR += rubygem-aws-sdk-backupgateway SUBDIR += rubygem-aws-sdk-backupstorage SUBDIR += rubygem-aws-sdk-batch SUBDIR += rubygem-aws-sdk-billingconductor SUBDIR += rubygem-aws-sdk-braket SUBDIR += rubygem-aws-sdk-budgets SUBDIR += rubygem-aws-sdk-chime SUBDIR += rubygem-aws-sdk-chimesdkidentity SUBDIR += rubygem-aws-sdk-chimesdkmediapipelines SUBDIR += rubygem-aws-sdk-chimesdkmeetings SUBDIR += rubygem-aws-sdk-chimesdkmessaging SUBDIR += rubygem-aws-sdk-chimesdkvoice SUBDIR += rubygem-aws-sdk-cleanrooms SUBDIR += rubygem-aws-sdk-cloud9 SUBDIR += rubygem-aws-sdk-cloudcontrolapi SUBDIR += rubygem-aws-sdk-clouddirectory SUBDIR += rubygem-aws-sdk-cloudformation SUBDIR += rubygem-aws-sdk-cloudfront SUBDIR += rubygem-aws-sdk-cloudhsm SUBDIR += rubygem-aws-sdk-cloudhsmv2 SUBDIR += rubygem-aws-sdk-cloudsearch SUBDIR += rubygem-aws-sdk-cloudsearchdomain SUBDIR += rubygem-aws-sdk-cloudtrail SUBDIR += rubygem-aws-sdk-cloudtraildata SUBDIR += rubygem-aws-sdk-cloudwatch SUBDIR += rubygem-aws-sdk-cloudwatchevents SUBDIR += rubygem-aws-sdk-cloudwatchevidently SUBDIR += rubygem-aws-sdk-cloudwatchlogs SUBDIR += rubygem-aws-sdk-cloudwatchrum SUBDIR += rubygem-aws-sdk-codeartifact SUBDIR += rubygem-aws-sdk-codebuild SUBDIR += rubygem-aws-sdk-codecatalyst SUBDIR += rubygem-aws-sdk-codecommit SUBDIR += rubygem-aws-sdk-codedeploy SUBDIR += rubygem-aws-sdk-codeguruprofiler SUBDIR += rubygem-aws-sdk-codegurureviewer SUBDIR += rubygem-aws-sdk-codepipeline SUBDIR += rubygem-aws-sdk-codestar SUBDIR += rubygem-aws-sdk-codestarconnections SUBDIR += rubygem-aws-sdk-codestarnotifications SUBDIR += rubygem-aws-sdk-cognitoidentity SUBDIR += rubygem-aws-sdk-cognitoidentityprovider SUBDIR += rubygem-aws-sdk-cognitosync SUBDIR += rubygem-aws-sdk-comprehend SUBDIR += rubygem-aws-sdk-comprehendmedical SUBDIR += rubygem-aws-sdk-computeoptimizer SUBDIR += rubygem-aws-sdk-configservice SUBDIR += rubygem-aws-sdk-connect SUBDIR += rubygem-aws-sdk-connectcampaignservice SUBDIR += rubygem-aws-sdk-connectcases SUBDIR += rubygem-aws-sdk-connectcontactlens SUBDIR += rubygem-aws-sdk-connectparticipant SUBDIR += rubygem-aws-sdk-connectwisdomservice SUBDIR += rubygem-aws-sdk-controltower SUBDIR += rubygem-aws-sdk-core SUBDIR += rubygem-aws-sdk-core2 SUBDIR += rubygem-aws-sdk-core3170 SUBDIR += rubygem-aws-sdk-costandusagereportservice SUBDIR += rubygem-aws-sdk-costexplorer SUBDIR += rubygem-aws-sdk-customerprofiles SUBDIR += rubygem-aws-sdk-databasemigrationservice SUBDIR += rubygem-aws-sdk-dataexchange SUBDIR += rubygem-aws-sdk-datapipeline SUBDIR += rubygem-aws-sdk-datasync SUBDIR += rubygem-aws-sdk-dax SUBDIR += rubygem-aws-sdk-detective SUBDIR += rubygem-aws-sdk-devicefarm SUBDIR += rubygem-aws-sdk-devopsguru SUBDIR += rubygem-aws-sdk-directconnect SUBDIR += rubygem-aws-sdk-directoryservice SUBDIR += rubygem-aws-sdk-dlm SUBDIR += rubygem-aws-sdk-docdb SUBDIR += rubygem-aws-sdk-docdbelastic SUBDIR += rubygem-aws-sdk-drs SUBDIR += rubygem-aws-sdk-dynamodb SUBDIR += rubygem-aws-sdk-dynamodbstreams SUBDIR += rubygem-aws-sdk-ebs SUBDIR += rubygem-aws-sdk-ec2 SUBDIR += rubygem-aws-sdk-ec2instanceconnect SUBDIR += rubygem-aws-sdk-ecr SUBDIR += rubygem-aws-sdk-ecrpublic SUBDIR += rubygem-aws-sdk-ecs SUBDIR += rubygem-aws-sdk-efs SUBDIR += rubygem-aws-sdk-eks SUBDIR += rubygem-aws-sdk-elasticache SUBDIR += rubygem-aws-sdk-elasticbeanstalk SUBDIR += rubygem-aws-sdk-elasticinference SUBDIR += rubygem-aws-sdk-elasticloadbalancing SUBDIR += rubygem-aws-sdk-elasticloadbalancingv2 SUBDIR += rubygem-aws-sdk-elasticsearchservice SUBDIR += rubygem-aws-sdk-elastictranscoder SUBDIR += rubygem-aws-sdk-emr SUBDIR += rubygem-aws-sdk-emrcontainers SUBDIR += rubygem-aws-sdk-emrserverless SUBDIR += rubygem-aws-sdk-eventbridge SUBDIR += rubygem-aws-sdk-finspace SUBDIR += rubygem-aws-sdk-finspacedata SUBDIR += rubygem-aws-sdk-firehose SUBDIR += rubygem-aws-sdk-fis SUBDIR += rubygem-aws-sdk-fms SUBDIR += rubygem-aws-sdk-forecastqueryservice SUBDIR += rubygem-aws-sdk-forecastservice SUBDIR += rubygem-aws-sdk-frauddetector SUBDIR += rubygem-aws-sdk-fsx SUBDIR += rubygem-aws-sdk-gamelift SUBDIR += rubygem-aws-sdk-gamesparks SUBDIR += rubygem-aws-sdk-glacier SUBDIR += rubygem-aws-sdk-globalaccelerator SUBDIR += rubygem-aws-sdk-glue SUBDIR += rubygem-aws-sdk-gluedatabrew SUBDIR += rubygem-aws-sdk-greengrass SUBDIR += rubygem-aws-sdk-greengrassv2 SUBDIR += rubygem-aws-sdk-groundstation SUBDIR += rubygem-aws-sdk-guardduty SUBDIR += rubygem-aws-sdk-health SUBDIR += rubygem-aws-sdk-healthlake SUBDIR += rubygem-aws-sdk-honeycode SUBDIR += rubygem-aws-sdk-iam SUBDIR += rubygem-aws-sdk-identitystore SUBDIR += rubygem-aws-sdk-imagebuilder SUBDIR += rubygem-aws-sdk-importexport SUBDIR += rubygem-aws-sdk-inspector SUBDIR += rubygem-aws-sdk-inspector2 SUBDIR += rubygem-aws-sdk-internetmonitor SUBDIR += rubygem-aws-sdk-iot SUBDIR += rubygem-aws-sdk-iot1clickdevicesservice SUBDIR += rubygem-aws-sdk-iot1clickprojects SUBDIR += rubygem-aws-sdk-iotanalytics SUBDIR += rubygem-aws-sdk-iotdataplane SUBDIR += rubygem-aws-sdk-iotdeviceadvisor SUBDIR += rubygem-aws-sdk-iotevents SUBDIR += rubygem-aws-sdk-ioteventsdata SUBDIR += rubygem-aws-sdk-iotfleethub SUBDIR += rubygem-aws-sdk-iotfleetwise SUBDIR += rubygem-aws-sdk-iotjobsdataplane SUBDIR += rubygem-aws-sdk-iotroborunner SUBDIR += rubygem-aws-sdk-iotsecuretunneling SUBDIR += rubygem-aws-sdk-iotsitewise SUBDIR += rubygem-aws-sdk-iotthingsgraph SUBDIR += rubygem-aws-sdk-iottwinmaker SUBDIR += rubygem-aws-sdk-iotwireless SUBDIR += rubygem-aws-sdk-ivs SUBDIR += rubygem-aws-sdk-ivschat SUBDIR += rubygem-aws-sdk-ivsrealtime SUBDIR += rubygem-aws-sdk-kafka SUBDIR += rubygem-aws-sdk-kafkaconnect SUBDIR += rubygem-aws-sdk-kendra SUBDIR += rubygem-aws-sdk-kendraranking SUBDIR += rubygem-aws-sdk-keyspaces SUBDIR += rubygem-aws-sdk-kinesis SUBDIR += rubygem-aws-sdk-kinesisanalytics SUBDIR += rubygem-aws-sdk-kinesisanalyticsv2 SUBDIR += rubygem-aws-sdk-kinesisvideo SUBDIR += rubygem-aws-sdk-kinesisvideoarchivedmedia SUBDIR += rubygem-aws-sdk-kinesisvideomedia SUBDIR += rubygem-aws-sdk-kinesisvideosignalingchannels SUBDIR += rubygem-aws-sdk-kinesisvideowebrtcstorage SUBDIR += rubygem-aws-sdk-kms SUBDIR += rubygem-aws-sdk-lakeformation SUBDIR += rubygem-aws-sdk-lambda SUBDIR += rubygem-aws-sdk-lambdapreview SUBDIR += rubygem-aws-sdk-lex SUBDIR += rubygem-aws-sdk-lexmodelbuildingservice SUBDIR += rubygem-aws-sdk-lexmodelsv2 SUBDIR += rubygem-aws-sdk-lexruntimev2 SUBDIR += rubygem-aws-sdk-licensemanager SUBDIR += rubygem-aws-sdk-licensemanagerlinuxsubscriptions SUBDIR += rubygem-aws-sdk-licensemanagerusersubscriptions SUBDIR += rubygem-aws-sdk-lightsail SUBDIR += rubygem-aws-sdk-locationservice SUBDIR += rubygem-aws-sdk-lookoutequipment SUBDIR += rubygem-aws-sdk-lookoutforvision SUBDIR += rubygem-aws-sdk-lookoutmetrics SUBDIR += rubygem-aws-sdk-machinelearning SUBDIR += rubygem-aws-sdk-macie SUBDIR += rubygem-aws-sdk-macie2 SUBDIR += rubygem-aws-sdk-mainframemodernization SUBDIR += rubygem-aws-sdk-managedblockchain SUBDIR += rubygem-aws-sdk-managedgrafana SUBDIR += rubygem-aws-sdk-marketplacecatalog SUBDIR += rubygem-aws-sdk-marketplacecommerceanalytics SUBDIR += rubygem-aws-sdk-marketplaceentitlementservice SUBDIR += rubygem-aws-sdk-marketplacemetering SUBDIR += rubygem-aws-sdk-mediaconnect SUBDIR += rubygem-aws-sdk-mediaconvert SUBDIR += rubygem-aws-sdk-medialive SUBDIR += rubygem-aws-sdk-mediapackage SUBDIR += rubygem-aws-sdk-mediapackagevod SUBDIR += rubygem-aws-sdk-mediastore SUBDIR += rubygem-aws-sdk-mediastoredata SUBDIR += rubygem-aws-sdk-mediatailor SUBDIR += rubygem-aws-sdk-memorydb SUBDIR += rubygem-aws-sdk-mgn SUBDIR += rubygem-aws-sdk-migrationhub SUBDIR += rubygem-aws-sdk-migrationhubconfig SUBDIR += rubygem-aws-sdk-migrationhuborchestrator SUBDIR += rubygem-aws-sdk-migrationhubrefactorspaces SUBDIR += rubygem-aws-sdk-migrationhubstrategyrecommendations SUBDIR += rubygem-aws-sdk-mobile SUBDIR += rubygem-aws-sdk-mq SUBDIR += rubygem-aws-sdk-mturk SUBDIR += rubygem-aws-sdk-mwaa SUBDIR += rubygem-aws-sdk-neptune SUBDIR += rubygem-aws-sdk-networkfirewall SUBDIR += rubygem-aws-sdk-networkmanager SUBDIR += rubygem-aws-sdk-nimblestudio SUBDIR += rubygem-aws-sdk-oam SUBDIR += rubygem-aws-sdk-omics SUBDIR += rubygem-aws-sdk-opensearchserverless SUBDIR += rubygem-aws-sdk-opensearchservice SUBDIR += rubygem-aws-sdk-opsworks SUBDIR += rubygem-aws-sdk-opsworkscm SUBDIR += rubygem-aws-sdk-organizations SUBDIR += rubygem-aws-sdk-osis SUBDIR += rubygem-aws-sdk-outposts SUBDIR += rubygem-aws-sdk-panorama SUBDIR += rubygem-aws-sdk-personalize SUBDIR += rubygem-aws-sdk-personalizeevents SUBDIR += rubygem-aws-sdk-personalizeruntime SUBDIR += rubygem-aws-sdk-pi SUBDIR += rubygem-aws-sdk-pinpoint SUBDIR += rubygem-aws-sdk-pinpointemail SUBDIR += rubygem-aws-sdk-pinpointsmsvoice SUBDIR += rubygem-aws-sdk-pinpointsmsvoicev2 SUBDIR += rubygem-aws-sdk-pipes SUBDIR += rubygem-aws-sdk-polly SUBDIR += rubygem-aws-sdk-pricing SUBDIR += rubygem-aws-sdk-privatenetworks SUBDIR += rubygem-aws-sdk-prometheusservice SUBDIR += rubygem-aws-sdk-proton SUBDIR += rubygem-aws-sdk-qldb SUBDIR += rubygem-aws-sdk-qldbsession SUBDIR += rubygem-aws-sdk-quicksight SUBDIR += rubygem-aws-sdk-ram SUBDIR += rubygem-aws-sdk-rds SUBDIR += rubygem-aws-sdk-rdsdataservice SUBDIR += rubygem-aws-sdk-recyclebin SUBDIR += rubygem-aws-sdk-redshift SUBDIR += rubygem-aws-sdk-redshiftdataapiservice SUBDIR += rubygem-aws-sdk-redshiftserverless SUBDIR += rubygem-aws-sdk-rekognition SUBDIR += rubygem-aws-sdk-resiliencehub SUBDIR += rubygem-aws-sdk-resourceexplorer2 SUBDIR += rubygem-aws-sdk-resourcegroups SUBDIR += rubygem-aws-sdk-resourcegroupstaggingapi SUBDIR += rubygem-aws-sdk-resources SUBDIR += rubygem-aws-sdk-resources2 SUBDIR += rubygem-aws-sdk-robomaker SUBDIR += rubygem-aws-sdk-rolesanywhere SUBDIR += rubygem-aws-sdk-route53 SUBDIR += rubygem-aws-sdk-route53domains SUBDIR += rubygem-aws-sdk-route53recoverycluster SUBDIR += rubygem-aws-sdk-route53recoverycontrolconfig SUBDIR += rubygem-aws-sdk-route53recoveryreadiness SUBDIR += rubygem-aws-sdk-route53resolver SUBDIR += rubygem-aws-sdk-s3 SUBDIR += rubygem-aws-sdk-s31119 SUBDIR += rubygem-aws-sdk-s3control SUBDIR += rubygem-aws-sdk-s3outposts SUBDIR += rubygem-aws-sdk-sagemaker SUBDIR += rubygem-aws-sdk-sagemakeredgemanager SUBDIR += rubygem-aws-sdk-sagemakerfeaturestoreruntime SUBDIR += rubygem-aws-sdk-sagemakergeospatial SUBDIR += rubygem-aws-sdk-sagemakermetrics SUBDIR += rubygem-aws-sdk-sagemakerruntime SUBDIR += rubygem-aws-sdk-savingsplans SUBDIR += rubygem-aws-sdk-scheduler SUBDIR += rubygem-aws-sdk-schemas SUBDIR += rubygem-aws-sdk-secretsmanager SUBDIR += rubygem-aws-sdk-securityhub SUBDIR += rubygem-aws-sdk-securitylake SUBDIR += rubygem-aws-sdk-serverlessapplicationrepository SUBDIR += rubygem-aws-sdk-servicecatalog SUBDIR += rubygem-aws-sdk-servicediscovery SUBDIR += rubygem-aws-sdk-servicequotas SUBDIR += rubygem-aws-sdk-ses SUBDIR += rubygem-aws-sdk-sesv2 SUBDIR += rubygem-aws-sdk-shield SUBDIR += rubygem-aws-sdk-signer SUBDIR += rubygem-aws-sdk-simpledb SUBDIR += rubygem-aws-sdk-simspaceweaver SUBDIR += rubygem-aws-sdk-sms SUBDIR += rubygem-aws-sdk-snowball SUBDIR += rubygem-aws-sdk-snowdevicemanagement SUBDIR += rubygem-aws-sdk-sns SUBDIR += rubygem-aws-sdk-sqs SUBDIR += rubygem-aws-sdk-ssm SUBDIR += rubygem-aws-sdk-ssmcontacts SUBDIR += rubygem-aws-sdk-ssmincidents SUBDIR += rubygem-aws-sdk-ssmsap SUBDIR += rubygem-aws-sdk-sso SUBDIR += rubygem-aws-sdk-ssoadmin SUBDIR += rubygem-aws-sdk-ssooidc SUBDIR += rubygem-aws-sdk-states SUBDIR += rubygem-aws-sdk-storagegateway SUBDIR += rubygem-aws-sdk-support SUBDIR += rubygem-aws-sdk-supportapp SUBDIR += rubygem-aws-sdk-swf SUBDIR += rubygem-aws-sdk-synthetics SUBDIR += rubygem-aws-sdk-textract SUBDIR += rubygem-aws-sdk-timestreamquery SUBDIR += rubygem-aws-sdk-timestreamwrite SUBDIR += rubygem-aws-sdk-tnb SUBDIR += rubygem-aws-sdk-transcribeservice SUBDIR += rubygem-aws-sdk-transcribestreamingservice SUBDIR += rubygem-aws-sdk-transfer SUBDIR += rubygem-aws-sdk-translate SUBDIR += rubygem-aws-sdk-voiceid SUBDIR += rubygem-aws-sdk-vpclattice SUBDIR += rubygem-aws-sdk-waf SUBDIR += rubygem-aws-sdk-wafregional SUBDIR += rubygem-aws-sdk-wafv2 SUBDIR += rubygem-aws-sdk-wellarchitected SUBDIR += rubygem-aws-sdk-workdocs SUBDIR += rubygem-aws-sdk-worklink SUBDIR += rubygem-aws-sdk-workmail SUBDIR += rubygem-aws-sdk-workmailmessageflow SUBDIR += rubygem-aws-sdk-workspaces SUBDIR += rubygem-aws-sdk-workspacesweb SUBDIR += rubygem-aws-sdk-xray SUBDIR += rubygem-aws-sdk2 SUBDIR += rubygem-aws-sigv2 SUBDIR += rubygem-aws-sigv4 SUBDIR += rubygem-axiom-types SUBDIR += rubygem-azure-storage SUBDIR += rubygem-azure-storage-blob SUBDIR += rubygem-azure-storage-common SUBDIR += rubygem-azure-storage-file SUBDIR += rubygem-azure-storage-queue SUBDIR += rubygem-azure-storage-table SUBDIR += rubygem-azure_cognitiveservices_anomalydetector SUBDIR += rubygem-azure_cognitiveservices_autosuggest SUBDIR += rubygem-azure_cognitiveservices_computervision SUBDIR += rubygem-azure_cognitiveservices_contentmoderator SUBDIR += rubygem-azure_cognitiveservices_customimagesearch SUBDIR += rubygem-azure_cognitiveservices_customsearch SUBDIR += rubygem-azure_cognitiveservices_customvisionprediction SUBDIR += rubygem-azure_cognitiveservices_customvisiontraining SUBDIR += rubygem-azure_cognitiveservices_entitysearch SUBDIR += rubygem-azure_cognitiveservices_face SUBDIR += rubygem-azure_cognitiveservices_formrecognizer SUBDIR += rubygem-azure_cognitiveservices_imagesearch SUBDIR += rubygem-azure_cognitiveservices_localsearch SUBDIR += rubygem-azure_cognitiveservices_luisauthoring SUBDIR += rubygem-azure_cognitiveservices_luisruntime SUBDIR += rubygem-azure_cognitiveservices_newssearch SUBDIR += rubygem-azure_cognitiveservices_personalizer SUBDIR += rubygem-azure_cognitiveservices_qnamaker SUBDIR += rubygem-azure_cognitiveservices_qnamakerruntime SUBDIR += rubygem-azure_cognitiveservices_spellcheck SUBDIR += rubygem-azure_cognitiveservices_textanalytics SUBDIR += rubygem-azure_cognitiveservices_videosearch SUBDIR += rubygem-azure_cognitiveservices_visualsearch SUBDIR += rubygem-azure_cognitiveservices_websearch SUBDIR += rubygem-azure_event_grid SUBDIR += rubygem-azure_graph_rbac SUBDIR += rubygem-azure_key_vault SUBDIR += rubygem-azure_mgmt_adhybridhealth_service SUBDIR += rubygem-azure_mgmt_advisor SUBDIR += rubygem-azure_mgmt_alerts_management SUBDIR += rubygem-azure_mgmt_analysis_services SUBDIR += rubygem-azure_mgmt_api_management SUBDIR += rubygem-azure_mgmt_appconfiguration SUBDIR += rubygem-azure_mgmt_attestation SUBDIR += rubygem-azure_mgmt_authorization SUBDIR += rubygem-azure_mgmt_automanage SUBDIR += rubygem-azure_mgmt_automation SUBDIR += rubygem-azure_mgmt_azurestack SUBDIR += rubygem-azure_mgmt_azurestack_hci SUBDIR += rubygem-azure_mgmt_batch SUBDIR += rubygem-azure_mgmt_batchai SUBDIR += rubygem-azure_mgmt_billing SUBDIR += rubygem-azure_mgmt_bot_service SUBDIR += rubygem-azure_mgmt_cdn SUBDIR += rubygem-azure_mgmt_cognitive_services SUBDIR += rubygem-azure_mgmt_commerce SUBDIR += rubygem-azure_mgmt_compute SUBDIR += rubygem-azure_mgmt_consumption SUBDIR += rubygem-azure_mgmt_container_instance SUBDIR += rubygem-azure_mgmt_container_registry SUBDIR += rubygem-azure_mgmt_container_service SUBDIR += rubygem-azure_mgmt_cosmosdb SUBDIR += rubygem-azure_mgmt_cost_management SUBDIR += rubygem-azure_mgmt_customer_insights SUBDIR += rubygem-azure_mgmt_data_factory SUBDIR += rubygem-azure_mgmt_data_migration SUBDIR += rubygem-azure_mgmt_databox SUBDIR += rubygem-azure_mgmt_datalake_analytics SUBDIR += rubygem-azure_mgmt_datalake_store SUBDIR += rubygem-azure_mgmt_datashare SUBDIR += rubygem-azure_mgmt_deployment_manager SUBDIR += rubygem-azure_mgmt_dev_spaces SUBDIR += rubygem-azure_mgmt_devtestlabs SUBDIR += rubygem-azure_mgmt_digitaltwins SUBDIR += rubygem-azure_mgmt_dns SUBDIR += rubygem-azure_mgmt_edgegateway SUBDIR += rubygem-azure_mgmt_event_grid SUBDIR += rubygem-azure_mgmt_event_hub SUBDIR += rubygem-azure_mgmt_features SUBDIR += rubygem-azure_mgmt_hanaonazure SUBDIR += rubygem-azure_mgmt_hdinsight SUBDIR += rubygem-azure_mgmt_hybrid_compute SUBDIR += rubygem-azure_mgmt_import_export SUBDIR += rubygem-azure_mgmt_iot_central SUBDIR += rubygem-azure_mgmt_iot_hub SUBDIR += rubygem-azure_mgmt_key_vault SUBDIR += rubygem-azure_mgmt_kubernetes_configuration SUBDIR += rubygem-azure_mgmt_kusto SUBDIR += rubygem-azure_mgmt_labservices SUBDIR += rubygem-azure_mgmt_links SUBDIR += rubygem-azure_mgmt_locks SUBDIR += rubygem-azure_mgmt_logic SUBDIR += rubygem-azure_mgmt_machine_learning SUBDIR += rubygem-azure_mgmt_machine_learning_services SUBDIR += rubygem-azure_mgmt_maintenance SUBDIR += rubygem-azure_mgmt_managed_applications SUBDIR += rubygem-azure_mgmt_mariadb SUBDIR += rubygem-azure_mgmt_marketplace_ordering SUBDIR += rubygem-azure_mgmt_media_services SUBDIR += rubygem-azure_mgmt_migrate SUBDIR += rubygem-azure_mgmt_mixedreality SUBDIR += rubygem-azure_mgmt_monitor SUBDIR += rubygem-azure_mgmt_msi SUBDIR += rubygem-azure_mgmt_mysql SUBDIR += rubygem-azure_mgmt_netapp SUBDIR += rubygem-azure_mgmt_network SUBDIR += rubygem-azure_mgmt_notification_hubs SUBDIR += rubygem-azure_mgmt_operational_insights SUBDIR += rubygem-azure_mgmt_operations_management SUBDIR += rubygem-azure_mgmt_peering SUBDIR += rubygem-azure_mgmt_policy SUBDIR += rubygem-azure_mgmt_policy_insights SUBDIR += rubygem-azure_mgmt_portal SUBDIR += rubygem-azure_mgmt_postgresql SUBDIR += rubygem-azure_mgmt_powerbi_dedicated SUBDIR += rubygem-azure_mgmt_powerbi_embedded SUBDIR += rubygem-azure_mgmt_privatedns SUBDIR += rubygem-azure_mgmt_recovery_services SUBDIR += rubygem-azure_mgmt_recovery_services_backup SUBDIR += rubygem-azure_mgmt_recovery_services_site_recovery SUBDIR += rubygem-azure_mgmt_redis SUBDIR += rubygem-azure_mgmt_relay SUBDIR += rubygem-azure_mgmt_reservations SUBDIR += rubygem-azure_mgmt_resource_health SUBDIR += rubygem-azure_mgmt_resourcegraph SUBDIR += rubygem-azure_mgmt_resources SUBDIR += rubygem-azure_mgmt_resources_management SUBDIR += rubygem-azure_mgmt_scheduler SUBDIR += rubygem-azure_mgmt_search SUBDIR += rubygem-azure_mgmt_security SUBDIR += rubygem-azure_mgmt_serialconsole SUBDIR += rubygem-azure_mgmt_service_bus SUBDIR += rubygem-azure_mgmt_service_fabric SUBDIR += rubygem-azure_mgmt_signalr SUBDIR += rubygem-azure_mgmt_sql SUBDIR += rubygem-azure_mgmt_sqlvirtualmachine SUBDIR += rubygem-azure_mgmt_stor_simple8000_series SUBDIR += rubygem-azure_mgmt_storage SUBDIR += rubygem-azure_mgmt_storagecache SUBDIR += rubygem-azure_mgmt_storagesync SUBDIR += rubygem-azure_mgmt_stream_analytics SUBDIR += rubygem-azure_mgmt_subscriptions SUBDIR += rubygem-azure_mgmt_support SUBDIR += rubygem-azure_mgmt_synapse SUBDIR += rubygem-azure_mgmt_time_series_insights SUBDIR += rubygem-azure_mgmt_traffic_manager SUBDIR += rubygem-azure_mgmt_vmware_cloudsimple SUBDIR += rubygem-azure_mgmt_web SUBDIR += rubygem-azure_sdk SUBDIR += rubygem-azure_service_fabric SUBDIR += rubygem-backports SUBDIR += rubygem-bacon SUBDIR += rubygem-baf SUBDIR += rubygem-batch-loader SUBDIR += rubygem-benelux SUBDIR += rubygem-better_html-rails61 SUBDIR += rubygem-bin_utils SUBDIR += rubygem-bindata SUBDIR += rubygem-bindex SUBDIR += rubygem-binding_of_caller SUBDIR += rubygem-bit-struct SUBDIR += rubygem-blankslate SUBDIR += rubygem-blockenspiel SUBDIR += rubygem-bones SUBDIR += rubygem-bootsnap SUBDIR += rubygem-bootstrap_form SUBDIR += rubygem-bson SUBDIR += rubygem-buftok SUBDIR += rubygem-bugspots SUBDIR += rubygem-builder SUBDIR += rubygem-byebug SUBDIR += rubygem-c21e SUBDIR += rubygem-cabin SUBDIR += rubygem-caesars SUBDIR += rubygem-cairo-gobject SUBDIR += rubygem-capybara SUBDIR += rubygem-capybara-screenshot SUBDIR += rubygem-cbor SUBDIR += rubygem-celluloid SUBDIR += rubygem-celluloid-essentials SUBDIR += rubygem-celluloid-extras SUBDIR += rubygem-celluloid-fsm SUBDIR += rubygem-celluloid-io SUBDIR += rubygem-celluloid-pool SUBDIR += rubygem-celluloid-supervision SUBDIR += rubygem-cf-uaa-lib SUBDIR += rubygem-cheffish SUBDIR += rubygem-childprocess SUBDIR += rubygem-childprocess3 SUBDIR += rubygem-childprocess40 SUBDIR += rubygem-chronic SUBDIR += rubygem-chronic_duration SUBDIR += rubygem-claide SUBDIR += rubygem-claide-plugins SUBDIR += rubygem-clamp SUBDIR += rubygem-clamp11 SUBDIR += rubygem-classifier SUBDIR += rubygem-classifier-reborn SUBDIR += rubygem-climate_control SUBDIR += rubygem-clio SUBDIR += rubygem-cliprompt SUBDIR += rubygem-cloudfiles SUBDIR += rubygem-cms_scanner SUBDIR += rubygem-cocaine SUBDIR += rubygem-cocoon SUBDIR += rubygem-coercible SUBDIR += rubygem-coffee-rails-rails5 SUBDIR += rubygem-coffee-rails-rails50 SUBDIR += rubygem-coffee-rails-rails52 SUBDIR += rubygem-coffee-rails4 SUBDIR += rubygem-coffee-rails41 SUBDIR += rubygem-coffee-script SUBDIR += rubygem-coffee-script-source SUBDIR += rubygem-colorize SUBDIR += rubygem-columnize SUBDIR += rubygem-commander SUBDIR += rubygem-concurrent-ruby SUBDIR += rubygem-concurrent-ruby-edge SUBDIR += rubygem-concurrent-ruby-edge06 SUBDIR += rubygem-concurrent-ruby-ext SUBDIR += rubygem-concurrent-ruby11 SUBDIR += rubygem-configatron SUBDIR += rubygem-configstruct SUBDIR += rubygem-configuration SUBDIR += rubygem-console SUBDIR += rubygem-contracts SUBDIR += rubygem-contracts016 SUBDIR += rubygem-cookbook-omnifetch SUBDIR += rubygem-cool.io SUBDIR += rubygem-corefines SUBDIR += rubygem-cork SUBDIR += rubygem-countries SUBDIR += rubygem-cow_proxy SUBDIR += rubygem-crack SUBDIR += rubygem-cri SUBDIR += rubygem-csv SUBDIR += rubygem-cucumber SUBDIR += rubygem-cucumber-ci-environment SUBDIR += rubygem-cucumber-core SUBDIR += rubygem-cucumber-cucumber-expressions SUBDIR += rubygem-cucumber-cucumber-expressions15 SUBDIR += rubygem-cucumber-messages SUBDIR += rubygem-cucumber-messages18 SUBDIR += rubygem-cucumber-rails SUBDIR += rubygem-cucumber-tag-expressions SUBDIR += rubygem-cucumber-tag-expressions4 SUBDIR += rubygem-cucumber-wire SUBDIR += rubygem-curses SUBDIR += rubygem-cyoi SUBDIR += rubygem-daemon_controller SUBDIR += rubygem-daemons SUBDIR += rubygem-danger SUBDIR += rubygem-danger-gitlab SUBDIR += rubygem-date SUBDIR += rubygem-ddmemoize SUBDIR += rubygem-ddmetrics SUBDIR += rubygem-ddplugin SUBDIR += rubygem-ddtrace SUBDIR += rubygem-debase-ruby_core_source SUBDIR += rubygem-debug SUBDIR += rubygem-debug_inspector SUBDIR += rubygem-debugger-linecache SUBDIR += rubygem-debugger-ruby_core_source SUBDIR += rubygem-debugger-xml SUBDIR += rubygem-declarative SUBDIR += rubygem-declarative-option SUBDIR += rubygem-deep_merge SUBDIR += rubygem-deep_test SUBDIR += rubygem-deface SUBDIR += rubygem-default_value_for SUBDIR += rubygem-delayed_job SUBDIR += rubygem-delayer SUBDIR += rubygem-delayer-deferred SUBDIR += rubygem-delegate SUBDIR += rubygem-deprecated SUBDIR += rubygem-deprecated2 SUBDIR += rubygem-descendants_tracker SUBDIR += rubygem-device_detector SUBDIR += rubygem-devise SUBDIR += rubygem-devise-rails5 SUBDIR += rubygem-devise-rails52 SUBDIR += rubygem-devise-rails60 SUBDIR += rubygem-devise-rails61 SUBDIR += rubygem-devise-rails70 SUBDIR += rubygem-did_you_mean SUBDIR += rubygem-dig_rb SUBDIR += rubygem-directory_watcher SUBDIR += rubygem-ditz SUBDIR += rubygem-diva SUBDIR += rubygem-docile SUBDIR += rubygem-docopt SUBDIR += rubygem-drb SUBDIR += rubygem-dry-configurable SUBDIR += rubygem-dry-container SUBDIR += rubygem-dry-core SUBDIR += rubygem-dry-equalizer SUBDIR += rubygem-dry-inflector SUBDIR += rubygem-dry-logic SUBDIR += rubygem-dry-types SUBDIR += rubygem-drydock SUBDIR += rubygem-dynflow SUBDIR += rubygem-e2mmap SUBDIR += rubygem-ecma-re-validator SUBDIR += rubygem-edavis10-object_daddy SUBDIR += rubygem-elif SUBDIR += rubygem-emoji_regex SUBDIR += rubygem-english SUBDIR += rubygem-enumerize SUBDIR += rubygem-equalizer SUBDIR += rubygem-equatable SUBDIR += rubygem-erb SUBDIR += rubygem-errand SUBDIR += rubygem-error_highlight SUBDIR += rubygem-et-orbi SUBDIR += rubygem-etc SUBDIR += rubygem-event_emitter SUBDIR += rubygem-eventmachine SUBDIR += rubygem-excon SUBDIR += rubygem-execjs SUBDIR += rubygem-extlib SUBDIR += rubygem-extpp SUBDIR += rubygem-extras SUBDIR += rubygem-facets SUBDIR += rubygem-faker SUBDIR += rubygem-faraday-cookie_jar SUBDIR += rubygem-faraday-excon SUBDIR += rubygem-faraday-excon1 SUBDIR += rubygem-faraday_middleware-aws-sigv4 SUBDIR += rubygem-faraday_middleware-aws-sigv403 SUBDIR += rubygem-faraday_middleware-multi_json SUBDIR += rubygem-fast-stemmer SUBDIR += rubygem-fast_blank SUBDIR += rubygem-fast_gettext SUBDIR += rubygem-fast_gettext1 SUBDIR += rubygem-fast_stack SUBDIR += rubygem-fast_xor SUBDIR += rubygem-fastercsv SUBDIR += rubygem-fastri SUBDIR += rubygem-fattr SUBDIR += rubygem-fcntl SUBDIR += rubygem-ffi SUBDIR += rubygem-ffi-compiler SUBDIR += rubygem-ffi-libarchive SUBDIR += rubygem-ffi-win32-extensions SUBDIR += rubygem-ffi-yajl SUBDIR += rubygem-fiber-local SUBDIR += rubygem-fiddle SUBDIR += rubygem-file-tail SUBDIR += rubygem-filesize SUBDIR += rubygem-fileutils SUBDIR += rubygem-find SUBDIR += rubygem-flexmock SUBDIR += rubygem-flipper SUBDIR += rubygem-flipper-active_support_cache_store SUBDIR += rubygem-flipper-active_support_cache_store-rails61 SUBDIR += rubygem-flipper-ui SUBDIR += rubygem-flipper025 SUBDIR += rubygem-fluent-logger SUBDIR += rubygem-fog SUBDIR += rubygem-fog-core SUBDIR += rubygem-fog-core1 SUBDIR += rubygem-fog-core210 SUBDIR += rubygem-fog-core220 SUBDIR += rubygem-fog-json SUBDIR += rubygem-font-awesome-rails SUBDIR += rubygem-font-awesome-rails-rails5 SUBDIR += rubygem-font-awesome-rails-rails50 SUBDIR += rubygem-font-awesome-rails-rails52 SUBDIR += rubygem-font-awesome-rails-rails60 SUBDIR += rubygem-foreigner SUBDIR += rubygem-foreman SUBDIR += rubygem-formatador SUBDIR += rubygem-forwardable SUBDIR += rubygem-forwardable-extended SUBDIR += rubygem-fugit SUBDIR += rubygem-fuubar SUBDIR += rubygem-fuzzy_match SUBDIR += rubygem-gapic-common SUBDIR += rubygem-gdata SUBDIR += rubygem-gem-compare SUBDIR += rubygem-gem_plugin SUBDIR += rubygem-gemcutter SUBDIR += rubygem-gemdiff SUBDIR += rubygem-gemnasium-parser SUBDIR += rubygem-gems SUBDIR += rubygem-generator SUBDIR += rubygem-generator_spec-rails4 SUBDIR += rubygem-generator_spec-rails5 SUBDIR += rubygem-georuby SUBDIR += rubygem-get_process_mem SUBDIR += rubygem-getopt SUBDIR += rubygem-getoptlong SUBDIR += rubygem-gettext SUBDIR += rubygem-gettext-setup SUBDIR += rubygem-gettext-setup0 SUBDIR += rubygem-gettext_i18n_rails SUBDIR += rubygem-gettext_i18n_rails18 SUBDIR += rubygem-gettext_i18n_rails_js-rails5 SUBDIR += rubygem-gettext_i18n_rails_js-rails50 SUBDIR += rubygem-gettext_i18n_rails_js-rails52 SUBDIR += rubygem-gettext_i18n_rails_js-rails61 SUBDIR += rubygem-gh SUBDIR += rubygem-gibbler SUBDIR += rubygem-gio2 SUBDIR += rubygem-git SUBDIR += rubygem-git-version-bump SUBDIR += rubygem-github_api SUBDIR += rubygem-gitlab SUBDIR += rubygem-gitlab-chronic SUBDIR += rubygem-gitlab-dangerfiles SUBDIR += rubygem-gitlab-experiment SUBDIR += rubygem-gitlab-labkit SUBDIR += rubygem-gitlab-license SUBDIR += rubygem-gitlab-license_finder SUBDIR += rubygem-gitlab-pygments.rb SUBDIR += rubygem-gitlab-sidekiq-fetcher SUBDIR += rubygem-gitlab_chronic_duration SUBDIR += rubygem-gitlab_git SUBDIR += rubygem-gitlab_meta SUBDIR += rubygem-glib2 SUBDIR += rubygem-gobject-introspection SUBDIR += rubygem-google-api-client SUBDIR += rubygem-google-apis-androidpublisher_v3 SUBDIR += rubygem-google-apis-bigquery_v2 SUBDIR += rubygem-google-apis-cloudbilling_v1 SUBDIR += rubygem-google-apis-cloudresourcemanager_v1 SUBDIR += rubygem-google-apis-cloudresourcemanager_v2 SUBDIR += rubygem-google-apis-cloudresourcemanager_v3 SUBDIR += rubygem-google-apis-compute_v1 SUBDIR += rubygem-google-apis-compute_v1_057 SUBDIR += rubygem-google-apis-container_v1 SUBDIR += rubygem-google-apis-container_v1beta1 SUBDIR += rubygem-google-apis-core SUBDIR += rubygem-google-apis-discovery_v1 SUBDIR += rubygem-google-apis-drive_v3 SUBDIR += rubygem-google-apis-generator SUBDIR += rubygem-google-apis-iam_v1 SUBDIR += rubygem-google-apis-iam_v2 SUBDIR += rubygem-google-apis-iam_v2beta SUBDIR += rubygem-google-apis-iamcredentials_v1 SUBDIR += rubygem-google-apis-monitoring_v3 SUBDIR += rubygem-google-apis-playcustomapp_v1 SUBDIR += rubygem-google-apis-pubsub_v1 SUBDIR += rubygem-google-apis-serviceusage_v1 SUBDIR += rubygem-google-apis-sheets_v4 SUBDIR += rubygem-google-apis-sqladmin_v1beta4 SUBDIR += rubygem-google-apis-sqladmin_v1beta4_041 SUBDIR += rubygem-google-apis-storage_v1 SUBDIR += rubygem-google-gax SUBDIR += rubygem-google-iam-credentials SUBDIR += rubygem-google-iam-credentials-v1 SUBDIR += rubygem-google-iam-v1 SUBDIR += rubygem-google-protobuf SUBDIR += rubygem-googleapis-common-protos SUBDIR += rubygem-googleapis-common-protos-types SUBDIR += rubygem-graf SUBDIR += rubygem-grape SUBDIR += rubygem-grape-entity SUBDIR += rubygem-grape-path-helpers SUBDIR += rubygem-grape-route-helpers SUBDIR += rubygem-grape-swagger SUBDIR += rubygem-grape-swagger-entity SUBDIR += rubygem-grape15 SUBDIR += rubygem-grape_logging SUBDIR += rubygem-graphiql-rails SUBDIR += rubygem-graphlient SUBDIR += rubygem-graphql SUBDIR += rubygem-graphql-client SUBDIR += rubygem-graphql-docs SUBDIR += rubygem-grpc-google-iam-v1 SUBDIR += rubygem-guess_html_encoding SUBDIR += rubygem-gyoku SUBDIR += rubygem-hamster SUBDIR += rubygem-hana SUBDIR += rubygem-hashdiff SUBDIR += rubygem-hashery SUBDIR += rubygem-hashie SUBDIR += rubygem-hashie-forbidden_attributes SUBDIR += rubygem-hashie4 SUBDIR += rubygem-health_check SUBDIR += rubygem-heapy SUBDIR += rubygem-highline SUBDIR += rubygem-highline1 SUBDIR += rubygem-hike SUBDIR += rubygem-hike1 SUBDIR += rubygem-hitimes SUBDIR += rubygem-hocon SUBDIR += rubygem-hoe SUBDIR += rubygem-holidays SUBDIR += rubygem-http_accept_language SUBDIR += rubygem-i18n SUBDIR += rubygem-i18n-tasks-rails61 SUBDIR += rubygem-i18n_data SUBDIR += rubygem-icalendar SUBDIR += rubygem-ice_cube SUBDIR += rubygem-ice_nine SUBDIR += rubygem-inflecto SUBDIR += rubygem-iniparse SUBDIR += rubygem-insist SUBDIR += rubygem-inspec-core SUBDIR += rubygem-instance_storage SUBDIR += rubygem-interact SUBDIR += rubygem-io-console SUBDIR += rubygem-io-event SUBDIR += rubygem-io-like SUBDIR += rubygem-io-nonblock SUBDIR += rubygem-io-wait SUBDIR += rubygem-io-wait01 SUBDIR += rubygem-iobuffer SUBDIR += rubygem-iostruct SUBDIR += rubygem-ipynbdiff SUBDIR += rubygem-irb SUBDIR += rubygem-iso8601 SUBDIR += rubygem-jaeger-client SUBDIR += rubygem-jammit SUBDIR += rubygem-jaro_winkler SUBDIR += rubygem-jasmine-core SUBDIR += rubygem-jbuilder SUBDIR += rubygem-jbuilder-rails5 SUBDIR += rubygem-jbuilder-rails50 SUBDIR += rubygem-jbuilder-rails52 SUBDIR += rubygem-jbuilder-rails60 SUBDIR += rubygem-jbuilder-rails61 SUBDIR += rubygem-jekyll-coffeescript SUBDIR += rubygem-jenkins_api_client SUBDIR += rubygem-jeweler SUBDIR += rubygem-jira-ruby SUBDIR += rubygem-jira-ruby21 SUBDIR += rubygem-jmespath SUBDIR += rubygem-jquery-ui-themes SUBDIR += rubygem-jruby-jars SUBDIR += rubygem-json SUBDIR += rubygem-json-canonicalization SUBDIR += rubygem-json-schema SUBDIR += rubygem-json1 SUBDIR += rubygem-json_pure SUBDIR += rubygem-json_pure1 SUBDIR += rubygem-json_schema SUBDIR += rubygem-json_schemer SUBDIR += rubygem-jsonapi-renderer SUBDIR += rubygem-jsonpath SUBDIR += rubygem-kafo SUBDIR += rubygem-kafo_parsers SUBDIR += rubygem-kafo_wizards SUBDIR += rubygem-kgio SUBDIR += rubygem-kt-paperclip-rails61 SUBDIR += rubygem-launchy SUBDIR += rubygem-lazy_priority_queue SUBDIR += rubygem-libdatadog SUBDIR += rubygem-libddprof SUBDIR += rubygem-libddwaf SUBDIR += rubygem-librarian SUBDIR += rubygem-librarianp SUBDIR += rubygem-libyajl2 SUBDIR += rubygem-license_finder SUBDIR += rubygem-licensee SUBDIR += rubygem-listen SUBDIR += rubygem-little-plugger SUBDIR += rubygem-local_time SUBDIR += rubygem-local_time-rails5 SUBDIR += rubygem-locale SUBDIR += rubygem-lockfile SUBDIR += rubygem-logger SUBDIR += rubygem-logging SUBDIR += rubygem-logster SUBDIR += rubygem-loquacious SUBDIR += rubygem-lru_redux SUBDIR += rubygem-lumberjack SUBDIR += rubygem-main SUBDIR += rubygem-makara61 SUBDIR += rubygem-manpages SUBDIR += rubygem-map SUBDIR += rubygem-marcel SUBDIR += rubygem-memo_wise SUBDIR += rubygem-memoist SUBDIR += rubygem-memoizable SUBDIR += rubygem-memoize SUBDIR += rubygem-memory_profiler SUBDIR += rubygem-mercenary SUBDIR += rubygem-message_bus SUBDIR += rubygem-metaclass SUBDIR += rubygem-metaid SUBDIR += rubygem-metasm SUBDIR += rubygem-method_source SUBDIR += rubygem-micromachine SUBDIR += rubygem-middleware SUBDIR += rubygem-mini_histogram SUBDIR += rubygem-mini_portile2 SUBDIR += rubygem-mini_portile2-25 SUBDIR += rubygem-minitest SUBDIR += rubygem-mixlib-archive SUBDIR += rubygem-mixlib-authentication SUBDIR += rubygem-mixlib-cli SUBDIR += rubygem-mixlib-config SUBDIR += rubygem-mixlib-install SUBDIR += rubygem-mixlib-log SUBDIR += rubygem-mixlib-shellout SUBDIR += rubygem-mixlib-versioning SUBDIR += rubygem-mize SUBDIR += rubygem-mkrf SUBDIR += rubygem-mmap2 SUBDIR += rubygem-mocha SUBDIR += rubygem-molinillo SUBDIR += rubygem-moneta SUBDIR += rubygem-mongo SUBDIR += rubygem-mono_logger SUBDIR += rubygem-ms_rest SUBDIR += rubygem-ms_rest_azure SUBDIR += rubygem-msgpack SUBDIR += rubygem-mspec SUBDIR += rubygem-multi_json SUBDIR += rubygem-multi_json114 SUBDIR += rubygem-multi_test SUBDIR += rubygem-murmurhash3 SUBDIR += rubygem-mustache SUBDIR += rubygem-mustache-sinatra SUBDIR += rubygem-mustache0 SUBDIR += rubygem-mustermann SUBDIR += rubygem-mustermann-grape SUBDIR += rubygem-mutex_m SUBDIR += rubygem-mutter SUBDIR += rubygem-nakayoshi_fork SUBDIR += rubygem-nap SUBDIR += rubygem-native-package-installer SUBDIR += rubygem-naught SUBDIR += rubygem-necromancer SUBDIR += rubygem-needle SUBDIR += rubygem-nenv SUBDIR += rubygem-nesty SUBDIR += rubygem-netaddr SUBDIR += rubygem-newrelic-grape SUBDIR += rubygem-newrelic_rpm SUBDIR += rubygem-nice-ffi SUBDIR += rubygem-nio4r SUBDIR += rubygem-nori SUBDIR += rubygem-notiffany SUBDIR += rubygem-notify SUBDIR += rubygem-nprogress-rails SUBDIR += rubygem-nsa-rails5 SUBDIR += rubygem-nsa-rails61 SUBDIR += rubygem-numerizer SUBDIR += rubygem-oci SUBDIR += rubygem-octopress-hooks SUBDIR += rubygem-oj SUBDIR += rubygem-oj-introspect SUBDIR += rubygem-omniauth_crowd SUBDIR += rubygem-omnibus SUBDIR += rubygem-open3 SUBDIR += rubygem-open3_backport SUBDIR += rubygem-open4 SUBDIR += rubygem-opentracing SUBDIR += rubygem-opt_parse_validator SUBDIR += rubygem-optimist SUBDIR += rubygem-optparse SUBDIR += rubygem-orm_adapter SUBDIR += rubygem-os SUBDIR += rubygem-ostruct SUBDIR += rubygem-p4ruby SUBDIR += rubygem-paint SUBDIR += rubygem-pairing_heap SUBDIR += rubygem-paperclip-rails5 SUBDIR += rubygem-paperclip-rails50 SUBDIR += rubygem-parser SUBDIR += rubygem-pastel SUBDIR += rubygem-patch_finder SUBDIR += rubygem-pathname SUBDIR += rubygem-pathspec SUBDIR += rubygem-pathutil SUBDIR += rubygem-pdk SUBDIR += rubygem-pedump SUBDIR += rubygem-peek SUBDIR += rubygem-peek-gc-rails52 SUBDIR += rubygem-peek-host SUBDIR += rubygem-peek-performance_bar SUBDIR += rubygem-peek-rails4 SUBDIR += rubygem-peek-rails52 SUBDIR += rubygem-peek-rails60 SUBDIR += rubygem-peek-rails61 SUBDIR += rubygem-peek-rblineprof-rails52 SUBDIR += rubygem-peek-redis-rails52 SUBDIR += rubygem-pkg-config SUBDIR += rubygem-platform SUBDIR += rubygem-pleaserun SUBDIR += rubygem-plist SUBDIR += rubygem-pluggaloid SUBDIR += rubygem-polyamorous SUBDIR += rubygem-polyglot SUBDIR += rubygem-popen4 SUBDIR += rubygem-posix-spawn SUBDIR += rubygem-power_assert SUBDIR += rubygem-powerbar SUBDIR += rubygem-powerpack SUBDIR += rubygem-pp SUBDIR += rubygem-pqueue SUBDIR += rubygem-prettyprint SUBDIR += rubygem-profile SUBDIR += rubygem-progressbar SUBDIR += rubygem-prometheus-client-mmap SUBDIR += rubygem-protected_attributes SUBDIR += rubygem-protobuf-cucumber SUBDIR += rubygem-protocol SUBDIR += rubygem-pry SUBDIR += rubygem-pry-byebug SUBDIR += rubygem-pry-rails SUBDIR += rubygem-pry-remote SUBDIR += rubygem-pry-remote-em SUBDIR += rubygem-pstore SUBDIR += rubygem-ptreloaded SUBDIR += rubygem-puppet-resource_api SUBDIR += rubygem-pygments.rb SUBDIR += rubygem-que SUBDIR += rubygem-que-scheduler SUBDIR += rubygem-r18n-core SUBDIR += rubygem-r18n-desktop SUBDIR += rubygem-r18n-rails SUBDIR += rubygem-r18n-rails-api SUBDIR += rubygem-rabl SUBDIR += rubygem-rabl-rails50 SUBDIR += rubygem-racc SUBDIR += rubygem-rack-mini-profiler SUBDIR += rubygem-rack-raw-upload SUBDIR += rubygem-rails-deprecated_sanitizer SUBDIR += rubygem-rails-deprecated_sanitizer-rails5 SUBDIR += rubygem-rails-deprecated_sanitizer-rails50 SUBDIR += rubygem-rails-i18n-rails5 SUBDIR += rubygem-rails-i18n-rails50 SUBDIR += rubygem-rails-i18n-rails52 SUBDIR += rubygem-rails-i18n-rails60 SUBDIR += rubygem-rails-i18n-rails61 SUBDIR += rubygem-rails-i18n-rails70 SUBDIR += rubygem-rails-observers SUBDIR += rubygem-rainbow SUBDIR += rubygem-rake SUBDIR += rubygem-rake-compiler SUBDIR += rubygem-rake-compiler-dock SUBDIR += rubygem-rake-contrib SUBDIR += rubygem-ransack SUBDIR += rubygem-rapt SUBDIR += rubygem-rash SUBDIR += rubygem-rash_alt SUBDIR += rubygem-rb-fsevent SUBDIR += rubygem-rb-inotify SUBDIR += rubygem-rb-kqueue SUBDIR += rubygem-rblineprof SUBDIR += rubygem-rbs SUBDIR += rubygem-rbs_json_schema SUBDIR += rubygem-rbtrace SUBDIR += rubygem-rbtree SUBDIR += rubygem-rdoc SUBDIR += rubygem-rdoc63 SUBDIR += rubygem-re2 SUBDIR += rubygem-react-rails SUBDIR += rubygem-react-rails-rails5 SUBDIR += rubygem-readline SUBDIR += rubygem-readline-ext SUBDIR += rubygem-readwritesettings SUBDIR += rubygem-recaptcha SUBDIR += rubygem-recursive-open-struct SUBDIR += rubygem-red-datasets SUBDIR += rubygem-redis-activesupport SUBDIR += rubygem-redis-activesupport-rails5 SUBDIR += rubygem-redis-activesupport-rails50 SUBDIR += rubygem-redis-activesupport-rails52 SUBDIR += rubygem-redis-activesupport-rails60 SUBDIR += rubygem-redis-activesupport-rails61 SUBDIR += rubygem-redis-store SUBDIR += rubygem-redlock SUBDIR += rubygem-redlock1 SUBDIR += rubygem-redmine_plugin_support SUBDIR += rubygem-reentrant_flock SUBDIR += rubygem-ref SUBDIR += rubygem-reline SUBDIR += rubygem-request_store SUBDIR += rubygem-request_store14 SUBDIR += rubygem-require_all SUBDIR += rubygem-resque SUBDIR += rubygem-resque-scheduler SUBDIR += rubygem-retriable SUBDIR += rubygem-retryable SUBDIR += rubygem-rgen SUBDIR += rubygem-rgl SUBDIR += rubygem-rice SUBDIR += rubygem-rinda SUBDIR += rubygem-rodzilla SUBDIR += rubygem-rotp SUBDIR += rubygem-rr SUBDIR += rubygem-rrd-ffi SUBDIR += rubygem-rscm SUBDIR += rubygem-rsec SUBDIR += rubygem-rspec SUBDIR += rubygem-rspec-core SUBDIR += rubygem-rspec-expectations SUBDIR += rubygem-rspec-its SUBDIR += rubygem-rspec-logsplit SUBDIR += rubygem-rspec-mocks SUBDIR += rubygem-rspec-rails SUBDIR += rubygem-rspec-support SUBDIR += rubygem-rspec_junit_formatter SUBDIR += rubygem-rubocop SUBDIR += rubygem-rubocop-ast SUBDIR += rubygem-rubocop-capybara SUBDIR += rubygem-rubocop-performance SUBDIR += rubygem-rubocop-rake SUBDIR += rubygem-rubocop-rspec SUBDIR += rubygem-ruby-atmos-pure SUBDIR += rubygem-ruby-bugzilla SUBDIR += rubygem-ruby-enum SUBDIR += rubygem-ruby-filemagic SUBDIR += rubygem-ruby-fogbugz SUBDIR += rubygem-ruby-libvirt SUBDIR += rubygem-ruby-macho SUBDIR += rubygem-ruby-magic SUBDIR += rubygem-ruby-ole SUBDIR += rubygem-ruby-prof SUBDIR += rubygem-ruby-progressbar SUBDIR += rubygem-ruby-statistics SUBDIR += rubygem-ruby2_keywords SUBDIR += rubygem-ruby2ruby SUBDIR += rubygem-ruby_dep SUBDIR += rubygem-ruby_parser SUBDIR += rubygem-rubygems-mirror SUBDIR += rubygem-rubygems-tasks SUBDIR += rubygem-rubygems-test SUBDIR += rubygem-rubyinline SUBDIR += rubygem-rubyinlineaccel SUBDIR += rubygem-rubytree SUBDIR += rubygem-rufus-scheduler SUBDIR += rubygem-rugged SUBDIR += rubygem-runt SUBDIR += rubygem-ruport SUBDIR += rubygem-safe_yaml SUBDIR += rubygem-scanf SUBDIR += rubygem-schash SUBDIR += rubygem-scientist SUBDIR += rubygem-sd_notify SUBDIR += rubygem-sdoc SUBDIR += rubygem-semantic_puppet SUBDIR += rubygem-semantic_range SUBDIR += rubygem-semi_semantic SUBDIR += rubygem-semver2 SUBDIR += rubygem-semver_dialects SUBDIR += rubygem-semverse SUBDIR += rubygem-sentry-rails SUBDIR += rubygem-sentry-raven SUBDIR += rubygem-sentry-ruby SUBDIR += rubygem-sentry-ruby-core SUBDIR += rubygem-sentry-sidekiq SUBDIR += rubygem-sequel SUBDIR += rubygem-server_sent_events SUBDIR += rubygem-set SUBDIR += rubygem-settingslogic SUBDIR += rubygem-sexp_processor SUBDIR += rubygem-shell SUBDIR += rubygem-shoulda SUBDIR += rubygem-shoulda-context SUBDIR += rubygem-shoulda-matchers SUBDIR += rubygem-sidekiq SUBDIR += rubygem-sidekiq-bulk SUBDIR += rubygem-sidekiq-cron SUBDIR += rubygem-sidekiq-cron18 SUBDIR += rubygem-sidekiq-scheduler SUBDIR += rubygem-sidekiq-unique-jobs SUBDIR += rubygem-sidekiq6 SUBDIR += rubygem-sidetiq SUBDIR += rubygem-sigdump SUBDIR += rubygem-simple-navigation SUBDIR += rubygem-simple-navigation-rails50 SUBDIR += rubygem-simple-navigation-rails61 SUBDIR += rubygem-simple_form SUBDIR += rubygem-simple_form-rails5 SUBDIR += rubygem-simple_form-rails50 SUBDIR += rubygem-simple_form-rails61 SUBDIR += rubygem-simple_po_parser SUBDIR += rubygem-simplecov SUBDIR += rubygem-simplecov_json_formatter SUBDIR += rubygem-singleton SUBDIR += rubygem-skiptrace SUBDIR += rubygem-slack-messenger SUBDIR += rubygem-slack-notifier SUBDIR += rubygem-slim SUBDIR += rubygem-slop SUBDIR += rubygem-slop3 SUBDIR += rubygem-slow_enumerator_tools SUBDIR += rubygem-smart_properties SUBDIR += rubygem-snaky_hash SUBDIR += rubygem-snowplow-tracker SUBDIR += rubygem-soap4r SUBDIR += rubygem-solve SUBDIR += rubygem-sorted_set SUBDIR += rubygem-spring SUBDIR += rubygem-spring-watcher-listen SUBDIR += rubygem-sprockets SUBDIR += rubygem-sprockets-es6 SUBDIR += rubygem-sprockets-helpers SUBDIR += rubygem-sprockets-rails-rails4 SUBDIR += rubygem-sprockets-rails-rails5 SUBDIR += rubygem-sprockets-rails-rails50 SUBDIR += rubygem-sprockets-rails-rails52 SUBDIR += rubygem-sprockets-rails-rails60 SUBDIR += rubygem-sprockets-rails-rails61 SUBDIR += rubygem-sprockets-rails-rails70 SUBDIR += rubygem-sprockets-sass SUBDIR += rubygem-sprockets2 SUBDIR += rubygem-sprockets3 SUBDIR += rubygem-spruz SUBDIR += rubygem-stackprof SUBDIR += rubygem-state_machine SUBDIR += rubygem-state_machines SUBDIR += rubygem-statsd SUBDIR += rubygem-statsd-instrument SUBDIR += rubygem-statsd-ruby SUBDIR += rubygem-stella SUBDIR += rubygem-stemmer SUBDIR += rubygem-stomp SUBDIR += rubygem-stoplight SUBDIR += rubygem-storable SUBDIR += rubygem-stream SUBDIR += rubygem-streetaddress SUBDIR += rubygem-stringex SUBDIR += rubygem-stringio SUBDIR += rubygem-strings SUBDIR += rubygem-strings-ansi SUBDIR += rubygem-strong_migrations SUBDIR += rubygem-strong_migrations61 SUBDIR += rubygem-strptime SUBDIR += rubygem-strscan SUBDIR += rubygem-structured_warnings SUBDIR += rubygem-stud SUBDIR += rubygem-subexec SUBDIR += rubygem-sucker_punch SUBDIR += rubygem-sugar-high SUBDIR += rubygem-sumbur SUBDIR += rubygem-sundawg_country_codes SUBDIR += rubygem-svn2git SUBDIR += rubygem-swagger-blocks SUBDIR += rubygem-sync SUBDIR += rubygem-syntax_suggest SUBDIR += rubygem-sysinfo SUBDIR += rubygem-syslog SUBDIR += rubygem-systemu SUBDIR += rubygem-table_print SUBDIR += rubygem-tdiff SUBDIR += rubygem-telesign SUBDIR += rubygem-telesignenterprise SUBDIR += rubygem-tempfile SUBDIR += rubygem-templater SUBDIR += rubygem-temple SUBDIR += rubygem-term-ansicolor SUBDIR += rubygem-terrapin SUBDIR += rubygem-test-unit SUBDIR += rubygem-thor SUBDIR += rubygem-thor0 SUBDIR += rubygem-thor10 SUBDIR += rubygem-thread_safe SUBDIR += rubygem-thrift SUBDIR += rubygem-thwait SUBDIR += rubygem-tilt SUBDIR += rubygem-tilt1 SUBDIR += rubygem-time SUBDIR += rubygem-timecop SUBDIR += rubygem-timeliness SUBDIR += rubygem-timeout SUBDIR += rubygem-timers SUBDIR += rubygem-tins SUBDIR += rubygem-titlecase SUBDIR += rubygem-tmpdir SUBDIR += rubygem-to_regexp SUBDIR += rubygem-tool SUBDIR += rubygem-tracer SUBDIR += rubygem-traces SUBDIR += rubygem-trailblazer-option SUBDIR += rubygem-transaction-simple SUBDIR += rubygem-travis SUBDIR += rubygem-treetop SUBDIR += rubygem-trollop SUBDIR += rubygem-trollop1 SUBDIR += rubygem-tsort SUBDIR += rubygem-tty SUBDIR += rubygem-tty-box SUBDIR += rubygem-tty-color SUBDIR += rubygem-tty-command SUBDIR += rubygem-tty-config SUBDIR += rubygem-tty-cursor SUBDIR += rubygem-tty-editor SUBDIR += rubygem-tty-file SUBDIR += rubygem-tty-font SUBDIR += rubygem-tty-logger SUBDIR += rubygem-tty-markdown SUBDIR += rubygem-tty-pager SUBDIR += rubygem-tty-pie SUBDIR += rubygem-tty-platform SUBDIR += rubygem-tty-progressbar SUBDIR += rubygem-tty-prompt SUBDIR += rubygem-tty-reader SUBDIR += rubygem-tty-screen SUBDIR += rubygem-tty-spinner SUBDIR += rubygem-tty-table SUBDIR += rubygem-tty-tree SUBDIR += rubygem-tty-which SUBDIR += rubygem-turn SUBDIR += rubygem-typed-array SUBDIR += rubygem-typeprof SUBDIR += rubygem-tzinfo SUBDIR += rubygem-tzinfo-data SUBDIR += rubygem-tzinfo1 SUBDIR += rubygem-uber SUBDIR += rubygem-un SUBDIR += rubygem-unicode SUBDIR += rubygem-unicode-display_width SUBDIR += rubygem-unicode_utils SUBDIR += rubygem-unleash SUBDIR += rubygem-useragent SUBDIR += rubygem-uuid SUBDIR += rubygem-uuidtools SUBDIR += rubygem-valid SUBDIR += rubygem-validatable SUBDIR += rubygem-validate_email SUBDIR += rubygem-validate_url SUBDIR += rubygem-validates_timeliness SUBDIR += rubygem-version_gem SUBDIR += rubygem-versionomy SUBDIR += rubygem-view_component-rails61 SUBDIR += rubygem-virtus SUBDIR += rubygem-warbler SUBDIR += rubygem-warden SUBDIR += rubygem-warning SUBDIR += rubygem-wdm SUBDIR += rubygem-weakref SUBDIR += rubygem-web-console-rails60 SUBDIR += rubygem-web-console-rails61 SUBDIR += rubygem-web-console2 SUBDIR += rubygem-web-console3-rails5 SUBDIR += rubygem-web-console3-rails50 SUBDIR += rubygem-web-console3-rails52 SUBDIR += rubygem-webby SUBDIR += rubygem-webfinger SUBDIR += rubygem-webpacker-rails60 SUBDIR += rubygem-webpacker-rails61 SUBDIR += rubygem-webpacker4-rails60 SUBDIR += rubygem-will_paginate SUBDIR += rubygem-windows_error SUBDIR += rubygem-wisper SUBDIR += rubygem-with_env SUBDIR += rubygem-wmi-lite SUBDIR += rubygem-xdg SUBDIR += rubygem-xdg2 SUBDIR += rubygem-xdg3 SUBDIR += rubygem-xdg4 SUBDIR += rubygem-xdg5 SUBDIR += rubygem-xdg6 SUBDIR += rubygem-xorcist SUBDIR += rubygem-xpath SUBDIR += rubygem-xxhash SUBDIR += rubygem-yajl-ruby SUBDIR += rubygem-yui-compressor SUBDIR += rubygem-zeitwerk SUBDIR += rubygem-zentest SUBDIR += rubygem-zhexdump SUBDIR += rubygem-zlib SUBDIR += rubygem-zstd-ruby SUBDIR += rubymine SUBDIR += rudeconfig SUBDIR += rudiments SUBDIR += ruff SUBDIR += rust-analyzer SUBDIR += rust-bindgen-cli SUBDIR += rust-cbindgen SUBDIR += rustc-demangle SUBDIR += rvi SUBDIR += rvm SUBDIR += rxcpp SUBDIR += sabre SUBDIR += safe-iop SUBDIR += samurai SUBDIR += sasm SUBDIR += sbt SUBDIR += scalatest SUBDIR += scandoc SUBDIR += sccache SUBDIR += sccs SUBDIR += schilybase SUBDIR += scons SUBDIR += sd-mux-ctrl SUBDIR += sdbus-cpp SUBDIR += sdl12 SUBDIR += sdl12-compat SUBDIR += sdl20 SUBDIR += sdl2pp SUBDIR += sdl_console SUBDIR += sdlmm SUBDIR += sdlskk SUBDIR += sdts++ SUBDIR += sedsed SUBDIR += selene SUBDIR += sentry-cli SUBDIR += serd SUBDIR += serdisplib SUBDIR += sfml SUBDIR += sfml1 SUBDIR += sfsexp SUBDIR += sgb SUBDIR += shadered SUBDIR += shapelib SUBDIR += shards SUBDIR += shell-toolbox SUBDIR += shflags SUBDIR += shfmt SUBDIR += shiboken2 SUBDIR += shmap SUBDIR += shroud SUBDIR += shtk SUBDIR += shtool SUBDIR += shunit2 SUBDIR += sigar SUBDIR += signal-fts5-extension SUBDIR += sigslot SUBDIR += silc-toolkit SUBDIR += silentbob SUBDIR += simavr SUBDIR += simde SUBDIR += simdjson SUBDIR += simgear SUBDIR += simian SUBDIR += simpleini SUBDIR += sjasmplus SUBDIR += skalibs SUBDIR += skypat SUBDIR += slf4j SUBDIR += slibtool SUBDIR += smake SUBDIR += smc SUBDIR += smooth SUBDIR += smv SUBDIR += snazy SUBDIR += soapui SUBDIR += sobjectizer SUBDIR += socket_wrapper SUBDIR += soft-serve SUBDIR += sol2 SUBDIR += sonar-scanner-cli SUBDIR += sonarqube-ant-task SUBDIR += sonarqube-community SUBDIR += sope SUBDIR += sope2 SUBDIR += sord SUBDIR += spark SUBDIR += sparsebitset SUBDIR += sparsehash SUBDIR += spatialindex SUBDIR += spdlog SUBDIR += spice-protocol SUBDIR += spin SUBDIR += spirv-llvm-translator SUBDIR += splint SUBDIR += spr SUBDIR += spread-sheet-widget SUBDIR += spyder SUBDIR += srecord SUBDIR += st SUBDIR += stack SUBDIR += staf SUBDIR += statcvs SUBDIR += statik SUBDIR += statsvn SUBDIR += stb SUBDIR += stdman SUBDIR += stdx-allocator SUBDIR += stfl SUBDIR += stlfilt SUBDIR += stlink SUBDIR += str SUBDIR += strace SUBDIR += string_theory SUBDIR += stringencoders SUBDIR += stuffbin SUBDIR += stxxl SUBDIR += stylua SUBDIR += subversion SUBDIR += subversion-book SUBDIR += subversion-lts SUBDIR += subversive SUBDIR += sunpromake SUBDIR += svk SUBDIR += svn2git SUBDIR += svn_load_dirs SUBDIR += svntrac SUBDIR += swank-clojure SUBDIR += swig SUBDIR += swig40 SUBDIR += sysconftool SUBDIR += sysfsutils SUBDIR += systemc SUBDIR += t1lib SUBDIR += ta-lib SUBDIR += tablist SUBDIR += tabulate SUBDIR += tagref SUBDIR += tailor SUBDIR += talloc SUBDIR += tarpaulin SUBDIR += taskctl SUBDIR += taskflow SUBDIR += tass64 SUBDIR += tbb SUBDIR += tcl-memchan SUBDIR += tcl-mmap SUBDIR += tcl-signal SUBDIR += tcl-trf SUBDIR += tclap SUBDIR += tclbsd SUBDIR += tclcheck SUBDIR += tcllauncher SUBDIR += tcllib SUBDIR += tcllibc SUBDIR += tclreadline SUBDIR += tclthread SUBDIR += tcltls SUBDIR += tclvfs SUBDIR += tclxml SUBDIR += tdl SUBDIR += template-glib SUBDIR += termbox SUBDIR += termcolor SUBDIR += terminality SUBDIR += test-drive SUBDIR += tevent SUBDIR += tex-kpathsea SUBDIR += tex-libtexlua SUBDIR += tex-libtexluajit SUBDIR += tex-synctex SUBDIR += tex-web2c SUBDIR += texlab SUBDIR += the-way SUBDIR += thonny SUBDIR += thrift SUBDIR += thrift-c_glib SUBDIR += thrift-cpp SUBDIR += thrust SUBDIR += thunar-vcs-plugin SUBDIR += ticcutils SUBDIR += tig SUBDIR += tigcc SUBDIR += tijmp SUBDIR += tinycbor SUBDIR += tinygo SUBDIR += tinylaf SUBDIR += tkcon SUBDIR += tkcvs SUBDIR += tkp4 SUBDIR += tl-expected SUBDIR += tla SUBDIR += tllist SUBDIR += tlsh SUBDIR += tlx SUBDIR += tmake SUBDIR += tnt SUBDIR += tokei SUBDIR += tokio-console SUBDIR += toml11 SUBDIR += tortoisehg SUBDIR += tpasm SUBDIR += tradcpp SUBDIR += transient SUBDIR += transient-devel SUBDIR += transwarp SUBDIR += tree-sitter SUBDIR += tree-sitter-graph SUBDIR += treefmt SUBDIR += treepy.el SUBDIR += trellis SUBDIR += trio SUBDIR += trompeloeil SUBDIR += truc SUBDIR += tup SUBDIR += twiggy SUBDIR += typeshare SUBDIR += ua_parser-core SUBDIR += uclcmd SUBDIR += ucommon SUBDIR += ucpp SUBDIR += udis86 SUBDIR += uid_wrapper SUBDIR += ultragetopt SUBDIR += umbrello SUBDIR += umlgraph SUBDIR += undead SUBDIR += unibilium SUBDIR += universal-ctags SUBDIR += upnp SUBDIR += upp SUBDIR += upslug SUBDIR += urjtag SUBDIR += utf8cpp SUBDIR += uthash SUBDIR += util-linux SUBDIR += valgrind SUBDIR += valgrind-devel SUBDIR += varconf SUBDIR += vasm SUBDIR += vc SUBDIR += vc-intrinsics SUBDIR += vcglib SUBDIR += vera++ SUBDIR += vexcl SUBDIR += viewvc-devel SUBDIR += violet SUBDIR += vipack SUBDIR += vitables SUBDIR += volk SUBDIR += vstr SUBDIR += vxlog SUBDIR += wand-libconfig SUBDIR += wandio SUBDIR += wasi-compiler-rt11 SUBDIR += wasi-compiler-rt13 SUBDIR += wasi-libc SUBDIR += wasi-libcxx SUBDIR += wasm3 SUBDIR += websocketpp SUBDIR += websvn SUBDIR += wf-config SUBDIR += wininfo SUBDIR += wizardkit SUBDIR += woff2 SUBDIR += wrangler SUBDIR += wxformbuilder SUBDIR += xa65 SUBDIR += xbyak SUBDIR += xc3sprog SUBDIR += xcscope.el SUBDIR += xdg-user-dirs SUBDIR += xdg-utils SUBDIR += xdgpaths SUBDIR += xelfviewer SUBDIR += xeus SUBDIR += xeus-cling SUBDIR += xeus-zmq SUBDIR += xfce4-dev-tools SUBDIR += xmake SUBDIR += xmltooling SUBDIR += xopcodecalc SUBDIR += xorg-macros SUBDIR += xparam SUBDIR += xpeviewer SUBDIR += xsd SUBDIR += xsimd SUBDIR += xtensa-esp32-elf SUBDIR += xtl SUBDIR += xtl-quant-stack SUBDIR += xtoolchain-llvm-devel SUBDIR += xwpe SUBDIR += xxgdb SUBDIR += xxhash SUBDIR += xxl SUBDIR += yaegi SUBDIR += yaggo SUBDIR += yajl SUBDIR += yajl-tcl SUBDIR += yaml-cpp SUBDIR += yaml2argdata SUBDIR += yasm SUBDIR += yder SUBDIR += youcompleteme SUBDIR += yuck SUBDIR += z80-asm SUBDIR += z80asm SUBDIR += z80ex SUBDIR += z88dk SUBDIR += zanata-cli SUBDIR += zanata-platform SUBDIR += zapcc SUBDIR += zeal SUBDIR += zfp SUBDIR += zls SUBDIR += zookeeper SUBDIR += zpu-binutils SUBDIR += zpu-gcc SUBDIR += zthread SUBDIR += zycore-c SUBDIR += zydis SUBDIR += zziplib .include diff --git a/devel/electron23/Makefile b/devel/electron23/Makefile new file mode 100644 index 000000000000..bf7c7b579f60 --- /dev/null +++ b/devel/electron23/Makefile @@ -0,0 +1,412 @@ +PORTNAME= electron +DISTVERSIONPREFIX= v +DISTVERSION= ${ELECTRON_VER:S/-beta./.b/} +CATEGORIES= devel +MASTER_SITES= https://github.com/tagattie/FreeBSD-Electron/releases/download/v23.2.1/:chromium \ + https://commondatastorage.googleapis.com/chromium-nodejs/:chromium_node \ + https://commondatastorage.googleapis.com/chromium-fonts/:chromium_testfonts +PKGNAMESUFFIX= ${ELECTRON_VER_MAJOR} +DISTFILES= chromium-${CHROMIUM_VER}${EXTRACT_SUFX}:chromium \ + ${CHROMIUM_NODE_MODULES_HASH}:chromium_node \ + ${CHROMIUM_TEST_FONTS_HASH}:chromium_testfonts \ + electron-yarn-cache-${ELECTRON_VER}${EXTRACT_SUFX}:prefetch +DIST_SUBDIR= ${PORTNAME} + +MAINTAINER= tagattie@FreeBSD.org +COMMENT= Build cross-platform desktop apps with JavaScript, HTML, and CSS +WWW= https://electronjs.org/ + +LICENSE= BSD3CLAUSE LGPL21 MPL11 MIT +LICENSE_COMB= multi +LICENSE_FILE= ${WRKSRC}/electron/LICENSE + +ONLY_FOR_ARCHS= aarch64 amd64 i386 + +FETCH_DEPENDS= yarn-node18>0:www/yarn-node18 +EXTRACT_DEPENDS=yarn-node18>0:www/yarn-node18 +PATCH_DEPENDS= git:devel/git +BUILD_DEPENDS= gperf:devel/gperf \ + yasm:devel/yasm \ + ${LOCALBASE}/libdata/pkgconfig/dri.pc:graphics/mesa-dri \ + ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat \ + node18>0:www/node18 \ + npm-node18>0:www/npm-node18 +LIB_DEPENDS= libatk-bridge-2.0.so:accessibility/at-spi2-core \ + libatspi.so:accessibility/at-spi2-core \ + libsnappy.so:archivers/snappy \ + libFLAC.so:audio/flac \ + libopus.so:audio/opus \ + libdbus-1.so:devel/dbus \ + libicuuc.so:devel/icu \ + libepoll-shim.so:devel/libepoll-shim \ + libevent.so:devel/libevent \ + libffi.so:devel/libffi \ + libnotify.so:devel/libnotify \ + libpci.so:devel/libpci \ + libnspr4.so:devel/nspr \ + libre2.so:devel/re2 \ + libdrm.so:graphics/libdrm \ + libpng.so:graphics/png \ + libwayland-client.so:graphics/wayland \ + libwebp.so:graphics/webp \ + libva.so:multimedia/libva \ + libopenh264.so:multimedia/openh264 \ + libfreetype.so:print/freetype2 \ + libharfbuzz.so:print/harfbuzz \ + libsecret-1.so:security/libsecret \ + libnss3.so:security/nss \ + libexpat.so:textproc/expat2 \ + libxkbcommon.so:x11/libxkbcommon \ + libxshmfence.so:x11/libxshmfence \ + libfontconfig.so:x11-fonts/fontconfig +RUN_DEPENDS= xdg-open:devel/xdg-utils +TEST_DEPENDS= git:devel/git \ + ${PYTHON_PKGNAMEPREFIX}python-dbusmock>0:devel/py-python-dbusmock@${PY_FLAVOR} \ + npm-node18>0:www/npm-node18 + +USES= bison compiler:c++17-lang cpe gettext-tools gl gnome \ + iconv:wchar_t jpeg localbase:ldflags ninja pkgconfig \ + python:build,test shebangfix tar:xz xorg + +CPE_VENDOR= electronjs +USE_GITHUB= yes +GH_TAGNAME= ${DISTVERSIONPREFIX}${ELECTRON_VER} +GH_TUPLE= nodejs:node:v${NODE_VER}:node \ + nodejs:nan:${NAN_VER}:nan \ + Squirrel:Squirrel.Mac:${SQUIRREL_MAC_VER}:squirrel_mac \ + ReactiveCocoa:ReactiveObjC:${REACTIVEOBJC_VER}:reactiveobjc \ + Mantle:Mantle:${MANTLE_VER}:mantle +USE_GL= gbm gl glesv2 +USE_GNOME= atk cairo gdkpixbuf2 gtk30 libxml2 libxslt pango +USE_LDCONFIG= ${DATADIR} +USE_XORG= x11 xcb xcomposite xcursor xdamage xext xfixes xi xrandr \ + xrender xscrnsaver xtst + +SHEBANG_FILES= chrome/tools/build/linux/chrome-wrapper buildtools/linux64/clang-format + +MAKE_ARGS= -C out/${BUILDTYPE} +MAKE_ENV+= C_INCLUDE_PATH=${LOCALBASE}/include \ + CPLUS_INCLUDE_PATH=${LOCALBASE}/include +ALL_TARGET= electron third_party/electron_node:headers +POST_BUILD_TARGETS= licenses version +POST_BUILD_DIST_TARGETS=electron_dist_zip electron_chromedriver_zip \ + electron_mksnapshot_zip + +DATADIR= ${PREFIX}/share/${PORTNAME}${PKGNAMESUFFIX} +BINARY_ALIAS= python3=${PYTHON_CMD} + +NO_WRKSUBDIR= yes +WRKSRC_SUBDIR= src + +GN_ARGS+= clang_use_chrome_plugins=false \ + enable_backup_ref_ptr_support=false \ + enable_hangout_services_extension=true \ + enable_js_type_check=false \ + enable_nacl=false \ + enable_remoting=false \ + fatal_linker_warnings=false \ + icu_use_data_file=false \ + is_clang=true \ + optimize_webui=true \ + toolkit_views=true \ + treat_warnings_as_errors=false \ + use_allocator_shim=false \ + use_aura=true \ + use_custom_libcxx=false \ + use_gnome_keyring=false \ + use_lld=true \ + use_partition_alloc=true \ + use_partition_alloc_as_malloc=false \ + use_sysroot=false \ + use_system_freetype=false \ + use_system_harfbuzz=true \ + use_system_libffi=true \ + use_system_libjpeg=true \ + use_udev=false \ + chrome_pgo_phase=0 \ + extra_cxxflags="${CXXFLAGS}" \ + extra_ldflags="${LDFLAGS}" + +# TODO: investigate building with these options: +# use_system_minigbm +GN_BOOTSTRAP_FLAGS= --no-clean --no-rebuild --skip-generate-buildfiles + +PLIST_SUB= ELECTRON_VER=${ELECTRON_VER} \ + ELECTRON_VER_MAJOR=${ELECTRON_VER_MAJOR} + +OPTIONS_DEFINE= CODECS CUPS DEBUG DIST DRIVER KERBEROS LTO +OPTIONS_DEFAULT= CODECS CUPS DRIVER KERBEROS SNDIO +OPTIONS_EXCLUDE_aarch64=LTO +OPTIONS_GROUP= AUDIO +OPTIONS_GROUP_AUDIO= ALSA PULSEAUDIO SNDIO +OPTIONS_RADIO= KERBEROS +OPTIONS_RADIO_KERBEROS= HEIMDAL HEIMDAL_BASE MIT +OPTIONS_SUB= yes +CODECS_DESC= Compile and enable patented codecs like H.264 +DIST_DESC= Build distribution zip files +DRIVER_DESC= Install chromedriver +HEIMDAL_BASE_DESC= Heimdal Kerberos (base) +HEIMDAL_DESC= Heimdal Kerberos (security/heimdal) +MIT_DESC= MIT Kerberos (security/krb5) + +ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib +ALSA_RUN_DEPENDS= ${LOCALBASE}/lib/alsa-lib/libasound_module_pcm_oss.so:audio/alsa-plugins \ + alsa-lib>=1.1.1_1:audio/alsa-lib +ALSA_VARS= GN_ARGS+=use_alsa=true +ALSA_VARS_OFF= GN_ARGS+=use_alsa=false + +CODECS_VARS= GN_ARGS+=ffmpeg_branding="Chrome" \ + GN_ARGS+=proprietary_codecs=true +CODECS_VARS_OFF= GN_ARGS+=ffmpeg_branding="Chromium" \ + GN_ARGS+=proprietary_codecs=false + +CUPS_LIB_DEPENDS= libcups.so:print/cups +CUPS_VARS= GN_ARGS+=use_cups=true +CUPS_VARS_OFF= GN_ARGS+=use_cups=false + +DEBUG_BUILD_DEPENDS= esbuild:devel/esbuild +DEBUG_VARS= BUILDTYPE=Debug \ + GN_FILE=testing.gn \ + GN_ARGS+=is_debug=true \ + GN_ARGS+=is_component_build=false \ + GN_ARGS+=symbol_level=1 \ + GN_BOOTSTRAP_FLAGS+=--debug \ + WANTSPACE="21 GB" +DEBUG_VARS_OFF= BUILDTYPE=Release \ + GN_FILE=release.gn \ + GN_ARGS+=blink_symbol_level=0 \ + GN_ARGS+=is_debug=false \ + GN_ARGS+=is_official_build=true \ + GN_ARGS+=symbol_level=0 \ + WANTSPACE="14 GB" + +DIST_IMPLIES= DRIVER +DRIVER_MAKE_ARGS= chromedriver + +HEIMDAL_LIB_DEPENDS= libkrb.so.26:security/heimdal +KERBEROS_VARS= GN_ARGS+=use_kerberos=true +KERBEROS_VARS_OFF= GN_ARGS+=use_kerberos=false + +LTO_VARS= GN_ARGS+=use_thin_lto=true \ + GN_ARGS+=thin_lto_enable_optimizations=true \ + WANTSPACE="14 GB" +LTO_VARS_OFF= GN_ARGS+=use_thin_lto=false + +MIT_LIB_DEPENDS= libkrb.so.3:security/krb5 +PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio +PULSEAUDIO_VARS= GN_ARGS+=use_pulseaudio=true +PULSEAUDIO_VARS_OFF= GN_ARGS+=use_pulseaudio=false + +# With SNDIO=on we exclude audio_manager_linux from the build (see +# media/audio/BUILD.gn) and use audio_manager_openbsd which does not +# support falling back to ALSA or PulseAudio. +SNDIO_PREVENTS= ALSA PULSEAUDIO +SNDIO_LIB_DEPENDS= libsndio.so:audio/sndio +SNDIO_VARS= GN_ARGS+=use_sndio=true +SNDIO_VARS_OFF= GN_ARGS+=use_sndio=false + +# See ${WRKSRC}/electron/DEPS for CHROMIUM_VER +CHROMIUM_VER= 110.0.5481.208 +# See ${WRKSRC}/third_party/node/node_modules.tar.gz.sha1 for CHROMIUM_NODE_MODULES_HASH +CHROMIUM_NODE_MODULES_HASH= 32dc8abec1486818f6ef4afc4996abc002b5218e +# See ${WRKSRC}/third_party/test_fonts/test_fonts.tar.gz.sha1 for CHROMIUM_TEST_FONTS_HASH +CHROMIUM_TEST_FONTS_HASH= 336e775eec536b2d785cc80eff6ac39051931286 +# See ${WRKSRC}/electron/DEPS for NODE_VER +NODE_VER= 18.12.1 +# See ${WRKSRC}/electron/DEPS for NAN_VER +NAN_VER= 16fa32231e2ccd89d2804b3f765319128b20c4ac +# See ${WRKSRC}/electron/DEPS for SQUIRREL_MAC_VER +SQUIRREL_MAC_VER= 0e5d146ba13101a1302d59ea6e6e0b3cace4ae38 +# See ${WRKSRC}/electron/DEPS for REACTIVEOBJC_VER +REACTIVEOBJC_VER= 74ab5baccc6f7202c8ac69a8d1e152c29dc1ea76 +# See ${WRKSRC}/electron/DEPS for MANTLE_VER +MANTLE_VER= 78d3966b3c331292ea29ec38661b25df0a245948 + +YARN_TIMESTAMP= 1681806367 + +.include "Makefile.version" +.include + +.if ${PORT_OPTIONS:MHEIMDAL_BASE} && !exists(/usr/lib/libkrb5.so) +IGNORE= you have selected HEIMDAL_BASE but do not have Heimdal installed in base +.endif + +.if ${COMPILER_VERSION} != 130 +LLVM_DEFAULT= 13 +BUILD_DEPENDS+= clang${LLVM_DEFAULT}:devel/llvm${LLVM_DEFAULT} +BINARY_ALIAS+= cpp=${LOCALBASE}/bin/clang-cpp${LLVM_DEFAULT} \ + cc=${LOCALBASE}/bin/clang${LLVM_DEFAULT} \ + c++=${LOCALBASE}/bin/clang++${LLVM_DEFAULT} \ + ar=${LOCALBASE}/bin/llvm-ar${LLVM_DEFAULT} \ + nm=${LOCALBASE}/bin/llvm-nm${LLVM_DEFAULT} \ + ld=${LOCALBASE}/bin/ld.lld${LLVM_DEFAULT} +.else +BINARY_ALIAS+= ar=/usr/bin/llvm-ar \ + nm=/usr/bin/llvm-nm +.endif + +.if ${ARCH} == "amd64" +PLIST_SUB+= AMD64="" +.else +PLIST_SUB+= AMD64="@comment " +.endif + +.if ${ARCH} == "i386" +PLIST_SUB+= I386="" +.else +PLIST_SUB+= I386="@comment " +.endif + +# Allow relocations against read-only segments (override lld default) +LDFLAGS_i386= -Wl,-znotext + +# TODO: -isystem, would be just as ugly as this approach, but more reliably +# build would fail without C_INCLUDE_PATH/CPLUS_INCLUDE_PATH env var set. +MAKE_ENV+= C_INCLUDE_PATH=${LOCALBASE}/include \ + CPLUS_INCLUDE_PATH=${LOCALBASE}/include + +pre-everything:: + @${ECHO_MSG} + @${ECHO_MSG} "To build electron, you should have around 2GB of memory" + @${ECHO_MSG} "and around ${WANTSPACE} of free disk space." + @${ECHO_MSG} + +pre-fetch: + @${MKDIR} ${DISTDIR}/${DIST_SUBDIR} + if [ ! -f ${DISTDIR}/${DIST_SUBDIR}/electron-yarn-cache-${ELECTRON_VER}${EXTRACT_SUFX} ]; \ + then ${MKDIR} ${WRKDIR}; \ + ${ECHO_CMD} 'yarn-offline-mirror "./yarn-offline-cache"' >> \ + ${WRKDIR}/.yarnrc; \ + ${CP} ${FILESDIR}/package.json ${FILESDIR}/yarn.lock ${WRKDIR}; \ + cd ${WRKDIR} && ${SETENV} HOME=${WRKDIR} XDG_CACHE_HOME=${WRKDIR}/.cache \ + yarn --frozen-lockfile --ignore-scripts; \ + ${MTREE_CMD} -cbnSp yarn-offline-cache | ${MTREE_CMD} -C | ${SED} \ + -e 's:time=[0-9.]*:time=${YARN_TIMESTAMP}.000000000:' \ + -e 's:\([gu]id\)=[0-9]*:\1=0:g' \ + -e 's:flags=.*:flags=none:' \ + -e 's:^\.:./yarn-offline-cache:' > yarn-offline-cache.mtree; \ + ${TAR} cJf ${DISTDIR}/${DIST_SUBDIR}/electron-yarn-cache-${ELECTRON_VER}${EXTRACT_SUFX} \ + @yarn-offline-cache.mtree; \ + ${RM} -r ${WRKDIR}; \ + fi + +post-extract: +# Move extracted sources to appropriate locations + ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/chromium-${CHROMIUM_VER} ${WRKSRC} + ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${PORTNAME}-${ELECTRON_VER} ${WRKSRC}/electron + ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_nan}-${NAN_VER} \ + ${WRKSRC}/third_party/nan + ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_node}-${NODE_VER} \ + ${WRKSRC}/third_party/electron_node + ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_squirrel_mac}-${SQUIRREL_MAC_VER} \ + ${WRKSRC}/third_party/squirrel.mac + ${MKDIR} ${WRKSRC}/third_party/squirrel.mac/vendor + ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_reactiveobjc}-${REACTIVEOBJC_VER} \ + ${WRKSRC}/third_party/squirrel.mac/vendor/ReactiveObjC + ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_mantle}-${MANTLE_VER} \ + ${WRKSRC}/third_party/squirrel.mac/vendor/Mantle + ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/node_modules ${WRKSRC}/third_party/node + ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/test_fonts ${WRKSRC}/third_party/test_fonts +# Install node modules for electron + ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/yarn-offline-cache ${WRKDIR} + ${ECHO_CMD} 'yarn-offline-mirror "../../../yarn-offline-cache"' >> ${WRKSRC}/electron/.yarnrc + ${MV} ${WRKSRC}/electron/package.json ${WRKSRC}/electron/package.json.bak + ${CP} ${FILESDIR}/package.json ${WRKSRC}/electron + cd ${WRKSRC}/electron && \ + ${SETENV} HOME=${WRKDIR} XDG_CACHE_HOME=${WRKDIR}/.cache yarn --frozen-lockfile --offline + +pre-patch: + ${SH} ${FILESDIR}/apply-electron-patches.sh ${WRKSRC} + # ${FIND} ${WRKSRC} -type f -name '*.orig' -print -delete + # ${FIND} ${WRKSRC} -type f -name '*~' -print -delete + +pre-configure: + # We used to remove bundled libraries to be sure that chromium uses + # system libraries and not shipped ones. + # cd ${WRKSRC} && ${PYTHON_CMD} \ + #./build/linux/unbundle/remove_bundled_libraries.py [list of preserved] + cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} ${PYTHON_CMD} \ + ./build/linux/unbundle/replace_gn_files.py --system-libraries \ + flac fontconfig freetype harfbuzz-ng icu libdrm libevent libpng \ + libusb libwebp libxml libxslt openh264 opus snappy || ${FALSE} + # Chromium uses an unreleased version of FFmpeg, so configure it +.for brand in Chrome Chromium + ${CP} -R \ + ${WRKSRC}/third_party/ffmpeg/chromium/config/${brand}/linux/ \ + ${WRKSRC}/third_party/ffmpeg/chromium/config/${brand}/freebsd +.endfor + +do-configure: + # GN generator bootstrapping and generating ninja files + cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} CC=${CC} CXX=${CXX} LD=${CXX} \ + READELF=${READELF} AR=${AR} NM=${NM} ${PYTHON_CMD} \ + ./tools/gn/bootstrap/bootstrap.py ${GN_BOOTSTRAP_FLAGS} + cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} ./out/${BUILDTYPE}/gn gen out/${BUILDTYPE} \ + --args='import("//electron/build/args/${GN_FILE}") ${GN_ARGS}' + + # Setup nodejs dependency + @${MKDIR} ${WRKSRC}/third_party/node/freebsd/node-freebsd/bin + ${LN} -sf ${LOCALBASE}/bin/node ${WRKSRC}/third_party/node/freebsd/node-freebsd/bin/node + + # Setup buildtools/freebsd + @${MKDIR} ${WRKSRC}/buildtools/freebsd + ${LN} -sf ${WRKSRC}/buildtools/linux64/clang-format ${WRKSRC}/buildtools/freebsd + ${LN} -sf ${WRKSRC}/out/${BUILDTYPE}/gn ${WRKSRC}/buildtools/freebsd + ${LN} -sf /usr/bin/strip ${WRKSRC}/buildtools/freebsd/strip + +post-build: + cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \ + ${MAKE_CMD} ${MAKE_ARGS} ${POST_BUILD_TARGETS} + +post-build-DIST-on: + cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \ + ${MAKE_CMD} ${MAKE_ARGS} ${POST_BUILD_DIST_TARGETS} + cd ${WRKSRC}/out/${BUILDTYPE} && \ + ${CP} chromedriver.zip chromedriver-v${ELECTRON_VER}-freebsd-${ARCH:S/amd64/x64/:S/i386/ia32/}.zip && \ + ${CP} dist.zip electron-v${ELECTRON_VER}-freebsd-${ARCH:S/amd64/x64/:S/i386/ia32/}.zip && \ + ${CP} mksnapshot.zip mksnapshot-v${ELECTRON_VER}-freebsd-${ARCH:S/amd64/x64/:S/i386/ia32/}.zip && \ + ${SHA256} -r *-v${ELECTRON_VER}-freebsd-*.zip | ${SED} -e 's/ / */' > SHASUMS256.txt + +do-install: + ${MKDIR} ${STAGEDIR}${DATADIR} +.for f in electron mksnapshot v8_context_snapshot_generator + ${INSTALL_PROGRAM} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR} +.endfor +.for f in libEGL.so libGLESv2.so libffmpeg.so libvk_swiftshader.so + ${INSTALL_LIB} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR} +.endfor + ${INSTALL_LIB} ${WRKSRC}/out/${BUILDTYPE}/libvulkan.so.1 ${STAGEDIR}${DATADIR}/libvulkan.so +.for f in LICENSE LICENSES.chromium.html snapshot_blob.bin v8_context_snapshot.bin version vk_swiftshader_icd.json + ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR} +.endfor +.for f in chrome_100_percent.pak chrome_200_percent.pak resources.pak + ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR} +.endfor + ${MKDIR} ${STAGEDIR}${DATADIR}/locales + ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/locales/*.pak ${STAGEDIR}${DATADIR}/locales + ${MKDIR} ${STAGEDIR}${DATADIR}/resources +.for f in default_app.asar + ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/resources/${f} ${STAGEDIR}${DATADIR}/resources +.endfor + cd ${WRKSRC}/out/${BUILDTYPE}/gen && ${COPYTREE_SHARE} node_headers ${STAGEDIR}${DATADIR} + cd ${WRKSRC}/out/${BUILDTYPE} && ${COPYTREE_SHARE} gen/electron/buildflags ${STAGEDIR}${DATADIR} + cd ${WRKSRC}/out/${BUILDTYPE} && ${COPYTREE_SHARE} gen/v8/embedded.S ${STAGEDIR}${DATADIR} + ${RLN} ${STAGEDIR}${DATADIR}/electron ${STAGEDIR}${PREFIX}/bin/electron${PKGNAMESUFFIX} + +post-install-DIST-on: + ${MKDIR} ${STAGEDIR}${DATADIR}/releases + ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/SHASUMS256.txt ${STAGEDIR}${DATADIR}/releases + ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/*-v${ELECTRON_VER}-freebsd-*.zip ${STAGEDIR}${DATADIR}/releases + +post-install-DRIVER-on: + ${INSTALL_PROGRAM} ${WRKSRC}/out/${BUILDTYPE}/chromedriver.unstripped \ + ${STAGEDIR}${DATADIR}/chromedriver + +do-test: +# Note 1: "npm install" will run before actual tests are executed +# Note 2: Xvfb or something similar is necessary for headless testing + cd ${WRKSRC}/electron && \ + ${SETENV} ${TEST_ENV} ELECTRON_OUT_DIR=${BUILDTYPE} LOCAL_GIT_DIRECTORY=${LOCALBASE} \ + npm run test -- --ci + +.include diff --git a/devel/electron23/Makefile.version b/devel/electron23/Makefile.version new file mode 100644 index 000000000000..d9641aaad166 --- /dev/null +++ b/devel/electron23/Makefile.version @@ -0,0 +1,2 @@ +ELECTRON_VER= 23.2.4 +ELECTRON_VER_MAJOR= ${ELECTRON_VER:C/\..*//} diff --git a/devel/electron23/distinfo b/devel/electron23/distinfo new file mode 100644 index 000000000000..fd143b44797b --- /dev/null +++ b/devel/electron23/distinfo @@ -0,0 +1,21 @@ +TIMESTAMP = 1681807036 +SHA256 (electron/chromium-110.0.5481.208.tar.xz) = 9f364e9a61a961b808ac241076fe25f8c48e5d7349a3236a9023a51018890ccc +SIZE (electron/chromium-110.0.5481.208.tar.xz) = 1554639732 +SHA256 (electron/32dc8abec1486818f6ef4afc4996abc002b5218e) = b7f797156b45c21a104f732366dad74e5b401bae8e3ce75fe1e54769cda3c0c2 +SIZE (electron/32dc8abec1486818f6ef4afc4996abc002b5218e) = 9903987 +SHA256 (electron/336e775eec536b2d785cc80eff6ac39051931286) = a2ca2962daf482a8f943163541e1c73ba4b2694fabcd2510981f2db4eda493c8 +SIZE (electron/336e775eec536b2d785cc80eff6ac39051931286) = 32624734 +SHA256 (electron/electron-yarn-cache-23.2.4.tar.xz) = aba90e2a30cfcfed93d305260447715ba502b398d340a78984c3a649596a7ad4 +SIZE (electron/electron-yarn-cache-23.2.4.tar.xz) = 38872852 +SHA256 (electron/electron-electron-v23.2.4_GH0.tar.gz) = 22222c05c9b7c0a0dcdf07a7a09ebc118e160c75e7f0849adbc1bf86fef30d06 +SIZE (electron/electron-electron-v23.2.4_GH0.tar.gz) = 10464686 +SHA256 (electron/nodejs-node-v18.12.1_GH0.tar.gz) = 7e7962209d25ed6c28b722b78a0b0ca304307d7bf536aca142be330901b11d50 +SIZE (electron/nodejs-node-v18.12.1_GH0.tar.gz) = 108947341 +SHA256 (electron/nodejs-nan-16fa32231e2ccd89d2804b3f765319128b20c4ac_GH0.tar.gz) = 3807ae6a1e451a29f068540472f100f9718d457c60ac62f2f8469d1d57475d39 +SIZE (electron/nodejs-nan-16fa32231e2ccd89d2804b3f765319128b20c4ac_GH0.tar.gz) = 179355 +SHA256 (electron/Squirrel-Squirrel.Mac-0e5d146ba13101a1302d59ea6e6e0b3cace4ae38_GH0.tar.gz) = f4ebb40a8d85dbb7ef02aa0571b2f8e22182c6d73b6992484a53c90047779d01 +SIZE (electron/Squirrel-Squirrel.Mac-0e5d146ba13101a1302d59ea6e6e0b3cace4ae38_GH0.tar.gz) = 2112918 +SHA256 (electron/ReactiveCocoa-ReactiveObjC-74ab5baccc6f7202c8ac69a8d1e152c29dc1ea76_GH0.tar.gz) = 88e65f116c7a06fccedb43970fba63080a57a4e5dc29147d2cdfe1ee58dd0546 +SIZE (electron/ReactiveCocoa-ReactiveObjC-74ab5baccc6f7202c8ac69a8d1e152c29dc1ea76_GH0.tar.gz) = 1136238 +SHA256 (electron/Mantle-Mantle-78d3966b3c331292ea29ec38661b25df0a245948_GH0.tar.gz) = a365df6d83e0be3cc000b70bd39734d80c28f0d9983ebe44698337a2ca464bb1 +SIZE (electron/Mantle-Mantle-78d3966b3c331292ea29ec38661b25df0a245948_GH0.tar.gz) = 62962 diff --git a/devel/electron23/files/apply-electron-patches.sh b/devel/electron23/files/apply-electron-patches.sh new file mode 100644 index 000000000000..9d974b536054 --- /dev/null +++ b/devel/electron23/files/apply-electron-patches.sh @@ -0,0 +1,26 @@ +#! /bin/sh + +PATH=/bin:/usr/bin:/usr/local/bin + +GIT_CMD="git" +PATCH_CMD="${GIT_CMD} apply" +#PATCH_FLAGS="--numstat --check" # for debugging +PATCH_FLAGS="--verbose --reject" + +WRKSRC=$1 +PATCH_CONF=${WRKSRC}/electron/patches/config.json + +${GIT_CMD} status "${WRKSRC}" > /dev/null 2>&1 && IS_GIT_REPO=1 + +PATCHD_REPOD_PAIRS=$(sed -e '1d; $d; /^$/d; s/[",]//g; s/: */:/' "${PATCH_CONF}") +for prp in ${PATCHD_REPOD_PAIRS}; do + pd=$(echo "${prp}" | awk -F: '{print $1}' | sed -e 's/src/./') + rd=$(echo "${prp}" | awk -F: '{print $2}' | sed -e 's/src/./') + (cd "${WRKSRC}/${rd}" && \ + if [ -n "${IS_GIT_REPO}" ]; then + PATCH_FLAGS="${PATCH_FLAGS} --directory=$(${GIT_CMD} rev-parse --show-prefix)" + fi && \ + while read -r p; do + ${PATCH_CMD} ${PATCH_FLAGS} "${WRKSRC}/${pd}/${p}" + done < "${WRKSRC}/${pd}/.patches") +done diff --git a/devel/electron23/files/package.json b/devel/electron23/files/package.json new file mode 100644 index 000000000000..eb414f71b6c5 --- /dev/null +++ b/devel/electron23/files/package.json @@ -0,0 +1,153 @@ +{ + "name": "electron", + "version": "0.0.0-development", + "repository": "https://github.com/electron/electron", + "description": "Build cross platform desktop apps with JavaScript, HTML, and CSS", + "devDependencies": { + "@azure/storage-blob": "^12.9.0", + "@electron/asar": "^3.2.1", + "@electron/docs-parser": "^1.0.0", + "@electron/fiddle-core": "^1.0.4", + "@electron/github-app-auth": "^1.5.0", + "@electron/typescript-definitions": "^8.10.0", + "@octokit/rest": "^19.0.7", + "@primer/octicons": "^10.0.0", + "@types/basic-auth": "^1.1.3", + "@types/busboy": "^0.2.3", + "@types/chai": "^4.2.12", + "@types/chai-as-promised": "^7.1.3", + "@types/dirty-chai": "^2.0.2", + "@types/express": "^4.17.13", + "@types/fs-extra": "^9.0.1", + "@types/klaw": "^3.0.1", + "@types/minimist": "^1.2.0", + "@types/mocha": "^7.0.2", + "@types/node": "^16.11.26", + "@types/semver": "^7.3.3", + "@types/send": "^0.14.5", + "@types/split": "^1.0.0", + "@types/stream-json": "^1.5.1", + "@types/temp": "^0.8.34", + "@types/uuid": "^3.4.6", + "@types/webpack": "^5.28.0", + "@types/webpack-env": "^1.17.0", + "@typescript-eslint/eslint-plugin": "^4.4.1", + "@typescript-eslint/parser": "^4.4.1", + "aws-sdk": "^2.814.0", + "buffer": "^6.0.3", + "check-for-leaks": "^1.2.1", + "colors": "1.4.0", + "dotenv-safe": "^4.0.4", + "dugite": "^1.103.0", + "eslint": "^7.4.0", + "eslint-config-standard": "^14.1.1", + "eslint-plugin-import": "^2.22.0", + "eslint-plugin-mocha": "^7.0.1", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-standard": "^4.0.1", + "eslint-plugin-typescript": "^0.14.0", + "events": "^3.2.0", + "express": "^4.16.4", + "folder-hash": "^2.1.1", + "fs-extra": "^9.0.1", + "got": "^11.8.5", + "husky": "^8.0.1", + "klaw": "^3.0.0", + "lint": "^1.1.2", + "lint-staged": "^10.2.11", + "markdownlint": "^0.21.1", + "markdownlint-cli": "^0.25.0", + "minimist": "^1.2.6", + "null-loader": "^4.0.0", + "pre-flight": "^1.1.0", + "process": "^0.11.10", + "remark-cli": "^10.0.0", + "remark-preset-lint-markdown-style-guide": "^4.0.0", + "semver": "^5.6.0", + "shx": "^0.3.2", + "standard-markdown": "^6.0.0", + "stream-json": "^1.7.1", + "tap-xunit": "^2.4.1", + "temp": "^0.8.3", + "timers-browserify": "1.4.2", + "ts-loader": "^8.0.2", + "ts-node": "6.2.0", + "typescript": "^4.5.5", + "webpack": "^5.73.0", + "webpack-cli": "^4.10.0", + "wrapper-webpack-plugin": "^2.2.0" + }, + "private": true, + "scripts": { + "asar": "asar", + "generate-version-json": "node script/generate-version-json.js", + "lint": "node ./script/lint.js && npm run lint:docs", + "lint:js": "node ./script/lint.js --js", + "lint:clang-format": "python3 script/run-clang-format.py -r -c shell/ || (echo \"\\nCode not formatted correctly.\" && exit 1)", + "lint:clang-tidy": "ts-node ./script/run-clang-tidy.ts", + "lint:cpp": "node ./script/lint.js --cc", + "lint:objc": "node ./script/lint.js --objc", + "lint:py": "node ./script/lint.js --py", + "lint:gn": "node ./script/lint.js --gn", + "lint:docs": "remark docs -qf && npm run lint:js-in-markdown && npm run create-typescript-definitions && npm run lint:docs-relative-links && npm run lint:markdownlint", + "lint:docs-relative-links": "python3 ./script/check-relative-doc-links.py", + "lint:markdownlint": "markdownlint \"*.md\" \"docs/**/*.md\"", + "lint:js-in-markdown": "standard-markdown docs", + "create-api-json": "node script/create-api-json.js", + "create-typescript-definitions": "npm run create-api-json && electron-typescript-definitions --api=electron-api.json && node spec/ts-smoke/runner.js", + "gn-typescript-definitions": "npm run create-typescript-definitions && shx cp electron.d.ts", + "pre-flight": "pre-flight", + "gn-check": "node ./script/gn-check.js", + "gn-format": "python3 script/run-gn-format.py", + "precommit": "lint-staged", + "preinstall": "node -e 'process.exit(0)'", + "prepack": "check-for-leaks", + "repl": "node ./script/start.js --interactive", + "start": "node ./script/start.js", + "test": "node ./script/spec-runner.js", + "tsc": "tsc", + "webpack": "webpack" + }, + "license": "MIT", + "author": "Electron Community", + "keywords": [ + "electron" + ], + "lint-staged": { + "*.{js,ts}": [ + "node script/lint.js --js --fix --only --" + ], + "*.{js,ts,d.ts}": [ + "ts-node script/gen-filenames.ts" + ], + "*.{cc,mm,c,h}": [ + "python3 script/run-clang-format.py -r -c --fix" + ], + "*.md": [ + "npm run lint:docs" + ], + "*.{gn,gni}": [ + "npm run gn-check", + "npm run gn-format" + ], + "*.py": [ + "node script/lint.js --py --fix --only --" + ], + "docs/api/**/*.md": [ + "ts-node script/gen-filenames.ts", + "markdownlint --config .markdownlint.autofix.json --fix", + "git add filenames.auto.gni" + ], + "{*.patch,.patches}": [ + "node script/lint.js --patches --only --", + "ts-node script/check-patch-diff.ts" + ], + "DEPS": [ + "node script/gen-hunspell-filenames.js", + "node script/gen-libc++-filenames.js" + ] + }, + "resolutions": { + "nan": "nodejs/nan#16fa32231e2ccd89d2804b3f765319128b20c4ac" + } +} diff --git a/devel/electron23/files/patch-BUILD.gn b/devel/electron23/files/patch-BUILD.gn new file mode 100644 index 000000000000..c00fe44550b1 --- /dev/null +++ b/devel/electron23/files/patch-BUILD.gn @@ -0,0 +1,89 @@ +--- BUILD.gn.orig 2023-02-15 13:08:45 UTC ++++ BUILD.gn +@@ -60,7 +60,7 @@ declare_args() { + root_extra_deps = [] + } + +-if (is_official_build) { ++if (is_official_build && !is_bsd) { + # An official (maximally optimized!) component (optimized for build times) + # build doesn't make sense and usually doesn't work. + assert(!is_component_build) +@@ -90,7 +90,6 @@ group("gn_all") { + "//codelabs", + "//components:components_unittests", + "//components/gwp_asan:gwp_asan_unittests", +- "//infra/orchestrator:orchestrator_all", + "//net:net_unittests", + "//sandbox:sandbox_unittests", + "//services:services_unittests", +@@ -425,7 +424,7 @@ group("gn_all") { + ] + } + +- if (is_linux || is_chromeos || is_android) { ++ if ((is_linux && !is_bsd) || is_chromeos || is_android) { + deps += [ + "//third_party/breakpad:breakpad_unittests", + "//third_party/breakpad:core-2-minidump", +@@ -624,6 +623,15 @@ group("gn_all") { + } + } + ++ if (is_bsd) { ++ deps -= [ ++ "//third_party/breakpad:dump_syms($host_toolchain)", ++ "//third_party/breakpad:microdump_stackwalk($host_toolchain)", ++ "//third_party/breakpad:minidump_dump($host_toolchain)", ++ "//third_party/breakpad:minidump_stackwalk($host_toolchain)", ++ ] ++ } ++ + if (is_mac) { + deps += [ + "//third_party/breakpad:crash_inspector", +@@ -672,7 +680,7 @@ group("gn_all") { + host_os == "win") { + deps += [ "//chrome/test/mini_installer:mini_installer_tests" ] + } +- } else if (!is_android && !is_ios && !is_fuchsia) { ++ } else if (!is_android && !is_ios && !is_fuchsia && !is_bsd) { + deps += [ "//third_party/breakpad:symupload($host_toolchain)" ] + } + +@@ -1097,7 +1105,7 @@ if (!is_ios) { + ] + } + +- if (!is_chromeos_ash && !is_ios && !is_fuchsia && !is_android && !is_castos) { ++ if (!is_chromeos_ash && !is_ios && !is_fuchsia && !is_android && !is_castos && !is_bsd) { + # WPT Webdriver tests runner + # chrome/test/chromedriver/test/run_webdriver_tests.py + script_test("webdriver_wpt_tests") { +@@ -1193,7 +1201,7 @@ if (!is_ios) { + data_deps += [ "//content/web_test:web_test_common_mojom_js_data_deps" ] + } + +- if (!is_win && !is_android) { ++ if (!is_win && !is_android && !is_bsd) { + data_deps += + [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ] + } +@@ -1202,7 +1210,7 @@ if (!is_ios) { + data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ] + } + +- if (is_linux || is_chromeos) { ++ if ((is_linux && !is_bsd) || is_chromeos) { + data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ] + } + +@@ -1667,7 +1675,7 @@ group("chromium_builder_perf") { + data_deps += [ "//chrome/test:performance_browser_tests" ] + } + +- if (!is_win) { ++ if (!is_win && !is_bsd) { + data_deps += + [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ] + } diff --git a/devel/electron23/files/patch-apps_ui_views_app__window__frame__view.cc b/devel/electron23/files/patch-apps_ui_views_app__window__frame__view.cc new file mode 100644 index 000000000000..2ac2dff2a8b1 --- /dev/null +++ b/devel/electron23/files/patch-apps_ui_views_app__window__frame__view.cc @@ -0,0 +1,11 @@ +--- apps/ui/views/app_window_frame_view.cc.orig 2022-07-22 17:30:31 UTC ++++ apps/ui/views/app_window_frame_view.cc +@@ -137,7 +137,7 @@ gfx::Rect AppWindowFrameView::GetWindowBoundsForClient + gfx::Rect window_bounds = client_bounds; + // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is + // complete. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + // Get the difference between the widget's client area bounds and window + // bounds, and grow |window_bounds| by that amount. + gfx::Insets native_frame_insets = diff --git a/devel/electron23/files/patch-ash_display_mirror__window__controller.cc b/devel/electron23/files/patch-ash_display_mirror__window__controller.cc new file mode 100644 index 000000000000..d0bcf31e3bff --- /dev/null +++ b/devel/electron23/files/patch-ash_display_mirror__window__controller.cc @@ -0,0 +1,14 @@ +--- ash/display/mirror_window_controller.cc.orig 2022-10-24 13:33:33 UTC ++++ ash/display/mirror_window_controller.cc +@@ -295,7 +295,11 @@ void MirrorWindowController::UpdateWindow( + if (!base::Contains(display_info_list, iter->first, + &display::ManagedDisplayInfo::id)) { + CloseAndDeleteHost(iter->second, true); ++#if defined(__llvm__) ++ mirroring_host_info_map_.erase(iter++); ++#else + iter = mirroring_host_info_map_.erase(iter); ++#endif + } else { + ++iter; + } diff --git a/devel/electron23/files/patch-base_BUILD.gn b/devel/electron23/files/patch-base_BUILD.gn new file mode 100644 index 000000000000..826c10f51633 --- /dev/null +++ b/devel/electron23/files/patch-base_BUILD.gn @@ -0,0 +1,163 @@ +--- base/BUILD.gn.orig 2023-02-15 13:08:45 UTC ++++ base/BUILD.gn +@@ -162,7 +162,7 @@ buildflag_header("ios_cronet_buildflags") { + flags = [ "CRONET_BUILD=$is_cronet_build" ] + } + +-enable_message_pump_epoll = is_linux || is_chromeos || is_android ++enable_message_pump_epoll = (is_linux || is_chromeos || is_android) && !is_bsd + buildflag_header("message_pump_buildflags") { + header = "message_pump_buildflags.h" + header_dir = "base/message_loop" +@@ -1052,7 +1052,7 @@ component("base") { + "timer/hi_res_timer_manager_posix.cc", + ] + +- if (!is_nacl && !is_apple) { ++ if (!is_nacl && !is_apple && !is_bsd) { + sources += [ + "profiler/stack_base_address_posix.cc", + "profiler/stack_base_address_posix.h", +@@ -1063,6 +1063,14 @@ component("base") { + "profiler/thread_delegate_posix.h", + ] + } ++ ++ if (is_bsd) { ++ sources += [ ++ "profiler/stack_base_address_posix.cc", ++ "profiler/stack_base_address_posix.h", ++ "profiler/stack_sampler_posix.cc", ++ ] ++ } + } + + if (is_win) { +@@ -1551,11 +1559,23 @@ component("base") { + # Needed for if using newer C++ library than sysroot, except if + # building inside the cros_sdk environment - use host_toolchain as a + # more robust check for this. +- if (!use_sysroot && (is_android || is_chromeos || (is_linux && !is_castos)) && ++ if (!use_sysroot && (is_android || is_chromeos || (is_linux && !is_castos && !is_bsd)) && + host_toolchain != "//build/toolchain/cros:host") { + libs += [ "atomic" ] + } + ++ # *BSD needs libkvm ++ if (is_bsd) { ++ libs += [ "kvm" ] ++ } ++ ++ if (is_freebsd) { ++ libs += [ ++ "execinfo", ++ "util", ++ ] ++ } ++ + if (use_allocator_shim) { + sources += [ + "allocator/partition_allocator/shim/allocator_shim.cc", +@@ -1583,7 +1603,7 @@ component("base") { + ] + configs += [ "//base/allocator:mac_no_default_new_delete_symbols" ] + } +- if (is_chromeos || is_linux) { ++ if (is_chromeos || (is_linux && !is_bsd)) { + sources += [ + "allocator/partition_allocator/shim/allocator_shim_override_cpp_symbols.h", + "allocator/partition_allocator/shim/allocator_shim_override_glibc_weak_symbols.h", +@@ -1624,7 +1644,7 @@ component("base") { + + # Allow more direct string conversions on platforms with native utf8 + # strings +- if (is_apple || is_chromeos || is_castos || is_cast_android || is_fuchsia) { ++ if (is_apple || is_chromeos || is_castos || is_cast_android || is_fuchsia || is_bsd) { + defines += [ "SYSTEM_NATIVE_UTF8" ] + } + +@@ -2212,6 +2232,39 @@ component("base") { + } + } + ++ if (is_bsd) { ++ sources -= [ ++ "files/file_path_watcher_inotify.cc", ++ "files/scoped_file_linux.cc", ++ "process/process_linux.cc", ++ "system/sys_info_linux.cc", ++ "process/process_iterator_linux.cc", ++ "process/process_metrics_linux.cc", ++ "process/process_handle_linux.cc" ++ ] ++ sources += [ ++ "files/file_path_watcher_kqueue.cc", ++ "files/file_path_watcher_kqueue.h", ++ "files/file_path_watcher_bsd.cc", ++ ] ++ } ++ ++ if (is_openbsd) { ++ sources += [ ++ "process/process_handle_openbsd.cc", ++ "process/process_iterator_openbsd.cc", ++ "process/process_metrics_openbsd.cc", ++ "system/sys_info_openbsd.cc", ++ ] ++ } else if (is_freebsd) { ++ sources += [ ++ "process/process_handle_freebsd.cc", ++ "process/process_iterator_freebsd.cc", ++ "process/process_metrics_freebsd.cc", ++ "system/sys_info_freebsd.cc", ++ ] ++ } ++ + # iOS + if (is_ios) { + sources -= [ +@@ -2307,7 +2360,7 @@ component("base") { + } + + if (dep_libevent) { +- deps += [ "//third_party/libevent" ] ++ public_deps += [ "//third_party/libevent" ] + } + + if (use_libevent) { +@@ -3561,7 +3614,7 @@ test("base_unittests") { + } + } + +- if (is_linux || is_chromeos) { ++ if ((is_linux || is_chromeos) && !is_bsd) { + sources += [ + "debug/proc_maps_linux_unittest.cc", + "files/scoped_file_linux_unittest.cc", +@@ -3607,7 +3660,7 @@ test("base_unittests") { + "posix/file_descriptor_shuffle_unittest.cc", + "posix/unix_domain_socket_unittest.cc", + ] +- if (!is_nacl && !is_apple) { ++ if (!is_nacl && !is_apple && !is_bsd) { + sources += [ + "profiler/stack_base_address_posix_unittest.cc", + "profiler/stack_copier_signal_unittest.cc", +@@ -3618,7 +3671,7 @@ test("base_unittests") { + + # Allow more direct string conversions on platforms with native utf8 + # strings +- if (is_apple || is_chromeos || is_castos || is_cast_android || is_fuchsia) { ++ if (is_apple || is_chromeos || is_castos || is_cast_android || is_fuchsia || is_bsd) { + defines += [ "SYSTEM_NATIVE_UTF8" ] + } + +@@ -3828,7 +3881,7 @@ test("base_unittests") { + } + } + +- if (is_fuchsia || is_linux || is_chromeos) { ++ if ((is_fuchsia || is_linux || is_chromeos) && !is_bsd) { + sources += [ + "debug/elf_reader_unittest.cc", + "debug/test_elf_image_builder.cc", diff --git a/devel/electron23/files/patch-base_allocator_dispatcher_tls.h b/devel/electron23/files/patch-base_allocator_dispatcher_tls.h new file mode 100644 index 000000000000..29e3761ec15d --- /dev/null +++ b/devel/electron23/files/patch-base_allocator_dispatcher_tls.h @@ -0,0 +1,11 @@ +--- base/allocator/dispatcher/tls.h.orig 2023-02-01 18:43:07 UTC ++++ base/allocator/dispatcher/tls.h +@@ -51,7 +51,7 @@ struct BASE_EXPORT MMapAllocator { + partition_alloc::PartitionPageSize(); + #elif BUILDFLAG(IS_APPLE) + constexpr static size_t AllocationChunkSize = 16384; +-#elif BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64) ++#elif (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64) + constexpr static size_t AllocationChunkSize = 16384; + #else + constexpr static size_t AllocationChunkSize = 4096; diff --git a/devel/electron23/files/patch-base_allocator_partition__allocator_address__space__randomization.h b/devel/electron23/files/patch-base_allocator_partition__allocator_address__space__randomization.h new file mode 100644 index 000000000000..f16c9802cfb4 --- /dev/null +++ b/devel/electron23/files/patch-base_allocator_partition__allocator_address__space__randomization.h @@ -0,0 +1,20 @@ +--- base/allocator/partition_allocator/address_space_randomization.h.orig 2022-06-17 14:20:10 UTC ++++ base/allocator/partition_allocator/address_space_randomization.h +@@ -38,7 +38,7 @@ AslrMask(uintptr_t bits) { + + #if defined(ARCH_CPU_64_BITS) + +- #if defined(MEMORY_TOOL_REPLACES_ALLOCATOR) ++ #if defined(MEMORY_TOOL_REPLACES_ALLOCATOR) && !defined(OS_BSD) + + // We shouldn't allocate system pages at all for sanitizer builds. However, + // we do, and if random hint addresses interfere with address ranges +@@ -128,7 +128,7 @@ AslrMask(uintptr_t bits) { + return AslrAddress(0x20000000ULL); + } + +- #elif BUILDFLAG(IS_LINUX) ++ #elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + + // Linux on arm64 can use 39, 42, 48, or 52-bit user space, depending on + // page size and number of levels of translation pages used. We use diff --git a/devel/electron23/files/patch-base_allocator_partition__allocator_page__allocator.h b/devel/electron23/files/patch-base_allocator_partition__allocator_page__allocator.h new file mode 100644 index 000000000000..e67310662bc4 --- /dev/null +++ b/devel/electron23/files/patch-base_allocator_partition__allocator_page__allocator.h @@ -0,0 +1,11 @@ +--- base/allocator/partition_allocator/page_allocator.h.orig 2022-11-30 08:12:58 UTC ++++ base/allocator/partition_allocator/page_allocator.h +@@ -231,7 +231,7 @@ void DecommitAndZeroSystemPages(void* address, size_t + // recommitted. Do not assume that this will not change over time. + constexpr PA_COMPONENT_EXPORT( + PARTITION_ALLOC) bool DecommittedMemoryIsAlwaysZeroed() { +-#if BUILDFLAG(IS_APPLE) ++#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD) + return false; + #else + return true; diff --git a/devel/electron23/files/patch-base_allocator_partition__allocator_page__allocator__constants.h b/devel/electron23/files/patch-base_allocator_partition__allocator_page__allocator__constants.h new file mode 100644 index 000000000000..39bacb518604 --- /dev/null +++ b/devel/electron23/files/patch-base_allocator_partition__allocator_page__allocator__constants.h @@ -0,0 +1,38 @@ +--- base/allocator/partition_allocator/page_allocator_constants.h.orig 2022-09-24 10:57:32 UTC ++++ base/allocator/partition_allocator/page_allocator_constants.h +@@ -25,7 +25,7 @@ + // elimination. + #define PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR __attribute__((const)) + +-#elif BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64) ++#elif (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64) + // This should work for all POSIX (if needed), but currently all other + // supported OS/architecture combinations use either hard-coded values + // (such as x86) or have means to determine these values without needing +@@ -81,7 +81,7 @@ PageAllocationGranularityShift() { + return 14; // 16kB + #elif BUILDFLAG(IS_APPLE) && defined(ARCH_CPU_64_BITS) + return static_cast(vm_page_shift); +-#elif BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64) ++#elif (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64) + // arm64 supports 4kb (shift = 12), 16kb (shift = 14), and 64kb (shift = 16) + // page sizes. Retrieve from or initialize cache. + size_t shift = page_characteristics.shift.load(std::memory_order_relaxed); +@@ -102,7 +102,7 @@ PageAllocationGranularity() { + // This is literally equivalent to |1 << PageAllocationGranularityShift()| + // below, but was separated out for IS_APPLE to avoid << on a non-constexpr. + return vm_page_size; +-#elif BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64) ++#elif (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64) + // arm64 supports 4kb, 16kb, and 64kb page sizes. Retrieve from or + // initialize cache. + size_t size = page_characteristics.size.load(std::memory_order_relaxed); +@@ -141,7 +141,7 @@ SystemPageShift() { + PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR PA_ALWAYS_INLINE size_t + SystemPageSize() { + #if (BUILDFLAG(IS_APPLE) && defined(ARCH_CPU_64_BITS)) || \ +- (BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64)) ++ ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64)) + // This is literally equivalent to |1 << SystemPageShift()| below, but was + // separated out for 64-bit IS_APPLE and arm64 on Linux to avoid << on a + // non-constexpr. diff --git a/devel/electron23/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h b/devel/electron23/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h new file mode 100644 index 000000000000..ddee9fc05ae0 --- /dev/null +++ b/devel/electron23/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h @@ -0,0 +1,16 @@ +--- base/allocator/partition_allocator/page_allocator_internals_posix.h.orig 2023-02-01 18:43:07 UTC ++++ base/allocator/partition_allocator/page_allocator_internals_posix.h +@@ -371,8 +371,12 @@ bool TryRecommitSystemPagesInternal( + void DiscardSystemPagesInternal(uintptr_t address, size_t length) { + #if !BUILDFLAG(IS_NACL) + void* ptr = reinterpret_cast(address); +-#if BUILDFLAG(IS_APPLE) ++#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD) ++#if BUILDFLAG(IS_BSD) ++ int ret = madvise(ptr, length, MADV_FREE); ++#else + int ret = madvise(ptr, length, MADV_FREE_REUSABLE); ++#endif + if (ret) { + // MADV_FREE_REUSABLE sometimes fails, so fall back to MADV_DONTNEED. + ret = madvise(ptr, length, MADV_DONTNEED); diff --git a/devel/electron23/files/patch-base_allocator_partition__allocator_partition__address__space.cc b/devel/electron23/files/patch-base_allocator_partition__allocator_partition__address__space.cc new file mode 100644 index 000000000000..d7fd329b2eb0 --- /dev/null +++ b/devel/electron23/files/patch-base_allocator_partition__allocator_partition__address__space.cc @@ -0,0 +1,11 @@ +--- base/allocator/partition_allocator/partition_address_space.cc.orig 2023-02-01 18:43:07 UTC ++++ base/allocator/partition_allocator/partition_address_space.cc +@@ -440,7 +440,7 @@ void PartitionAddressSpace::UninitPkeyPoolForTesting() + } + #endif + +-#if BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64) ++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64) + + PageCharacteristics page_characteristics; + diff --git a/devel/electron23/files/patch-base_allocator_partition__allocator_partition__alloc.gni b/devel/electron23/files/patch-base_allocator_partition__allocator_partition__alloc.gni new file mode 100644 index 000000000000..d8c1a086161f --- /dev/null +++ b/devel/electron23/files/patch-base_allocator_partition__allocator_partition__alloc.gni @@ -0,0 +1,11 @@ +--- base/allocator/partition_allocator/partition_alloc.gni.orig 2023-02-01 18:43:07 UTC ++++ base/allocator/partition_allocator/partition_alloc.gni +@@ -200,7 +200,7 @@ assert(!use_asan_unowned_ptr || is_asan, + "AsanUnownedPtr requires AddressSanitizer") + + declare_args() { +- enable_pkeys = is_linux && target_cpu == "x64" ++ enable_pkeys = (is_linux && !is_bsd) && target_cpu == "x64" + } + assert(!enable_pkeys || (is_linux && target_cpu == "x64"), + "Pkeys are only supported on x64 linux") diff --git a/devel/electron23/files/patch-base_allocator_partition__allocator_partition__alloc__base_rand__util__posix.cc b/devel/electron23/files/patch-base_allocator_partition__allocator_partition__alloc__base_rand__util__posix.cc new file mode 100644 index 000000000000..5b35ab100616 --- /dev/null +++ b/devel/electron23/files/patch-base_allocator_partition__allocator_partition__alloc__base_rand__util__posix.cc @@ -0,0 +1,13 @@ +--- base/allocator/partition_allocator/partition_alloc_base/rand_util_posix.cc.orig 2022-07-22 17:30:31 UTC ++++ base/allocator/partition_allocator/partition_alloc_base/rand_util_posix.cc +@@ -86,6 +86,10 @@ void RandBytes(void* output, size_t output_length) { + if (getentropy(output, output_length) == 0) { + return; + } ++#elif BUILDFLAG(IS_BSD) ++ if (getentropy(output, output_length) == 0) { ++ return; ++ } + #endif + + // If the OS-specific mechanisms didn't work, fall through to reading from diff --git a/devel/electron23/files/patch-base_allocator_partition__allocator_partition__alloc__base_threading_platform__thread__internal__posix.h b/devel/electron23/files/patch-base_allocator_partition__allocator_partition__alloc__base_threading_platform__thread__internal__posix.h new file mode 100644 index 000000000000..dfe57178caab --- /dev/null +++ b/devel/electron23/files/patch-base_allocator_partition__allocator_partition__alloc__base_threading_platform__thread__internal__posix.h @@ -0,0 +1,11 @@ +--- base/allocator/partition_allocator/partition_alloc_base/threading/platform_thread_internal_posix.h.orig 2022-07-22 17:30:31 UTC ++++ base/allocator/partition_allocator/partition_alloc_base/threading/platform_thread_internal_posix.h +@@ -10,7 +10,7 @@ + + namespace partition_alloc::internal::base::internal { + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Current thread id is cached in thread local storage for performance reasons. + // In some rare cases it's important to invalidate that cache explicitly (e.g. + // after going through clone() syscall which does not call pthread_atfork() diff --git a/devel/electron23/files/patch-base_allocator_partition__allocator_partition__alloc__base_threading_platform__thread__posix.cc b/devel/electron23/files/patch-base_allocator_partition__allocator_partition__alloc__base_threading_platform__thread__posix.cc new file mode 100644 index 000000000000..16c4bd4b3273 --- /dev/null +++ b/devel/electron23/files/patch-base_allocator_partition__allocator_partition__alloc__base_threading_platform__thread__posix.cc @@ -0,0 +1,11 @@ +--- base/allocator/partition_allocator/partition_alloc_base/threading/platform_thread_posix.cc.orig 2022-07-22 17:30:31 UTC ++++ base/allocator/partition_allocator/partition_alloc_base/threading/platform_thread_posix.cc +@@ -17,7 +17,7 @@ + #include "base/allocator/partition_allocator/partition_alloc_base/threading/platform_thread_internal_posix.h" + #include "build/build_config.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include + #include + #endif diff --git a/devel/electron23/files/patch-base_allocator_partition__allocator_partition__alloc__config.h b/devel/electron23/files/patch-base_allocator_partition__allocator_partition__alloc__config.h new file mode 100644 index 000000000000..a674951ddbdc --- /dev/null +++ b/devel/electron23/files/patch-base_allocator_partition__allocator_partition__alloc__config.h @@ -0,0 +1,29 @@ +--- base/allocator/partition_allocator/partition_alloc_config.h.orig 2023-02-01 18:43:07 UTC ++++ base/allocator/partition_allocator/partition_alloc_config.h +@@ -84,7 +84,7 @@ static_assert(sizeof(void*) != 8, ""); + + // POSIX is not only UNIX, e.g. macOS and other OSes. We do use Linux-specific + // features such as futex(2). +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + #define PA_HAS_LINUX_KERNEL + #endif + +@@ -220,7 +220,7 @@ constexpr bool kUseLazyCommit = false; + + // On these platforms, lock all the partitions before fork(), and unlock after. + // This may be required on more platforms in the future. +-#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #define PA_HAS_ATFORK_HANDLER + #endif + +@@ -264,7 +264,7 @@ constexpr bool kUseLazyCommit = false; + // + // Also enabled on ARM64 macOS, as the 16kiB pages on this platform lead to + // larger slot spans. +-#if BUILDFLAG(IS_LINUX) || (BUILDFLAG(IS_MAC) && defined(ARCH_CPU_ARM64)) ++#if BUILDFLAG(IS_LINUX) || (BUILDFLAG(IS_MAC) && defined(ARCH_CPU_ARM64)) || BUILDFLAG(IS_BSD) + #define PA_PREFER_SMALLER_SLOT_SPANS + #endif + diff --git a/devel/electron23/files/patch-base_allocator_partition__allocator_partition__alloc__constants.h b/devel/electron23/files/patch-base_allocator_partition__allocator_partition__alloc__constants.h new file mode 100644 index 000000000000..1f1ec5115ff1 --- /dev/null +++ b/devel/electron23/files/patch-base_allocator_partition__allocator_partition__alloc__constants.h @@ -0,0 +1,20 @@ +--- base/allocator/partition_allocator/partition_alloc_constants.h.orig 2023-02-01 18:43:07 UTC ++++ base/allocator/partition_allocator/partition_alloc_constants.h +@@ -91,7 +91,7 @@ PartitionPageShift() { + return 18; // 256 KiB + } + #elif (BUILDFLAG(IS_APPLE) && defined(ARCH_CPU_64_BITS)) || \ +- (BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64)) ++ ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64)) + PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR PA_ALWAYS_INLINE size_t + PartitionPageShift() { + return PageAllocationGranularityShift() + 2; +@@ -278,7 +278,7 @@ constexpr size_t kNumPools = 3; + // When pointer compression is enabled, we cannot use large pools (at most + // 8GB for each of the glued pools). + #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS) || \ +- defined(PA_POINTER_COMPRESSION) ++ defined(PA_POINTER_COMPRESSION) || BUILDFLAG(IS_BSD) + constexpr size_t kPoolMaxSize = 8 * kGiB; + #else + constexpr size_t kPoolMaxSize = 16 * kGiB; diff --git a/devel/electron23/files/patch-base_allocator_partition__allocator_partition__alloc__forward.h b/devel/electron23/files/patch-base_allocator_partition__allocator_partition__alloc__forward.h new file mode 100644 index 000000000000..fbaa149594dc --- /dev/null +++ b/devel/electron23/files/patch-base_allocator_partition__allocator_partition__alloc__forward.h @@ -0,0 +1,16 @@ +--- base/allocator/partition_allocator/partition_alloc_forward.h.orig 2022-11-06 16:08:29 UTC ++++ base/allocator/partition_allocator/partition_alloc_forward.h +@@ -25,9 +25,13 @@ namespace internal { + // the second one 16. We could technically return something different for + // malloc() and operator new(), but this would complicate things, and most of + // our allocations are presumably coming from operator new() anyway. ++#if defined(__i386__) && defined(OS_FREEBSD) ++constexpr size_t kAlignment = 8; ++#else + constexpr size_t kAlignment = + std::max(alignof(max_align_t), + static_cast(__STDCPP_DEFAULT_NEW_ALIGNMENT__)); ++#endif + static_assert(kAlignment <= 16, + "PartitionAlloc doesn't support a fundamental alignment larger " + "than 16 bytes."); diff --git a/devel/electron23/files/patch-base_allocator_partition__allocator_partition__page.h b/devel/electron23/files/patch-base_allocator_partition__allocator_partition__page.h new file mode 100644 index 000000000000..50f1d2c871f2 --- /dev/null +++ b/devel/electron23/files/patch-base_allocator_partition__allocator_partition__page.h @@ -0,0 +1,11 @@ +--- base/allocator/partition_allocator/partition_page.h.orig 2023-02-01 18:43:07 UTC ++++ base/allocator/partition_allocator/partition_page.h +@@ -144,7 +144,7 @@ struct SlotSpanMetadata { + // PartitionPageSize() is 4 times the OS page size. + static constexpr size_t kMaxSlotsPerSlotSpan = + 4 * (1 << 14) / kSmallestBucket; +-#elif BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64) ++#elif (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64) + // System page size can be 4, 16, or 64 kiB on Linux on arm64. 64 kiB is + // currently (kMaxSlotsPerSlotSpanBits == 13) not supported by the code, + // so we use the 16 kiB maximum (64 kiB will crash). diff --git a/devel/electron23/files/patch-base_allocator_partition__allocator_partition__root.cc b/devel/electron23/files/patch-base_allocator_partition__allocator_partition__root.cc new file mode 100644 index 000000000000..1eff1830855f --- /dev/null +++ b/devel/electron23/files/patch-base_allocator_partition__allocator_partition__root.cc @@ -0,0 +1,38 @@ +--- base/allocator/partition_allocator/partition_root.cc.orig 2023-02-01 18:43:07 UTC ++++ base/allocator/partition_allocator/partition_root.cc +@@ -42,7 +42,7 @@ + #include "wow64apiset.h" + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include + #endif + +@@ -239,7 +239,7 @@ void PartitionAllocMallocInitOnce() { + if (!g_global_init_called.compare_exchange_strong(expected, true)) + return; + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // When fork() is called, only the current thread continues to execute in the + // child process. If the lock is held, but *not* by this thread when fork() is + // called, we have a deadlock. +@@ -332,7 +332,7 @@ static size_t PartitionPurgeSlotSpan( + constexpr size_t kMaxSlotCount = + (PartitionPageSize() * kMaxPartitionPagesPerRegularSlotSpan) / + MinPurgeableSlotSize(); +-#elif BUILDFLAG(IS_APPLE) || (BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64)) ++#elif BUILDFLAG(IS_APPLE) || ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64)) + // It's better for slot_usage to be stack-allocated and fixed-size, which + // demands that its size be constexpr. On IS_APPLE and Linux on arm64, + // PartitionPageSize() is always SystemPageSize() << 2, so regardless of +@@ -789,7 +789,7 @@ void PartitionRoot::Init(PartitionOptions + // apple OSes. + PA_CHECK((internal::SystemPageSize() == (size_t{1} << 12)) || + (internal::SystemPageSize() == (size_t{1} << 14))); +-#elif BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64) ++#elif (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && defined(ARCH_CPU_ARM64) + // Check runtime pagesize. Though the code is currently the same, it is + // not merged with the IS_APPLE case above as a 1 << 16 case needs to be + // added here in the future, to allow 64 kiB pagesize. That is only diff --git a/devel/electron23/files/patch-base_allocator_partition__allocator_spinning__mutex.cc b/devel/electron23/files/patch-base_allocator_partition__allocator_spinning__mutex.cc new file mode 100644 index 000000000000..4d89110c7401 --- /dev/null +++ b/devel/electron23/files/patch-base_allocator_partition__allocator_spinning__mutex.cc @@ -0,0 +1,47 @@ +--- base/allocator/partition_allocator/spinning_mutex.cc.orig 2022-07-22 17:30:31 UTC ++++ base/allocator/partition_allocator/spinning_mutex.cc +@@ -18,7 +18,15 @@ + + #if defined(PA_HAS_LINUX_KERNEL) + #include ++#if defined(OS_OPENBSD) ++#include ++#elif defined(OS_FREEBSD) ++#include ++#include ++#include ++#else + #include ++#endif + #include + #include + #endif // defined(PA_HAS_LINUX_KERNEL) +@@ -107,8 +115,13 @@ void SpinningMutex::FutexWait() { + // |kLockedContended| anymore. Note that even without spurious wakeups, the + // value of |state_| is not guaranteed when this returns, as another thread + // may get the lock before we get to run. ++#if defined(OS_FREEBSD) ++ int err = _umtx_op(&state_, UMTX_OP_WAIT_UINT_PRIVATE, ++ kLockedContended, nullptr, nullptr); ++#else + int err = syscall(SYS_futex, &state_, FUTEX_WAIT | FUTEX_PRIVATE_FLAG, + kLockedContended, nullptr, nullptr, 0); ++#endif + + if (err) { + // These are programming error, check them. +@@ -120,8 +133,14 @@ void SpinningMutex::FutexWait() { + + void SpinningMutex::FutexWake() { + int saved_errno = errno; ++#if defined(OS_FREEBSD) ++ long retval = _umtx_op(&state_, UMTX_OP_WAKE_PRIVATE, ++ 1 /* wake up a single waiter */, nullptr, nullptr); ++#else + long retval = syscall(SYS_futex, &state_, FUTEX_WAKE | FUTEX_PRIVATE_FLAG, + 1 /* wake up a single waiter */, nullptr, nullptr, 0); ++#endif ++ + PA_CHECK(retval != -1); + errno = saved_errno; + } diff --git a/devel/electron23/files/patch-base_allocator_partition__allocator_starscan_stack_stack.cc b/devel/electron23/files/patch-base_allocator_partition__allocator_starscan_stack_stack.cc new file mode 100644 index 000000000000..33a9abe63075 --- /dev/null +++ b/devel/electron23/files/patch-base_allocator_partition__allocator_starscan_stack_stack.cc @@ -0,0 +1,50 @@ +--- base/allocator/partition_allocator/starscan/stack/stack.cc.orig 2022-05-19 14:06:27 UTC ++++ base/allocator/partition_allocator/starscan/stack/stack.cc +@@ -17,6 +17,10 @@ + #include + #endif + ++#if defined(OS_BSD) ++#include ++#endif ++ + #if defined(LIBC_GLIBC) + extern "C" void* __libc_stack_end; + #endif +@@ -47,6 +51,36 @@ void* GetStackTop() { + + void* GetStackTop() { + return pthread_get_stackaddr_np(pthread_self()); ++} ++ ++#elif defined(OS_OPENBSD) ++ ++void* GetStackTop() { ++ stack_t ss; ++ if (pthread_stackseg_np(pthread_self(), &ss) != 0) ++ return nullptr; ++ return reinterpret_cast(ss.ss_sp); ++} ++ ++#elif defined(OS_FREEBSD) ++ ++void* GetStackTop() { ++ pthread_attr_t attr; ++ int error = pthread_attr_init(&attr); ++ if (error) { ++ return nullptr; ++ } ++ error = pthread_attr_get_np(pthread_self(), &attr); ++ if (!error) { ++ void* base; ++ size_t size; ++ error = pthread_attr_getstack(&attr, &base, &size); ++ PA_CHECK(!error); ++ pthread_attr_destroy(&attr); ++ return reinterpret_cast(base) + size; ++ } ++ pthread_attr_destroy(&attr); ++ return nullptr; + } + + #elif BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA) diff --git a/devel/electron23/files/patch-base_atomicops.h b/devel/electron23/files/patch-base_atomicops.h new file mode 100644 index 000000000000..2f8478b40e8d --- /dev/null +++ b/devel/electron23/files/patch-base_atomicops.h @@ -0,0 +1,14 @@ +--- base/atomicops.h.orig 2022-05-19 14:06:27 UTC ++++ base/atomicops.h +@@ -56,7 +56,11 @@ typedef intptr_t Atomic64; + + // Use AtomicWord for a machine-sized pointer. It will use the Atomic32 or + // Atomic64 routines below, depending on your architecture. ++#if !defined(OS_OPENBSD) && defined(__i386__) ++typedef Atomic32 AtomicWord; ++#else + typedef intptr_t AtomicWord; ++#endif + + // Atomically execute: + // result = *ptr; diff --git a/devel/electron23/files/patch-base_base__paths__posix.cc b/devel/electron23/files/patch-base_base__paths__posix.cc new file mode 100644 index 000000000000..9b6827056e06 --- /dev/null +++ b/devel/electron23/files/patch-base_base__paths__posix.cc @@ -0,0 +1,98 @@ +--- base/base_paths_posix.cc.orig 2022-02-28 16:54:41 UTC ++++ base/base_paths_posix.cc +@@ -15,6 +15,7 @@ + #include + #include + ++#include "base/command_line.h" + #include "base/environment.h" + #include "base/files/file_path.h" + #include "base/files/file_util.h" +@@ -25,9 +26,13 @@ + #include "base/process/process_metrics.h" + #include "build/build_config.h" + +-#if BUILDFLAG(IS_FREEBSD) ++#if BUILDFLAG(IS_BSD) + #include + #include ++#if BUILDFLAG(IS_OPENBSD) ++#include ++#define MAXTOKENS 2 ++#endif + #elif BUILDFLAG(IS_SOLARIS) || BUILDFLAG(IS_AIX) + #include + #endif +@@ -68,13 +73,65 @@ bool PathProviderPosix(int key, FilePath* result) { + *result = FilePath(bin_dir); + return true; + #elif BUILDFLAG(IS_OPENBSD) || BUILDFLAG(IS_AIX) +- // There is currently no way to get the executable path on OpenBSD +- char* cpath; +- if ((cpath = getenv("CHROME_EXE_PATH")) != NULL) +- *result = FilePath(cpath); +- else +- *result = FilePath("/usr/local/chrome/chrome"); +- return true; ++ char *cpath; ++#if !BUILDFLAG(IS_AIX) ++ struct kinfo_file *files; ++ kvm_t *kd = NULL; ++ char errbuf[_POSIX2_LINE_MAX]; ++ static char retval[PATH_MAX]; ++ int cnt; ++ struct stat sb; ++ pid_t cpid = getpid(); ++ bool ret = false; ++ ++ const base::CommandLine* command_line = ++ base::CommandLine::ForCurrentProcess(); ++ ++ VLOG(1) << "PathProviderPosix argv: " << command_line->argv()[0]; ++ ++ if (realpath(command_line->argv()[0].c_str(), retval) == NULL) ++ goto out; ++ ++ if (stat(command_line->argv()[0].c_str(), &sb) < 0) ++ goto out; ++ ++ if (!command_line->HasSwitch("no-sandbox")) { ++ ret = true; ++ *result = FilePath(retval); ++ VLOG(1) << "PathProviderPosix (sandbox) result: " << retval; ++ goto out; ++ } ++ ++ if ((kd = kvm_openfiles(NULL, NULL, NULL, KVM_NO_FILES, errbuf)) == NULL) ++ goto out; ++ ++ if ((files = kvm_getfiles(kd, KERN_FILE_BYPID, cpid, ++ sizeof(struct kinfo_file), &cnt)) == NULL) ++ goto out; ++ ++ for (int i = 0; i < cnt; i++) { ++ if (files[i].fd_fd == KERN_FILE_TEXT && ++ files[i].va_fsid == static_cast(sb.st_dev) && ++ files[i].va_fileid == sb.st_ino) { ++ ret = true; ++ *result = FilePath(retval); ++ VLOG(1) << "PathProviderPosix result: " << retval; ++ } ++ } ++out: ++ if (kd) ++ kvm_close(kd); ++ if (!ret) { ++#endif ++ if ((cpath = getenv("CHROME_EXE_PATH")) != NULL) ++ *result = FilePath(cpath); ++ else ++ *result = FilePath("/usr/local/chrome/chrome"); ++ return true; ++#if !BUILDFLAG(IS_AIX) ++ } ++ return ret; ++#endif + #endif + } + case DIR_SRC_TEST_DATA_ROOT: { diff --git a/devel/electron23/files/patch-base_base__switches.cc b/devel/electron23/files/patch-base_base__switches.cc new file mode 100644 index 000000000000..8e449113ec69 --- /dev/null +++ b/devel/electron23/files/patch-base_base__switches.cc @@ -0,0 +1,11 @@ +--- base/base_switches.cc.orig 2022-08-31 12:19:35 UTC ++++ base/base_switches.cc +@@ -170,7 +170,7 @@ const char kForceFieldTrialParams[] = "force-fieldtria + + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // TODO(crbug.com/1176772): Remove kEnableCrashpad and IsCrashpadEnabled() when + // Crashpad is fully enabled on Linux. Indicates that Crashpad should be + // enabled. diff --git a/devel/electron23/files/patch-base_base__switches.h b/devel/electron23/files/patch-base_base__switches.h new file mode 100644 index 000000000000..a2effa2e495d --- /dev/null +++ b/devel/electron23/files/patch-base_base__switches.h @@ -0,0 +1,11 @@ +--- base/base_switches.h.orig 2022-08-31 12:19:35 UTC ++++ base/base_switches.h +@@ -60,7 +60,7 @@ extern const char kEnableIdleTracing[]; + extern const char kForceFieldTrialParams[]; + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // TODO(crbug.com/1176772): Remove kEnableCrashpad and IsCrashpadEnabled() when + // Crashpad is fully enabled on Linux. + extern const char kEnableCrashpad[]; diff --git a/devel/electron23/files/patch-base_debug_debugger__posix.cc b/devel/electron23/files/patch-base_debug_debugger__posix.cc new file mode 100644 index 000000000000..447811370c92 --- /dev/null +++ b/devel/electron23/files/patch-base_debug_debugger__posix.cc @@ -0,0 +1,68 @@ +--- base/debug/debugger_posix.cc.orig 2022-04-21 18:48:31 UTC ++++ base/debug/debugger_posix.cc +@@ -35,6 +35,10 @@ + #include + #endif + ++#if BUILDFLAG(IS_OPENBSD) ++#include ++#endif ++ + #if BUILDFLAG(IS_FREEBSD) + #include + #endif +@@ -95,32 +99,51 @@ bool BeingDebugged() { + + // Caution: struct kinfo_proc is marked __APPLE_API_UNSTABLE. The source and + // binary interfaces may change. ++#if BUILDFLAG(IS_OPENBSD) ++ struct kinfo_proc *info; ++ size_t info_size; ++#else + struct kinfo_proc info; + size_t info_size = sizeof(info); ++#endif + + #if BUILDFLAG(IS_OPENBSD) + if (sysctl(mib, std::size(mib), NULL, &info_size, NULL, 0) < 0) + return -1; + + mib[5] = (info_size / sizeof(struct kinfo_proc)); ++ if ((info = reinterpret_cast(malloc(info_size))) == NULL) { ++ is_set = true; ++ being_debugged = false; ++ return being_debugged; ++ } ++ ++ int sysctl_result = sysctl(mib, std::size(mib), info, &info_size, NULL, 0); + #endif + ++#if !BUILDFLAG(IS_OPENBSD) + int sysctl_result = sysctl(mib, std::size(mib), &info, &info_size, NULL, 0); ++#endif + DCHECK_EQ(sysctl_result, 0); + if (sysctl_result != 0) { + is_set = true; + being_debugged = false; +- return being_debugged; ++ goto out; + } + + // This process is being debugged if the P_TRACED flag is set. + is_set = true; + #if BUILDFLAG(IS_FREEBSD) + being_debugged = (info.ki_flag & P_TRACED) != 0; +-#elif BUILDFLAG(IS_BSD) +- being_debugged = (info.p_flag & P_TRACED) != 0; ++#elif BUILDFLAG(IS_OPENBSD) ++ being_debugged = (info->p_psflags & PS_TRACED) != 0; + #else + being_debugged = (info.kp_proc.p_flag & P_TRACED) != 0; ++#endif ++ ++out: ++#if BUILDFLAG(IS_OPENBSD) ++ free(info); + #endif + return being_debugged; + } diff --git a/devel/electron23/files/patch-base_debug_elf__reader.cc b/devel/electron23/files/patch-base_debug_elf__reader.cc new file mode 100644 index 000000000000..d64763186791 --- /dev/null +++ b/devel/electron23/files/patch-base_debug_elf__reader.cc @@ -0,0 +1,18 @@ +--- base/debug/elf_reader.cc.orig 2022-08-31 12:19:35 UTC ++++ base/debug/elf_reader.cc +@@ -78,6 +78,7 @@ size_t ReadElfBuildId(const void* elf_mapped_base, + bool found = false; + while (current_section < section_end) { + current_note = reinterpret_cast(current_section); ++#if !defined(OS_BSD) + if (current_note->n_type == NT_GNU_BUILD_ID) { + StringPiece note_name(current_section + sizeof(Nhdr), + current_note->n_namesz); +@@ -87,6 +88,7 @@ size_t ReadElfBuildId(const void* elf_mapped_base, + break; + } + } ++#endif + + size_t section_size = bits::AlignUp(current_note->n_namesz, 4u) + + bits::AlignUp(current_note->n_descsz, 4u) + diff --git a/devel/electron23/files/patch-base_debug_proc__maps__linux.cc b/devel/electron23/files/patch-base_debug_proc__maps__linux.cc new file mode 100644 index 000000000000..4ed7cb701ed6 --- /dev/null +++ b/devel/electron23/files/patch-base_debug_proc__maps__linux.cc @@ -0,0 +1,11 @@ +--- base/debug/proc_maps_linux.cc.orig 2022-02-28 16:54:41 UTC ++++ base/debug/proc_maps_linux.cc +@@ -13,7 +13,7 @@ + #include "base/strings/string_split.h" + #include "build/build_config.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + #include + #endif + diff --git a/devel/electron23/files/patch-base_debug_stack__trace__posix.cc b/devel/electron23/files/patch-base_debug_stack__trace__posix.cc new file mode 100644 index 000000000000..866c64683b49 --- /dev/null +++ b/devel/electron23/files/patch-base_debug_stack__trace__posix.cc @@ -0,0 +1,38 @@ +--- base/debug/stack_trace_posix.cc.orig 2023-02-01 18:43:07 UTC ++++ base/debug/stack_trace_posix.cc +@@ -39,7 +39,7 @@ + #include + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "base/debug/proc_maps_linux.h" + #endif + +@@ -714,6 +714,9 @@ class SandboxSymbolizeHelper { + // for the modules that are loaded in the current process. + // Returns true on success. + bool CacheMemoryRegions() { ++#if BUILDFLAG(IS_BSD) ++ return false; ++#else + // Reads /proc/self/maps. + std::string contents; + if (!ReadProcMaps(&contents)) { +@@ -731,6 +734,7 @@ class SandboxSymbolizeHelper { + + is_initialized_ = true; + return true; ++#endif + } + + // Opens all object files and caches their file descriptors. +@@ -887,7 +891,7 @@ size_t CollectStackTrace(void** trace, size_t count) { + // If we do not have unwind tables, then try tracing using frame pointers. + return base::debug::TraceStackFramePointers(const_cast(trace), + count, 0); +-#elif !defined(__UCLIBC__) && !defined(_AIX) ++#elif !defined(__UCLIBC__) && !defined(_AIX) && !BUILDFLAG(IS_BSD) + // Though the backtrace API man page does not list any possible negative + // return values, we take no chance. + return base::saturated_cast( diff --git a/devel/electron23/files/patch-base_files_dir__reader__linux.h b/devel/electron23/files/patch-base_files_dir__reader__linux.h new file mode 100644 index 000000000000..91bc1897532e --- /dev/null +++ b/devel/electron23/files/patch-base_files_dir__reader__linux.h @@ -0,0 +1,39 @@ +--- base/files/dir_reader_linux.h.orig 2022-08-31 12:19:35 UTC ++++ base/files/dir_reader_linux.h +@@ -16,10 +16,16 @@ + #include "base/logging.h" + #include "base/posix/eintr_wrapper.h" + ++#include "build/build_config.h" ++ + // See the comments in dir_reader_posix.h about this. + + namespace base { + ++#if BUILDFLAG(IS_BSD) ++#include ++typedef struct dirent linux_dirent; ++#else + struct linux_dirent { + uint64_t d_ino; + int64_t d_off; +@@ -27,6 +33,7 @@ struct linux_dirent { + unsigned char d_type; + char d_name[0]; + }; ++#endif + + class DirReaderLinux { + public: +@@ -61,7 +68,11 @@ class DirReaderLinux { + if (offset_ != size_) + return true; + ++#if BUILDFLAG(IS_BSD) ++ const int r = getdents(fd_, reinterpret_cast(buf_), sizeof(buf_)); ++#else + const long r = syscall(__NR_getdents64, fd_, buf_, sizeof(buf_)); ++#endif + if (r == 0) + return false; + if (r < 0) { diff --git a/devel/electron23/files/patch-base_files_dir__reader__posix.h b/devel/electron23/files/patch-base_files_dir__reader__posix.h new file mode 100644 index 000000000000..2285fb726f8e --- /dev/null +++ b/devel/electron23/files/patch-base_files_dir__reader__posix.h @@ -0,0 +1,20 @@ +--- base/files/dir_reader_posix.h.orig 2022-06-17 14:20:10 UTC ++++ base/files/dir_reader_posix.h +@@ -17,7 +17,7 @@ + // seems worse than falling back to enumerating all file descriptors so we will + // probably never implement this on the Mac. + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + #include "base/files/dir_reader_linux.h" + #else + #include "base/files/dir_reader_fallback.h" +@@ -25,7 +25,7 @@ + + namespace base { + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + typedef DirReaderLinux DirReaderPosix; + #else + typedef DirReaderFallback DirReaderPosix; diff --git a/devel/electron23/files/patch-base_files_file__path__watcher.h b/devel/electron23/files/patch-base_files_file__path__watcher.h new file mode 100644 index 000000000000..51a909087f0a --- /dev/null +++ b/devel/electron23/files/patch-base_files_file__path__watcher.h @@ -0,0 +1,11 @@ +--- base/files/file_path_watcher.h.orig 2023-02-01 18:43:07 UTC ++++ base/files/file_path_watcher.h +@@ -59,7 +59,7 @@ class BASE_EXPORT FilePathWatcher { + Type type = Type::kNonRecursive; + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + // The callback will return the full path to a changed file instead of + // the watched path supplied as |path| when Watch is called. + // So the full path can be different from the watched path when a folder is diff --git a/devel/electron23/files/patch-base_files_file__path__watcher__bsd.cc b/devel/electron23/files/patch-base_files_file__path__watcher__bsd.cc new file mode 100644 index 000000000000..5bac3095f9f0 --- /dev/null +++ b/devel/electron23/files/patch-base_files_file__path__watcher__bsd.cc @@ -0,0 +1,57 @@ +--- base/files/file_path_watcher_bsd.cc.orig 2022-10-24 13:33:33 UTC ++++ base/files/file_path_watcher_bsd.cc +@@ -0,0 +1,54 @@ ++// Copyright 2021 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include ++ ++#include "base/files/file_path_watcher.h" ++#include "base/files/file_path_watcher_kqueue.h" ++#include "base/memory/ptr_util.h" ++#include "build/build_config.h" ++ ++namespace base { ++ ++namespace { ++ ++class FilePathWatcherImpl : public FilePathWatcher::PlatformDelegate { ++ public: ++ FilePathWatcherImpl() = default; ++ FilePathWatcherImpl(const FilePathWatcherImpl&) = delete; ++ FilePathWatcherImpl& operator=(const FilePathWatcherImpl&) = delete; ++ ~FilePathWatcherImpl() override = default; ++ ++ bool Watch(const FilePath& path, ++ Type type, ++ const FilePathWatcher::Callback& callback) override { ++ DCHECK(!impl_.get()); ++ if (type == Type::kRecursive) { ++ if (!FilePathWatcher::RecursiveWatchAvailable()) ++ return false; ++ } else { ++ impl_ = std::make_unique(); ++ } ++ DCHECK(impl_.get()); ++ return impl_->Watch(path, type, callback); ++ } ++ ++ void Cancel() override { ++ if (impl_.get()) ++ impl_->Cancel(); ++ set_cancelled(); ++ } ++ ++ private: ++ std::unique_ptr impl_; ++}; ++ ++} // namespace ++ ++FilePathWatcher::FilePathWatcher() { ++ DETACH_FROM_SEQUENCE(sequence_checker_); ++ impl_ = std::make_unique(); ++} ++ ++} // namespace base diff --git a/devel/electron23/files/patch-base_files_file__path__watcher__kqueue.h b/devel/electron23/files/patch-base_files_file__path__watcher__kqueue.h new file mode 100644 index 000000000000..821858b75711 --- /dev/null +++ b/devel/electron23/files/patch-base_files_file__path__watcher__kqueue.h @@ -0,0 +1,10 @@ +--- base/files/file_path_watcher_kqueue.h.orig 2022-02-07 13:39:41 UTC ++++ base/files/file_path_watcher_kqueue.h +@@ -5,6 +5,7 @@ + #ifndef BASE_FILES_FILE_PATH_WATCHER_KQUEUE_H_ + #define BASE_FILES_FILE_PATH_WATCHER_KQUEUE_H_ + ++#include + #include + + #include diff --git a/devel/electron23/files/patch-base_files_file__path__watcher__unittest.cc b/devel/electron23/files/patch-base_files_file__path__watcher__unittest.cc new file mode 100644 index 000000000000..fc6285933e52 --- /dev/null +++ b/devel/electron23/files/patch-base_files_file__path__watcher__unittest.cc @@ -0,0 +1,29 @@ +--- base/files/file_path_watcher_unittest.cc.orig 2023-02-01 18:43:07 UTC ++++ base/files/file_path_watcher_unittest.cc +@@ -521,7 +521,7 @@ TEST_F(FilePathWatcherTest, MAYBE_WatchDirectory) { + VLOG(1) << "Waiting for file1 creation"; + ASSERT_TRUE(WaitForEvent()); + +-#if !BUILDFLAG(IS_APPLE) ++#if !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD) + // Mac implementation does not detect files modified in a directory. + ASSERT_TRUE(WriteFile(file1, "content v2")); + VLOG(1) << "Waiting for file1 modification"; +@@ -1345,7 +1345,7 @@ enum Permission { + Execute + }; + +-#if BUILDFLAG(IS_APPLE) ++#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD) + bool ChangeFilePermissions(const FilePath& path, Permission perm, bool allow) { + struct stat stat_buf; + +@@ -1376,7 +1376,7 @@ bool ChangeFilePermissions(const FilePath& path, Permi + } + #endif // BUILDFLAG(IS_APPLE) + +-#if BUILDFLAG(IS_APPLE) ++#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD) + // Linux implementation of FilePathWatcher doesn't catch attribute changes. + // http://crbug.com/78043 + // Windows implementation of FilePathWatcher catches attribute changes that diff --git a/devel/electron23/files/patch-base_files_file__util__posix.cc b/devel/electron23/files/patch-base_files_file__util__posix.cc new file mode 100644 index 000000000000..b932d5c3169d --- /dev/null +++ b/devel/electron23/files/patch-base_files_file__util__posix.cc @@ -0,0 +1,52 @@ +--- base/files/file_util_posix.cc.orig 2022-08-31 12:19:35 UTC ++++ base/files/file_util_posix.cc +@@ -700,32 +700,34 @@ bool CreateDirectoryAndGetError(const FilePath& full_p + File::Error* error) { + ScopedBlockingCall scoped_blocking_call( + FROM_HERE, BlockingType::MAY_BLOCK); // For call to mkdir(). ++ const FilePath kFileSystemRoot("/"); + std::vector subpaths; + + // Collect a list of all parent directories. + FilePath last_path = full_path; +- subpaths.push_back(full_path); ++ if (full_path != kFileSystemRoot) ++ subpaths.push_back(full_path); + for (FilePath path = full_path.DirName(); +- path.value() != last_path.value(); path = path.DirName()) { ++ (path.value() != last_path.value() && ++ (path != kFileSystemRoot)); path = path.DirName()) { + subpaths.push_back(path); + last_path = path; + } + + // Iterate through the parents and create the missing ones. + for (const FilePath& subpath : base::Reversed(subpaths)) { +- if (DirectoryExists(subpath)) +- continue; +- if (mkdir(subpath.value().c_str(), 0700) == 0) +- continue; +- // Mkdir failed, but it might have failed with EEXIST, or some other error +- // due to the directory appearing out of thin air. This can occur if +- // two processes are trying to create the same file system tree at the same +- // time. Check to see if it exists and make sure it is a directory. +- int saved_errno = errno; +- if (!DirectoryExists(subpath)) { +- if (error) +- *error = File::OSErrorToFileError(saved_errno); +- return false; ++ if (!PathExists(subpath)) { ++ if ((mkdir(subpath.value().c_str(), 0700) == -1) && ++ ((full_path != subpath) ? (errno != ENOENT) : (-1))) { ++ int saved_errno = errno; ++ if (error) ++ *error = File::OSErrorToFileError(saved_errno); ++ return false; ++ } ++ } else if (!DirectoryExists(subpath)) { ++ if (error) ++ *error = File::OSErrorToFileError(ENOTDIR); ++ return false; + } + } + return true; diff --git a/devel/electron23/files/patch-base_files_file__util__unittest.cc b/devel/electron23/files/patch-base_files_file__util__unittest.cc new file mode 100644 index 000000000000..02c448176918 --- /dev/null +++ b/devel/electron23/files/patch-base_files_file__util__unittest.cc @@ -0,0 +1,20 @@ +--- base/files/file_util_unittest.cc.orig 2023-02-01 18:43:07 UTC ++++ base/files/file_util_unittest.cc +@@ -3558,7 +3558,7 @@ TEST_F(FileUtilTest, ReadFileToStringWithNamedPipe) { + } + #endif // BUILDFLAG(IS_WIN) + +-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) ++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD) + TEST_F(FileUtilTest, ReadFileToStringWithProcFileSystem) { + FilePath file_path("/proc/cpuinfo"); + std::string data = "temp"; +@@ -4281,7 +4281,7 @@ TEST(FileUtilMultiThreadedTest, MultiThreadedTempFiles + NULL); + #else + size_t bytes_written = +- ::write(::fileno(output_file.get()), content.c_str(), content.length()); ++ ::write(fileno(output_file.get()), content.c_str(), content.length()); + #endif + EXPECT_EQ(content.length(), bytes_written); + ::fflush(output_file.get()); diff --git a/devel/electron23/files/patch-base_files_important__file__writer__cleaner.cc b/devel/electron23/files/patch-base_files_important__file__writer__cleaner.cc new file mode 100644 index 000000000000..80f08d51a819 --- /dev/null +++ b/devel/electron23/files/patch-base_files_important__file__writer__cleaner.cc @@ -0,0 +1,12 @@ +--- base/files/important_file_writer_cleaner.cc.orig 2022-02-28 16:54:41 UTC ++++ base/files/important_file_writer_cleaner.cc +@@ -25,7 +25,8 @@ namespace base { + namespace { + + base::Time GetUpperBoundTime() { +-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS) || BUILDFLAG(IS_FUCHSIA) ++// needed because of .CreationTime() pledge ++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + // If process creation time is not available then use instance creation + // time as the upper-bound for old files. Modification times may be + // rounded-down to coarse-grained increments, e.g. FAT has 2s granularity, diff --git a/devel/electron23/files/patch-base_files_scoped__file.cc b/devel/electron23/files/patch-base_files_scoped__file.cc new file mode 100644 index 000000000000..350c73cc76e7 --- /dev/null +++ b/devel/electron23/files/patch-base_files_scoped__file.cc @@ -0,0 +1,11 @@ +--- base/files/scoped_file.cc.orig 2022-02-28 16:54:41 UTC ++++ base/files/scoped_file.cc +@@ -31,7 +31,7 @@ void ScopedFDCloseTraits::Free(int fd) { + int ret = IGNORE_EINTR(close(fd)); + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_APPLE) || \ +- BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_ANDROID) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + // NB: Some file descriptors can return errors from close() e.g. network + // filesystems such as NFS and Linux input devices. On Linux, macOS, and + // Fuchsia's POSIX layer, errors from close other than EBADF do not indicate diff --git a/devel/electron23/files/patch-base_functional_unretained__traits.h b/devel/electron23/files/patch-base_functional_unretained__traits.h new file mode 100644 index 000000000000..75006c20500d --- /dev/null +++ b/devel/electron23/files/patch-base_functional_unretained__traits.h @@ -0,0 +1,11 @@ +--- base/functional/unretained_traits.h.orig 2023-02-01 18:43:07 UTC ++++ base/functional/unretained_traits.h +@@ -130,7 +130,7 @@ struct TypeSupportsUnretained { + // official builds, and then in non-test code as well. + #if !defined(UNIT_TEST) && !defined(OFFICIAL_BUILD) + #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || \ +- defined(FORCE_UNRETAINED_COMPLETENESS_CHECKS_FOR_TESTS) ++ || BUILDFLAGS(IS_BSD) || defined(FORCE_UNRETAINED_COMPLETENESS_CHECKS_FOR_TESTS) + static_assert(IsCompleteTypeV || + IsIncompleteTypeSafeForUnretained>, + "T must be fully defined."); diff --git a/devel/electron23/files/patch-base_i18n_icu__util.cc b/devel/electron23/files/patch-base_i18n_icu__util.cc new file mode 100644 index 000000000000..3c8c441e08af --- /dev/null +++ b/devel/electron23/files/patch-base_i18n_icu__util.cc @@ -0,0 +1,20 @@ +--- base/i18n/icu_util.cc.orig 2023-02-01 18:43:07 UTC ++++ base/i18n/icu_util.cc +@@ -51,7 +51,7 @@ + #include "third_party/icu/source/common/unicode/unistr.h" + #endif + +-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || \ ++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) || \ + BUILDFLAG(IS_CHROMEOS) || (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CASTOS)) + #include "third_party/icu/source/i18n/unicode/timezone.h" + #endif +@@ -340,7 +340,7 @@ void InitializeIcuTimeZone() { + FuchsiaIntlProfileWatcher::GetPrimaryTimeZoneIdForIcuInitialization(); + icu::TimeZone::adoptDefault( + icu::TimeZone::createTimeZone(icu::UnicodeString::fromUTF8(zone_id))); +-#elif BUILDFLAG(IS_CHROMEOS) || (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CASTOS)) ++#elif BUILDFLAG(IS_CHROMEOS) || (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CASTOS)) || BUILDFLAG(IS_BSD) + // To respond to the time zone change properly, the default time zone + // cache in ICU has to be populated on starting up. + // See TimeZoneMonitorLinux::NotifyClientsFromImpl(). diff --git a/devel/electron23/files/patch-base_linux__util.cc b/devel/electron23/files/patch-base_linux__util.cc new file mode 100644 index 000000000000..c4b5ebcf6394 --- /dev/null +++ b/devel/electron23/files/patch-base_linux__util.cc @@ -0,0 +1,28 @@ +--- base/linux_util.cc.orig 2022-08-31 12:19:35 UTC ++++ base/linux_util.cc +@@ -15,6 +15,7 @@ + + #include + #include ++#include + + #include "base/base_export.h" + #include "base/files/dir_reader_posix.h" +@@ -135,6 +136,9 @@ void SetLinuxDistro(const std::string& distro) { + } + + bool GetThreadsForProcess(pid_t pid, std::vector* tids) { ++#if defined(OS_BSD) ++ return false; ++#else + // 25 > strlen("/proc//task") + strlen(std::to_string(INT_MAX)) + 1 = 22 + char buf[25]; + strings::SafeSPrintf(buf, "/proc/%d/task", pid); +@@ -152,6 +156,7 @@ bool GetThreadsForProcess(pid_t pid, std::vector + #endif + +@@ -575,14 +575,18 @@ void CheckCrashTestSighandler(int, siginfo_t* info, vo + // need the arch-specific boilerplate below, which is inspired by breakpad. + // At the same time, on OSX, ucontext.h is deprecated but si_addr works fine. + uintptr_t crash_addr = 0; +-#if BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FREEBSD) + crash_addr = reinterpret_cast(info->si_addr); + #else // OS_* + ucontext_t* context = reinterpret_cast(context_ptr); + #if defined(ARCH_CPU_X86) + crash_addr = static_cast(context->uc_mcontext.gregs[REG_EIP]); + #elif defined(ARCH_CPU_X86_64) ++#if BUILDFLAG(IS_OPENBSD) ++ crash_addr = static_cast(context->sc_rip); ++#else + crash_addr = static_cast(context->uc_mcontext.gregs[REG_RIP]); ++#endif + #elif defined(ARCH_CPU_ARMEL) + crash_addr = static_cast(context->uc_mcontext.arm_pc); + #elif defined(ARCH_CPU_ARM64) diff --git a/devel/electron23/files/patch-base_memory_discardable__memory.cc b/devel/electron23/files/patch-base_memory_discardable__memory.cc new file mode 100644 index 000000000000..bd043476fc97 --- /dev/null +++ b/devel/electron23/files/patch-base_memory_discardable__memory.cc @@ -0,0 +1,38 @@ +--- base/memory/discardable_memory.cc.orig 2022-11-30 08:12:58 UTC ++++ base/memory/discardable_memory.cc +@@ -26,7 +26,7 @@ BASE_FEATURE(kMadvFreeDiscardableMemory, + base::FEATURE_DISABLED_BY_DEFAULT); + #endif // BUILDFLAG(IS_POSIX) + +-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + BASE_FEATURE(kDiscardableMemoryBackingTrial, + "DiscardableMemoryBackingTrial", + base::FEATURE_DISABLED_BY_DEFAULT); +@@ -52,7 +52,7 @@ const base::FeatureParam + + namespace { + +-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + + DiscardableMemoryBacking GetBackingForFieldTrial() { + DiscardableMemoryTrialGroup trial_group = +@@ -71,7 +71,7 @@ DiscardableMemoryBacking GetBackingForFieldTrial() { + + } // namespace + +-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + + // Probe capabilities of this device to determine whether we should participate + // in the discardable memory backing trial. +@@ -101,7 +101,7 @@ DiscardableMemory::DiscardableMemory() = default; + DiscardableMemory::~DiscardableMemory() = default; + + DiscardableMemoryBacking GetDiscardableMemoryBacking() { +-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + if (DiscardableMemoryBackingFieldTrialIsEnabled()) { + return GetBackingForFieldTrial(); + } diff --git a/devel/electron23/files/patch-base_memory_discardable__memory__internal.h b/devel/electron23/files/patch-base_memory_discardable__memory__internal.h new file mode 100644 index 000000000000..13bef7210432 --- /dev/null +++ b/devel/electron23/files/patch-base_memory_discardable__memory__internal.h @@ -0,0 +1,11 @@ +--- base/memory/discardable_memory_internal.h.orig 2022-02-28 16:54:41 UTC ++++ base/memory/discardable_memory_internal.h +@@ -10,7 +10,7 @@ + #include "base/metrics/field_trial_params.h" + #include "build/build_config.h" + +-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + + namespace base { + diff --git a/devel/electron23/files/patch-base_memory_madv__free__discardable__memory__posix.cc b/devel/electron23/files/patch-base_memory_madv__free__discardable__memory__posix.cc new file mode 100644 index 000000000000..ead3fe5472be --- /dev/null +++ b/devel/electron23/files/patch-base_memory_madv__free__discardable__memory__posix.cc @@ -0,0 +1,21 @@ +--- base/memory/madv_free_discardable_memory_posix.cc.orig 2022-05-19 14:06:27 UTC ++++ base/memory/madv_free_discardable_memory_posix.cc +@@ -295,6 +295,10 @@ void MadvFreeDiscardableMemoryPosix::SetKeepMemoryForT + + bool MadvFreeDiscardableMemoryPosix::IsResident() const { + DFAKE_SCOPED_RECURSIVE_LOCK(thread_collision_warner_); ++// XXX mincore ++#if BUILDFLAG(IS_BSD) ++ return false; ++#else + #if BUILDFLAG(IS_APPLE) + std::vector vec(allocated_pages_); + #else +@@ -310,6 +314,7 @@ bool MadvFreeDiscardableMemoryPosix::IsResident() cons + return false; + } + return true; ++#endif + } + + bool MadvFreeDiscardableMemoryPosix::IsDiscarded() const { diff --git a/devel/electron23/files/patch-base_memory_platform__shared__memory__region.h b/devel/electron23/files/patch-base_memory_platform__shared__memory__region.h new file mode 100644 index 000000000000..852cc726f377 --- /dev/null +++ b/devel/electron23/files/patch-base_memory_platform__shared__memory__region.h @@ -0,0 +1,29 @@ +--- base/memory/platform_shared_memory_region.h.orig 2022-06-17 14:20:10 UTC ++++ base/memory/platform_shared_memory_region.h +@@ -16,7 +16,7 @@ + + #include + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + namespace content { + class SandboxIPCHandler; + } +@@ -83,7 +83,7 @@ class BASE_EXPORT PlatformSharedMemoryRegion { + kMaxValue = GET_SHMEM_TEMP_DIR_FAILURE + }; + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Structure to limit access to executable region creation. + struct ExecutableRegion { + private: +@@ -211,7 +211,7 @@ class BASE_EXPORT PlatformSharedMemoryRegion { + CheckPlatformHandlePermissionsCorrespondToMode); + static PlatformSharedMemoryRegion Create(Mode mode, + size_t size +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + , + bool executable = false + #endif diff --git a/devel/electron23/files/patch-base_memory_platform__shared__memory__region__posix.cc b/devel/electron23/files/patch-base_memory_platform__shared__memory__region__posix.cc new file mode 100644 index 000000000000..fc212fadf786 --- /dev/null +++ b/devel/electron23/files/patch-base_memory_platform__shared__memory__region__posix.cc @@ -0,0 +1,29 @@ +--- base/memory/platform_shared_memory_region_posix.cc.orig 2023-02-01 18:43:07 UTC ++++ base/memory/platform_shared_memory_region_posix.cc +@@ -55,7 +55,7 @@ bool CheckFDAccessMode(int fd, int expected_mode) { + + } // namespace + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // static + ScopedFD PlatformSharedMemoryRegion::ExecutableRegion::CreateFD(size_t size) { + PlatformSharedMemoryRegion region = +@@ -168,7 +168,7 @@ bool PlatformSharedMemoryRegion::ConvertToUnsafe() { + // static + PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Create(Mode mode, + size_t size +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + , + bool executable + #endif +@@ -197,7 +197,7 @@ PlatformSharedMemoryRegion PlatformSharedMemoryRegion: + // flag. + FilePath directory; + if (!GetShmemTempDir( +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + executable, + #else + false /* executable */, diff --git a/devel/electron23/files/patch-base_message__loop_message__pump__glib.cc b/devel/electron23/files/patch-base_message__loop_message__pump__glib.cc new file mode 100644 index 000000000000..6734d01e8bf0 --- /dev/null +++ b/devel/electron23/files/patch-base_message__loop_message__pump__glib.cc @@ -0,0 +1,28 @@ +--- base/message_loop/message_pump_glib.cc.orig 2022-08-31 12:19:35 UTC ++++ base/message_loop/message_pump_glib.cc +@@ -8,6 +8,11 @@ + #include + #include + ++#if BUILDFLAG(IS_BSD) ++#include ++#include ++#endif ++ + #include "base/logging.h" + #include "base/memory/raw_ptr.h" + #include "base/notreached.h" +@@ -51,9 +56,13 @@ int GetTimeIntervalMilliseconds(TimeTicks next_task_ti + } + + bool RunningOnMainThread() { ++#if BUILDFLAG(IS_BSD) ++ return pthread_main_np(); ++#else + auto pid = getpid(); + auto tid = PlatformThread::CurrentId(); + return pid > 0 && tid > 0 && pid == tid; ++#endif + } + + // A brief refresher on GLib: diff --git a/devel/electron23/files/patch-base_native__library__posix.cc b/devel/electron23/files/patch-base_native__library__posix.cc new file mode 100644 index 000000000000..c2b8d0e5e970 --- /dev/null +++ b/devel/electron23/files/patch-base_native__library__posix.cc @@ -0,0 +1,11 @@ +--- base/native_library_posix.cc.orig 2022-05-19 14:06:27 UTC ++++ base/native_library_posix.cc +@@ -33,7 +33,7 @@ NativeLibrary LoadNativeLibraryWithOptions(const FileP + // http://crbug.com/17943, http://crbug.com/17557, http://crbug.com/36892, + // and http://crbug.com/40794. + int flags = RTLD_LAZY; +-#if BUILDFLAG(IS_ANDROID) || !defined(RTLD_DEEPBIND) ++#if BUILDFLAG(IS_ANDROID) || !defined(RTLD_DEEPBIND) || BUILDFLAG(IS_BSD) + // Certain platforms don't define RTLD_DEEPBIND. Android dlopen() requires + // further investigation, as it might vary across versions. Crash here to + // warn developers that they're trying to rely on uncertain behavior. diff --git a/devel/electron23/files/patch-base_native__library__unittest.cc b/devel/electron23/files/patch-base_native__library__unittest.cc new file mode 100644 index 000000000000..ef6934877037 --- /dev/null +++ b/devel/electron23/files/patch-base_native__library__unittest.cc @@ -0,0 +1,11 @@ +--- base/native_library_unittest.cc.orig 2022-10-24 13:33:33 UTC ++++ base/native_library_unittest.cc +@@ -134,7 +134,7 @@ TEST(NativeLibraryTest, LoadLibrary) { + // versions with respect to symbol resolution scope. + // TSan and MSan error out on RTLD_DEEPBIND, https://crbug.com/705255 + #if !BUILDFLAG(IS_ANDROID) && !defined(THREAD_SANITIZER) && \ +- !defined(MEMORY_SANITIZER) ++ !defined(MEMORY_SANITIZER) && !BUILDFLAG(IS_BSD) + + // Verifies that the |prefer_own_symbols| option satisfies its guarantee that + // a loaded library will always prefer local symbol resolution before diff --git a/devel/electron23/files/patch-base_posix_can__lower__nice__to.cc b/devel/electron23/files/patch-base_posix_can__lower__nice__to.cc new file mode 100644 index 000000000000..67a5d35808ae --- /dev/null +++ b/devel/electron23/files/patch-base_posix_can__lower__nice__to.cc @@ -0,0 +1,16 @@ +--- base/posix/can_lower_nice_to.cc.orig 2022-02-28 16:54:41 UTC ++++ base/posix/can_lower_nice_to.cc +@@ -11,8 +11,12 @@ + + #include "build/build_config.h" + ++#if BUILDFLAG(IS_FREEBSD) ++#include ++#endif ++ + // Not defined on AIX by default. +-#if BUILDFLAG(IS_AIX) ++#if BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + #if defined(RLIMIT_NICE) + #error Assumption about OS_AIX is incorrect + #endif diff --git a/devel/electron23/files/patch-base_posix_unix__domain__socket.cc b/devel/electron23/files/patch-base_posix_unix__domain__socket.cc new file mode 100644 index 000000000000..1ae00278ecd3 --- /dev/null +++ b/devel/electron23/files/patch-base_posix_unix__domain__socket.cc @@ -0,0 +1,39 @@ +--- base/posix/unix_domain_socket.cc.orig 2022-08-31 12:19:35 UTC ++++ base/posix/unix_domain_socket.cc +@@ -51,7 +51,7 @@ bool CreateSocketPair(ScopedFD* one, ScopedFD* two) { + + // static + bool UnixDomainSocket::EnableReceiveProcessId(int fd) { +-#if !BUILDFLAG(IS_APPLE) ++#if !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD) + const int enable = 1; + return setsockopt(fd, SOL_SOCKET, SO_PASSCRED, &enable, sizeof(enable)) == 0; + #else +@@ -149,7 +149,7 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd, + + const size_t kControlBufferSize = + CMSG_SPACE(sizeof(int) * kMaxFileDescriptors) +-#if !BUILDFLAG(IS_APPLE) ++#if !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD) + // macOS does not support ucred. + // macOS supports xucred, but this structure is insufficient. + + CMSG_SPACE(sizeof(struct ucred)) +@@ -177,7 +177,7 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd, + wire_fds = reinterpret_cast(CMSG_DATA(cmsg)); + wire_fds_len = payload_len / sizeof(int); + } +-#if !BUILDFLAG(IS_APPLE) ++#if !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_BSD) + // macOS does not support SCM_CREDENTIALS. + if (cmsg->cmsg_level == SOL_SOCKET && + cmsg->cmsg_type == SCM_CREDENTIALS) { +@@ -211,6 +211,9 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd, + socklen_t pid_size = sizeof(pid); + if (getsockopt(fd, SOL_LOCAL, LOCAL_PEERPID, &pid, &pid_size) != 0) + pid = -1; ++#elif BUILDFLAG(IS_BSD) ++ NOTIMPLEMENTED(); ++ pid = -1; + #else + // |pid| will legitimately be -1 if we read EOF, so only DCHECK if we + // actually received a message. Unfortunately, Linux allows sending zero diff --git a/devel/electron23/files/patch-base_posix_unix__domain__socket__unittest.cc b/devel/electron23/files/patch-base_posix_unix__domain__socket__unittest.cc new file mode 100644 index 000000000000..b2744d4abb50 --- /dev/null +++ b/devel/electron23/files/patch-base_posix_unix__domain__socket__unittest.cc @@ -0,0 +1,11 @@ +--- base/posix/unix_domain_socket_unittest.cc.orig 2022-02-28 16:54:41 UTC ++++ base/posix/unix_domain_socket_unittest.cc +@@ -10,6 +10,8 @@ + #include + #include + ++#include ++ + #include "base/bind.h" + #include "base/callback_helpers.h" + #include "base/files/file_util.h" diff --git a/devel/electron23/files/patch-base_process_kill.h b/devel/electron23/files/patch-base_process_kill.h new file mode 100644 index 000000000000..1463ba9ed811 --- /dev/null +++ b/devel/electron23/files/patch-base_process_kill.h @@ -0,0 +1,11 @@ +--- base/process/kill.h.orig 2022-05-19 14:06:27 UTC ++++ base/process/kill.h +@@ -113,7 +113,7 @@ BASE_EXPORT TerminationStatus GetTerminationStatus(Pro + BASE_EXPORT TerminationStatus GetKnownDeadTerminationStatus( + ProcessHandle handle, int* exit_code); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Spawns a thread to wait asynchronously for the child |process| to exit + // and then reaps it. + BASE_EXPORT void EnsureProcessGetsReaped(Process process); diff --git a/devel/electron23/files/patch-base_process_kill__posix.cc b/devel/electron23/files/patch-base_process_kill__posix.cc new file mode 100644 index 000000000000..e9446679c97c --- /dev/null +++ b/devel/electron23/files/patch-base_process_kill__posix.cc @@ -0,0 +1,11 @@ +--- base/process/kill_posix.cc.orig 2022-05-19 14:06:27 UTC ++++ base/process/kill_posix.cc +@@ -158,7 +158,7 @@ void EnsureProcessTerminated(Process process) { + 0, new BackgroundReaper(std::move(process), Seconds(2))); + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + void EnsureProcessGetsReaped(Process process) { + DCHECK(!process.is_current()); + diff --git a/devel/electron23/files/patch-base_process_launch.h b/devel/electron23/files/patch-base_process_launch.h new file mode 100644 index 000000000000..2a8f08199824 --- /dev/null +++ b/devel/electron23/files/patch-base_process_launch.h @@ -0,0 +1,11 @@ +--- base/process/launch.h.orig 2022-06-17 14:20:10 UTC ++++ base/process/launch.h +@@ -198,7 +198,7 @@ struct BASE_EXPORT LaunchOptions { + bool clear_environment = false; + #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // If non-zero, start the process using clone(), using flags as provided. + // Unlike in clone, clone_flags may not contain a custom termination signal + // that is sent to the parent when the child dies. The termination signal will diff --git a/devel/electron23/files/patch-base_process_launch__posix.cc b/devel/electron23/files/patch-base_process_launch__posix.cc new file mode 100644 index 000000000000..656ff7be03d3 --- /dev/null +++ b/devel/electron23/files/patch-base_process_launch__posix.cc @@ -0,0 +1,12 @@ +--- base/process/launch_posix.cc.orig 2022-08-31 12:19:35 UTC ++++ base/process/launch_posix.cc +@@ -64,6 +64,9 @@ + #error "macOS should use launch_mac.cc" + #endif + ++#if defined(OS_FREEBSD) ++#pragma weak environ ++#endif + extern char** environ; + + namespace base { diff --git a/devel/electron23/files/patch-base_process_memory__linux.cc b/devel/electron23/files/patch-base_process_memory__linux.cc new file mode 100644 index 000000000000..7953b4340aa9 --- /dev/null +++ b/devel/electron23/files/patch-base_process_memory__linux.cc @@ -0,0 +1,44 @@ +--- base/process/memory_linux.cc.orig 2023-02-01 18:43:07 UTC ++++ base/process/memory_linux.cc +@@ -20,6 +20,7 @@ + + namespace base { + ++#if !BUILDFLAG(IS_BSD) + namespace { + + void ReleaseReservationOrTerminate() { +@@ -29,12 +30,14 @@ void ReleaseReservationOrTerminate() { + } + + } // namespace ++#endif + + void EnableTerminationOnHeapCorruption() { + // On Linux, there nothing to do AFAIK. + } + + void EnableTerminationOnOutOfMemory() { ++#if !BUILDFLAG(IS_BSD) + // Set the new-out of memory handler. + std::set_new_handler(&ReleaseReservationOrTerminate); + // If we're using glibc's allocator, the above functions will override +@@ -43,8 +46,10 @@ void EnableTerminationOnOutOfMemory() { + #if BUILDFLAG(USE_ALLOCATOR_SHIM) + allocator_shim::SetCallNewHandlerOnMallocFailure(true); + #endif ++#endif + } + ++#if !BUILDFLAG(IS_BSD) + // ScopedAllowBlocking() has private constructor and it can only be used in + // friend classes/functions. Declaring a class is easier in this situation to + // avoid adding more dependency to thread_restrictions.h because of the +@@ -104,6 +109,7 @@ bool AdjustOOMScoreHelper::AdjustOOMScore(ProcessId pr + bool AdjustOOMScore(ProcessId process, int score) { + return AdjustOOMScoreHelper::AdjustOOMScore(process, score); + } ++#endif + + bool UncheckedMalloc(size_t size, void** result) { + #if BUILDFLAG(USE_ALLOCATOR_SHIM) diff --git a/devel/electron23/files/patch-base_process_process__handle.cc b/devel/electron23/files/patch-base_process_process__handle.cc new file mode 100644 index 000000000000..efb95e7c3b54 --- /dev/null +++ b/devel/electron23/files/patch-base_process_process__handle.cc @@ -0,0 +1,11 @@ +--- base/process/process_handle.cc.orig 2022-02-28 16:54:41 UTC ++++ base/process/process_handle.cc +@@ -30,7 +30,7 @@ UniqueProcId GetUniqueIdForProcess() { + : UniqueProcId(GetCurrentProcId()); + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_AIX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + + void InitUniqueIdForProcessInPidNamespace(ProcessId pid_outside_of_namespace) { + DCHECK(pid_outside_of_namespace != kNullProcessId); diff --git a/devel/electron23/files/patch-base_process_process__handle.h b/devel/electron23/files/patch-base_process_process__handle.h new file mode 100644 index 000000000000..5e25e86d099c --- /dev/null +++ b/devel/electron23/files/patch-base_process_process__handle.h @@ -0,0 +1,11 @@ +--- base/process/process_handle.h.orig 2022-02-28 16:54:41 UTC ++++ base/process/process_handle.h +@@ -106,7 +106,7 @@ BASE_EXPORT ProcessId GetCurrentProcId(); + // processes may be reused. + BASE_EXPORT UniqueProcId GetUniqueIdForProcess(); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // When a process is started in a different PID namespace from the browser + // process, this function must be called with the process's PID in the browser's + // PID namespace in order to initialize its unique ID. Not thread safe. diff --git a/devel/electron23/files/patch-base_process_process__handle__freebsd.cc b/devel/electron23/files/patch-base_process_process__handle__freebsd.cc new file mode 100644 index 000000000000..5cc930471cea --- /dev/null +++ b/devel/electron23/files/patch-base_process_process__handle__freebsd.cc @@ -0,0 +1,25 @@ +--- base/process/process_handle_freebsd.cc.orig 2022-04-21 18:48:31 UTC ++++ base/process/process_handle_freebsd.cc +@@ -3,6 +3,7 @@ + // found in the LICENSE file. + + #include "base/process/process_handle.h" ++#include "base/files/file_util.h" + + #include + #include +@@ -15,10 +16,13 @@ namespace base { + + ProcessId GetParentProcessId(ProcessHandle process) { + struct kinfo_proc info; +- size_t length; ++ size_t length = sizeof(struct kinfo_proc); + int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process }; + + if (sysctl(mib, std::size(mib), &info, &length, NULL, 0) < 0) ++ return -1; ++ ++ if (length < sizeof(struct kinfo_proc)) + return -1; + + return info.ki_ppid; diff --git a/devel/electron23/files/patch-base_process_process__handle__openbsd.cc b/devel/electron23/files/patch-base_process_process__handle__openbsd.cc new file mode 100644 index 000000000000..f8e318565de3 --- /dev/null +++ b/devel/electron23/files/patch-base_process_process__handle__openbsd.cc @@ -0,0 +1,89 @@ +--- base/process/process_handle_openbsd.cc.orig 2022-04-21 18:48:31 UTC ++++ base/process/process_handle_openbsd.cc +@@ -3,8 +3,11 @@ + // found in the LICENSE file. + + #include "base/process/process_handle.h" ++#include "base/files/file_util.h" + + #include ++#include ++#include + #include + #include + #include +@@ -12,39 +15,59 @@ + namespace base { + + ProcessId GetParentProcessId(ProcessHandle process) { +- struct kinfo_proc info; ++ struct kinfo_proc *info; + size_t length; ++ pid_t ppid; + int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process, + sizeof(struct kinfo_proc), 0 }; + + if (sysctl(mib, std::size(mib), NULL, &length, NULL, 0) < 0) + return -1; + ++ info = (struct kinfo_proc *)malloc(length); ++ + mib[5] = (length / sizeof(struct kinfo_proc)); + +- if (sysctl(mib, std::size(mib), &info, &length, NULL, 0) < 0) +- return -1; ++ if (sysctl(mib, std::size(mib), info, &length, NULL, 0) < 0) { ++ ppid = -1; ++ goto out; ++ } + +- return info.p_ppid; ++ ppid = info->p_ppid; ++ ++out: ++ free(info); ++ return ppid; + } + + FilePath GetProcessExecutablePath(ProcessHandle process) { +- struct kinfo_proc kp; +- size_t len; ++ struct kinfo_proc *info; ++ size_t length; ++ char *path = NULL; + int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process, + sizeof(struct kinfo_proc), 0 }; + +- if (sysctl(mib, std::size(mib), NULL, &len, NULL, 0) == -1) ++ if (sysctl(mib, std::size(mib), NULL, &length, NULL, 0) == -1) + return FilePath(); +- mib[5] = (len / sizeof(struct kinfo_proc)); +- if (sysctl(mib, std::size(mib), &kp, &len, NULL, 0) < 0) +- return FilePath(); +- if ((kp.p_flag & P_SYSTEM) != 0) +- return FilePath(); +- if (strcmp(kp.p_comm, "chrome") == 0) +- return FilePath(kp.p_comm); + +- return FilePath(); ++ info = (struct kinfo_proc *)malloc(length); ++ ++ mib[5] = (length / sizeof(struct kinfo_proc)); ++ ++ if (sysctl(mib, std::size(mib), info, &length, NULL, 0) < 0) ++ goto out; ++ ++ if ((info->p_flag & P_SYSTEM) != 0) ++ goto out; ++ ++ if (strcmp(info->p_comm, "chrome") == 0) { ++ path = info->p_comm; ++ goto out; ++ } ++ ++out: ++ free(info); ++ return FilePath(path); + } + + } // namespace base diff --git a/devel/electron23/files/patch-base_process_process__iterator__freebsd.cc b/devel/electron23/files/patch-base_process_process__iterator__freebsd.cc new file mode 100644 index 000000000000..88715effc731 --- /dev/null +++ b/devel/electron23/files/patch-base_process_process__iterator__freebsd.cc @@ -0,0 +1,51 @@ +--- base/process/process_iterator_freebsd.cc.orig 2022-04-21 18:48:31 UTC ++++ base/process/process_iterator_freebsd.cc +@@ -20,7 +20,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter* + : index_of_kinfo_proc_(), + filter_(filter) { + +- int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_UID, getuid() }; ++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_UID, (int) getuid() }; + + bool done = false; + int try_num = 1; +@@ -39,7 +39,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter* + num_of_kinfo_proc += 16; + kinfo_procs_.resize(num_of_kinfo_proc); + len = num_of_kinfo_proc * sizeof(struct kinfo_proc); +- if (sysctl(mib, std::size(mib), &kinfo_procs_[0], &len, NULL, 0) < 0) { ++ if (sysctl(mib, std::size(mib), kinfo_procs_.data(), &len, NULL, 0) < 0) { + // If we get a mem error, it just means we need a bigger buffer, so + // loop around again. Anything else is a real error and give up. + if (errno != ENOMEM) { +@@ -49,7 +49,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter* + } + } else { + // Got the list, just make sure we're sized exactly right +- size_t num_of_kinfo_proc = len / sizeof(struct kinfo_proc); ++ num_of_kinfo_proc = len / sizeof(struct kinfo_proc); + kinfo_procs_.resize(num_of_kinfo_proc); + done = true; + } +@@ -71,18 +71,13 @@ bool ProcessIterator::CheckForNextProcess() { + for (; index_of_kinfo_proc_ < kinfo_procs_.size(); ++index_of_kinfo_proc_) { + size_t length; + struct kinfo_proc kinfo = kinfo_procs_[index_of_kinfo_proc_]; +- int mib[] = { CTL_KERN, KERN_PROC_ARGS, kinfo.ki_pid }; ++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_ARGS, kinfo.ki_pid }; + + if ((kinfo.ki_pid > 0) && (kinfo.ki_stat == SZOMB)) + continue; + +- length = 0; +- if (sysctl(mib, std::size(mib), NULL, &length, NULL, 0) < 0) { +- LOG(ERROR) << "failed to figure out the buffer size for a command line"; +- continue; +- } +- +- data.resize(length); ++ data.resize(ARG_MAX); ++ length = ARG_MAX; + + if (sysctl(mib, std::size(mib), &data[0], &length, NULL, 0) < 0) { + LOG(ERROR) << "failed to fetch a commandline"; diff --git a/devel/electron23/files/patch-base_process_process__iterator__openbsd.cc b/devel/electron23/files/patch-base_process_process__iterator__openbsd.cc new file mode 100644 index 000000000000..5b63c8ddba9d --- /dev/null +++ b/devel/electron23/files/patch-base_process_process__iterator__openbsd.cc @@ -0,0 +1,45 @@ +--- base/process/process_iterator_openbsd.cc.orig 2022-04-21 18:48:31 UTC ++++ base/process/process_iterator_openbsd.cc +@@ -6,6 +6,9 @@ + + #include + #include ++#include ++#include ++#include + #include + + #include "base/logging.h" +@@ -18,12 +21,13 @@ ProcessIterator::ProcessIterator(const ProcessFilter* + : index_of_kinfo_proc_(), + filter_(filter) { + +- int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_UID, getuid(), ++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_UID, static_cast(getuid()), + sizeof(struct kinfo_proc), 0 }; + + bool done = false; + int try_num = 1; + const int max_tries = 10; ++ size_t num_of_kinfo_proc; + + do { + size_t len = 0; +@@ -32,7 +36,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter* + kinfo_procs_.resize(0); + done = true; + } else { +- size_t num_of_kinfo_proc = len / sizeof(struct kinfo_proc); ++ num_of_kinfo_proc = len / sizeof(struct kinfo_proc); + // Leave some spare room for process table growth (more could show up + // between when we check and now) + num_of_kinfo_proc += 16; +@@ -48,7 +52,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter* + } + } else { + // Got the list, just make sure we're sized exactly right +- size_t num_of_kinfo_proc = len / sizeof(struct kinfo_proc); ++ num_of_kinfo_proc = len / sizeof(struct kinfo_proc); + kinfo_procs_.resize(num_of_kinfo_proc); + done = true; + } diff --git a/devel/electron23/files/patch-base_process_process__metrics.cc b/devel/electron23/files/patch-base_process_process__metrics.cc new file mode 100644 index 000000000000..ada0a905c74a --- /dev/null +++ b/devel/electron23/files/patch-base_process_process__metrics.cc @@ -0,0 +1,54 @@ +--- base/process/process_metrics.cc.orig 2023-02-01 18:43:07 UTC ++++ base/process/process_metrics.cc +@@ -17,7 +17,7 @@ namespace base { + namespace { + + #if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_AIX) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + int CalculateEventsPerSecond(uint64_t event_count, + uint64_t* last_event_count, + base::TimeTicks* last_calculated) { +@@ -54,7 +54,7 @@ SystemMetrics SystemMetrics::Sample() { + SystemMetrics system_metrics; + + system_metrics.committed_memory_ = GetSystemCommitCharge(); +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + GetSystemMemoryInfo(&system_metrics.memory_info_); + GetVmStatInfo(&system_metrics.vmstat_info_); + GetSystemDiskInfo(&system_metrics.disk_info_); +@@ -73,7 +73,7 @@ Value SystemMetrics::ToValue() const { + Value res(Value::Type::DICTIONARY); + + res.SetIntKey("committed_memory", static_cast(committed_memory_)); +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + Value meminfo = memory_info_.ToValue(); + Value vmstat = vmstat_info_.ToValue(); + meminfo.MergeDictionary(&vmstat); +@@ -99,7 +99,6 @@ std::unique_ptr ProcessMetrics::Create + #endif // !BUILDFLAG(IS_MAC) + } + +-#if !BUILDFLAG(IS_FREEBSD) || !BUILDFLAG(IS_POSIX) + double ProcessMetrics::GetPlatformIndependentCPUUsage( + TimeDelta cumulative_cpu) { + TimeTicks time = TimeTicks::Now(); +@@ -125,7 +124,6 @@ double ProcessMetrics::GetPlatformIndependentCPUUsage( + double ProcessMetrics::GetPlatformIndependentCPUUsage() { + return GetPlatformIndependentCPUUsage(GetCumulativeCPUUsage()); + } +-#endif + + #if BUILDFLAG(IS_WIN) + double ProcessMetrics::GetPreciseCPUUsage(TimeDelta cumulative_cpu) { +@@ -156,7 +154,7 @@ double ProcessMetrics::GetPreciseCPUUsage() { + #endif // BUILDFLAG(IS_WIN) + + #if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_AIX) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + int ProcessMetrics::CalculateIdleWakeupsPerSecond( + uint64_t absolute_idle_wakeups) { + return CalculateEventsPerSecond(absolute_idle_wakeups, diff --git a/devel/electron23/files/patch-base_process_process__metrics.h b/devel/electron23/files/patch-base_process_process__metrics.h new file mode 100644 index 000000000000..9285322997d1 --- /dev/null +++ b/devel/electron23/files/patch-base_process_process__metrics.h @@ -0,0 +1,120 @@ +--- base/process/process_metrics.h.orig 2023-02-01 18:43:07 UTC ++++ base/process/process_metrics.h +@@ -36,7 +36,7 @@ + #endif + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \ +- BUILDFLAG(IS_AIX) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + #include + #include + #include +@@ -51,7 +51,7 @@ class Value; + // Full declaration is in process_metrics_iocounters.h. + struct IoCounters; + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + // Minor and major page fault counts since the process creation. + // Both counts are process-wide, and exclude child processes. + // +@@ -106,7 +106,7 @@ class BASE_EXPORT ProcessMetrics { + // convenience wrapper for CreateProcessMetrics(). + static std::unique_ptr CreateCurrentProcessMetrics(); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + // Resident Set Size is a Linux/Android specific memory concept. Do not + // attempt to extend this to other platforms. + BASE_EXPORT size_t GetResidentSetSize() const; +@@ -164,7 +164,7 @@ class BASE_EXPORT ProcessMetrics { + #endif // BUILDFLAG(IS_WIN) + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \ +- BUILDFLAG(IS_AIX) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + // Emits the cumulative CPU usage for all currently active threads since they + // were started into the output parameter (replacing its current contents). + // Threads that have already terminated will not be reported. Thus, the sum of +@@ -224,7 +224,7 @@ class BASE_EXPORT ProcessMetrics { + int GetOpenFdSoftLimit() const; + #endif // BUILDFLAG(IS_POSIX) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + // Bytes of swap as reported by /proc/[pid]/status. + uint64_t GetVmSwapBytes() const; + +@@ -245,7 +245,7 @@ class BASE_EXPORT ProcessMetrics { + #endif // !BUILDFLAG(IS_MAC) + + #if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_AIX) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + int CalculateIdleWakeupsPerSecond(uint64_t absolute_idle_wakeups); + #endif + #if BUILDFLAG(IS_APPLE) +@@ -264,9 +264,7 @@ class BASE_EXPORT ProcessMetrics { + // Used to store the previous times and CPU usage counts so we can + // compute the CPU usage between calls. + TimeTicks last_cpu_time_; +-#if !BUILDFLAG(IS_FREEBSD) || !BUILDFLAG(IS_POSIX) + TimeDelta last_cumulative_cpu_; +-#endif + + #if BUILDFLAG(IS_WIN) + TimeTicks last_cpu_time_for_precise_cpu_usage_; +@@ -274,7 +272,7 @@ class BASE_EXPORT ProcessMetrics { + #endif + + #if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_AIX) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + // Same thing for idle wakeups. + TimeTicks last_idle_wakeups_time_; + uint64_t last_absolute_idle_wakeups_; +@@ -317,7 +315,7 @@ BASE_EXPORT void IncreaseFdLimitTo(unsigned int max_de + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \ + BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_AIX) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + // Data about system-wide memory consumption. Values are in KB. Available on + // Windows, Mac, Linux, Android and Chrome OS. + // +@@ -352,7 +350,7 @@ struct BASE_EXPORT SystemMemoryInfoKB { + #endif + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \ +- BUILDFLAG(IS_AIX) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + // This provides an estimate of available memory as described here: + // https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773 + // NOTE: this is ONLY valid in kernels 3.14 and up. Its value will always +@@ -367,7 +365,7 @@ struct BASE_EXPORT SystemMemoryInfoKB { + #endif + + #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_AIX) || BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + int buffers = 0; + int cached = 0; + int active_anon = 0; +@@ -404,7 +402,7 @@ BASE_EXPORT bool GetSystemMemoryInfo(SystemMemoryInfoK + // BUILDFLAG(IS_FUCHSIA) + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \ +- BUILDFLAG(IS_AIX) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + // Parse the data found in /proc//stat and return the sum of the + // CPU-related ticks. Returns -1 on parse error. + // Exposed for testing. +@@ -592,7 +590,7 @@ class BASE_EXPORT SystemMetrics { + FRIEND_TEST_ALL_PREFIXES(SystemMetricsTest, SystemMetrics); + + size_t committed_memory_; +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + SystemMemoryInfoKB memory_info_; + VmStatInfo vmstat_info_; + SystemDiskInfo disk_info_; diff --git a/devel/electron23/files/patch-base_process_process__metrics__freebsd.cc b/devel/electron23/files/patch-base_process_process__metrics__freebsd.cc new file mode 100644 index 000000000000..395dc9eafc41 --- /dev/null +++ b/devel/electron23/files/patch-base_process_process__metrics__freebsd.cc @@ -0,0 +1,296 @@ +--- base/process/process_metrics_freebsd.cc.orig 2022-10-25 08:25:05 UTC ++++ base/process/process_metrics_freebsd.cc +@@ -3,20 +3,39 @@ + // found in the LICENSE file. + + #include "base/process/process_metrics.h" ++#include "base/notreached.h" + + #include ++#include + #include + #include + #include + ++#include /* O_RDONLY */ ++#include ++#include ++ + #include "base/memory/ptr_util.h" + #include "base/process/process_metrics_iocounters.h" ++#include "base/values.h" + + namespace base { ++namespace { ++int GetPageShift() { ++ int pagesize = getpagesize(); ++ int pageshift = 0; + ++ while (pagesize > 1) { ++ pageshift++; ++ pagesize >>= 1; ++ } ++ ++ return pageshift; ++} ++} ++ + ProcessMetrics::ProcessMetrics(ProcessHandle process) +- : process_(process), +- last_cpu_(0) {} ++ : process_(process) {} + + // static + std::unique_ptr ProcessMetrics::CreateProcessMetrics( +@@ -24,22 +43,19 @@ std::unique_ptr ProcessMetrics::Create + return WrapUnique(new ProcessMetrics(process)); + } + +-double ProcessMetrics::GetPlatformIndependentCPUUsage() { ++TimeDelta ProcessMetrics::GetCumulativeCPUUsage() { + struct kinfo_proc info; +- int mib[] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, process_}; +- size_t length = sizeof(info); ++ size_t length = sizeof(struct kinfo_proc); ++ struct timeval tv; + ++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process_ }; ++ + if (sysctl(mib, std::size(mib), &info, &length, NULL, 0) < 0) +- return 0; ++ return TimeDelta(); + +- return (info.ki_pctcpu / FSCALE) * 100.0; ++ return Microseconds(info.ki_runtime); + } + +-TimeDelta ProcessMetrics::GetCumulativeCPUUsage() { +- NOTREACHED(); +- return TimeDelta(); +-} +- + bool ProcessMetrics::GetIOCounters(IoCounters* io_counters) const { + return false; + } +@@ -67,4 +83,221 @@ size_t GetSystemCommitCharge() { + return mem_total - (mem_free*pagesize) - (mem_inactive*pagesize); + } + ++int64_t GetNumberOfThreads(ProcessHandle process) { ++ // Taken from FreeBSD top (usr.bin/top/machine.c) ++ ++ kvm_t* kd = kvm_open(NULL, "/dev/null", NULL, O_RDONLY, "kvm_open"); ++ if (kd == NULL) ++ return 0; ++ ++ struct kinfo_proc* pbase; ++ int nproc; ++ pbase = kvm_getprocs(kd, KERN_PROC_PID, process, &nproc); ++ if (pbase == NULL) ++ return 0; ++ ++ if (kvm_close(kd) == -1) ++ return 0; ++ ++ return nproc; ++} ++ ++bool GetSystemMemoryInfo(SystemMemoryInfoKB *meminfo) { ++ unsigned int mem_total, mem_free, swap_total, swap_used; ++ size_t length; ++ int pagesizeKB; ++ ++ pagesizeKB = getpagesize() / 1024; ++ ++ length = sizeof(mem_total); ++ if (sysctlbyname("vm.stats.vm.v_page_count", &mem_total, ++ &length, NULL, 0) != 0 || length != sizeof(mem_total)) ++ return false; ++ ++ length = sizeof(mem_free); ++ if (sysctlbyname("vm.stats.vm.v_free_count", &mem_free, &length, NULL, 0) ++ != 0 || length != sizeof(mem_free)) ++ return false; ++ ++ length = sizeof(swap_total); ++ if (sysctlbyname("vm.swap_size", &swap_total, &length, NULL, 0) ++ != 0 || length != sizeof(swap_total)) ++ return false; ++ ++ length = sizeof(swap_used); ++ if (sysctlbyname("vm.swap_anon_use", &swap_used, &length, NULL, 0) ++ != 0 || length != sizeof(swap_used)) ++ return false; ++ ++ meminfo->total = mem_total * pagesizeKB; ++ meminfo->free = mem_free * pagesizeKB; ++ meminfo->swap_total = swap_total * pagesizeKB; ++ meminfo->swap_free = (swap_total - swap_used) * pagesizeKB; ++ ++ return true; ++} ++ ++int ProcessMetrics::GetOpenFdCount() const { ++ struct kinfo_file * kif; ++ int cnt; ++ ++ if ((kif = kinfo_getfile(process_, &cnt)) == NULL) ++ return -1; ++ ++ free(kif); ++ ++ return cnt; ++} ++ ++int ProcessMetrics::GetOpenFdSoftLimit() const { ++ size_t length; ++ int total_count = 0; ++ int mib[] = { CTL_KERN, KERN_MAXFILESPERPROC }; ++ ++ length = sizeof(total_count); ++ ++ if (sysctl(mib, std::size(mib), &total_count, &length, NULL, 0) < 0) { ++ total_count = -1; ++ } ++ ++ return total_count; ++} ++ ++size_t ProcessMetrics::GetResidentSetSize() const { ++ kvm_t *kd = kvm_open(nullptr, "/dev/null", nullptr, O_RDONLY, "kvm_open"); ++ ++ if (kd == nullptr) ++ return 0; ++ ++ struct kinfo_proc *pp; ++ int nproc; ++ ++ if ((pp = kvm_getprocs(kd, KERN_PROC_PID, process_, &nproc)) == nullptr) { ++ kvm_close(kd); ++ return 0; ++ } ++ ++ size_t rss; ++ ++ if (nproc > 0) { ++ rss = pp->ki_rssize << GetPageShift(); ++ } else { ++ rss = 0; ++ } ++ ++ kvm_close(kd); ++ return rss; ++} ++ ++uint64_t ProcessMetrics::GetVmSwapBytes() const { ++ kvm_t *kd = kvm_open(nullptr, "/dev/null", nullptr, O_RDONLY, "kvm_open"); ++ ++ if (kd == nullptr) ++ return 0; ++ ++ struct kinfo_proc *pp; ++ int nproc; ++ ++ if ((pp = kvm_getprocs(kd, KERN_PROC_PID, process_, &nproc)) == nullptr) { ++ kvm_close(kd); ++ return 0; ++ } ++ ++ size_t swrss; ++ ++ if (nproc > 0) { ++ swrss = pp->ki_swrss > pp->ki_rssize ++ ? (pp->ki_swrss - pp->ki_rssize) << GetPageShift() ++ : 0; ++ } else { ++ swrss = 0; ++ } ++ ++ kvm_close(kd); ++ return swrss; ++} ++ ++int ProcessMetrics::GetIdleWakeupsPerSecond() { ++ NOTIMPLEMENTED(); ++ return 0; ++} ++ ++bool GetSystemDiskInfo(SystemDiskInfo* diskinfo) { ++ NOTIMPLEMENTED(); ++ return false; ++} ++ ++bool GetVmStatInfo(VmStatInfo* vmstat) { ++ NOTIMPLEMENTED(); ++ return false; ++} ++ ++SystemDiskInfo::SystemDiskInfo() { ++ reads = 0; ++ reads_merged = 0; ++ sectors_read = 0; ++ read_time = 0; ++ writes = 0; ++ writes_merged = 0; ++ sectors_written = 0; ++ write_time = 0; ++ io = 0; ++ io_time = 0; ++ weighted_io_time = 0; ++} ++ ++SystemDiskInfo::SystemDiskInfo(const SystemDiskInfo& other) = default; ++ ++SystemDiskInfo& SystemDiskInfo::operator=(const SystemDiskInfo&) = default; ++ ++Value SystemDiskInfo::ToValue() const { ++ Value res(Value::Type::DICTIONARY); ++ ++ // Write out uint64_t variables as doubles. ++ // Note: this may discard some precision, but for JS there's no other option. ++ res.SetDoubleKey("reads", static_cast(reads)); ++ res.SetDoubleKey("reads_merged", static_cast(reads_merged)); ++ res.SetDoubleKey("sectors_read", static_cast(sectors_read)); ++ res.SetDoubleKey("read_time", static_cast(read_time)); ++ res.SetDoubleKey("writes", static_cast(writes)); ++ res.SetDoubleKey("writes_merged", static_cast(writes_merged)); ++ res.SetDoubleKey("sectors_written", static_cast(sectors_written)); ++ res.SetDoubleKey("write_time", static_cast(write_time)); ++ res.SetDoubleKey("io", static_cast(io)); ++ res.SetDoubleKey("io_time", static_cast(io_time)); ++ res.SetDoubleKey("weighted_io_time", static_cast(weighted_io_time)); ++ ++ return res; ++} ++ ++Value SystemMemoryInfoKB::ToValue() const { ++ Value res(Value::Type::DICTIONARY); ++ ++ res.SetIntKey("total", total); ++ res.SetIntKey("free", free); ++ res.SetIntKey("available", available); ++ res.SetIntKey("buffers", buffers); ++ res.SetIntKey("cached", cached); ++ res.SetIntKey("active_anon", active_anon); ++ res.SetIntKey("inactive_anon", inactive_anon); ++ res.SetIntKey("active_file", active_file); ++ res.SetIntKey("inactive_file", inactive_file); ++ res.SetIntKey("swap_total", swap_total); ++ res.SetIntKey("swap_free", swap_free); ++ res.SetIntKey("swap_used", swap_total - swap_free); ++ res.SetIntKey("dirty", dirty); ++ res.SetIntKey("reclaimable", reclaimable); ++ ++ return res; ++} ++ ++Value VmStatInfo::ToValue() const { ++ Value res(Value::Type::DICTIONARY); ++ ++ res.SetIntKey("pswpin", pswpin); ++ res.SetIntKey("pswpout", pswpout); ++ res.SetIntKey("pgmajfault", pgmajfault); ++ ++ return res; ++} + } // namespace base diff --git a/devel/electron23/files/patch-base_process_process__metrics__openbsd.cc b/devel/electron23/files/patch-base_process_process__metrics__openbsd.cc new file mode 100644 index 000000000000..70b2aa744c6c --- /dev/null +++ b/devel/electron23/files/patch-base_process_process__metrics__openbsd.cc @@ -0,0 +1,215 @@ +--- base/process/process_metrics_openbsd.cc.orig 2022-09-24 10:57:32 UTC ++++ base/process/process_metrics_openbsd.cc +@@ -6,14 +6,23 @@ + + #include + #include ++#include + #include + #include ++#include + ++#include ++ + #include "base/memory/ptr_util.h" + #include "base/process/process_metrics_iocounters.h" ++#include "base/values.h" ++#include "base/notreached.h" + + namespace base { + ++ProcessMetrics::ProcessMetrics(ProcessHandle process) ++ : process_(process) {} ++ + // static + std::unique_ptr ProcessMetrics::CreateProcessMetrics( + ProcessHandle process) { +@@ -24,49 +33,23 @@ bool ProcessMetrics::GetIOCounters(IoCounters* io_coun + return false; + } + +-static int GetProcessCPU(pid_t pid) { ++TimeDelta ProcessMetrics::GetCumulativeCPUUsage() { + struct kinfo_proc info; +- size_t length; +- int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, pid, +- sizeof(struct kinfo_proc), 0 }; ++ size_t length = sizeof(struct kinfo_proc); ++ struct timeval tv; + +- if (sysctl(mib, std::size(mib), NULL, &length, NULL, 0) < 0) +- return -1; ++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process_, ++ sizeof(struct kinfo_proc), 1 }; + +- mib[5] = (length / sizeof(struct kinfo_proc)); +- + if (sysctl(mib, std::size(mib), &info, &length, NULL, 0) < 0) +- return 0; ++ return TimeDelta(); + +- return info.p_pctcpu; +-} ++ tv.tv_sec = info.p_rtime_sec; ++ tv.tv_usec = info.p_rtime_usec; + +-double ProcessMetrics::GetPlatformIndependentCPUUsage() { +- TimeTicks time = TimeTicks::Now(); +- +- if (last_cpu_time_.is_zero()) { +- // First call, just set the last values. +- last_cpu_time_ = time; +- return 0; +- } +- +- int cpu = GetProcessCPU(process_); +- +- last_cpu_time_ = time; +- double percentage = static_cast((cpu * 100.0) / FSCALE); +- +- return percentage; ++ return Microseconds(TimeValToMicroseconds(tv)); + } + +-TimeDelta ProcessMetrics::GetCumulativeCPUUsage() { +- NOTREACHED(); +- return TimeDelta(); +-} +- +-ProcessMetrics::ProcessMetrics(ProcessHandle process) +- : process_(process), +- last_cpu_(0) {} +- + size_t GetSystemCommitCharge() { + int mib[] = { CTL_VM, VM_METER }; + int pagesize; +@@ -84,6 +67,129 @@ size_t GetSystemCommitCharge() { + pagesize = getpagesize(); + + return mem_total - (mem_free*pagesize) - (mem_inactive*pagesize); ++} ++ ++int ProcessMetrics::GetOpenFdCount() const { ++ struct kinfo_file *files; ++ kvm_t *kd = NULL; ++ int total_count = 0; ++ char errbuf[_POSIX2_LINE_MAX]; ++ ++ if ((kd = kvm_openfiles(NULL, NULL, NULL, KVM_NO_FILES, errbuf)) == NULL) ++ goto out; ++ ++ if ((files = kvm_getfiles(kd, KERN_FILE_BYPID, process_, ++ sizeof(struct kinfo_file), &total_count)) == NULL) { ++ total_count = 0; ++ goto out; ++ } ++ ++ kvm_close(kd); ++ ++out: ++ return total_count; ++} ++ ++int ProcessMetrics::GetOpenFdSoftLimit() const { ++ return GetMaxFds(); ++} ++ ++uint64_t ProcessMetrics::GetVmSwapBytes() const { ++ NOTIMPLEMENTED(); ++ return 0; ++} ++ ++bool GetSystemMemoryInfo(SystemMemoryInfoKB* meminfo) { ++ NOTIMPLEMENTED_LOG_ONCE(); ++ return false; ++} ++ ++SystemDiskInfo::SystemDiskInfo() { ++ reads = 0; ++ reads_merged = 0; ++ sectors_read = 0; ++ read_time = 0; ++ writes = 0; ++ writes_merged = 0; ++ sectors_written = 0; ++ write_time = 0; ++ io = 0; ++ io_time = 0; ++ weighted_io_time = 0; ++} ++ ++SystemDiskInfo::SystemDiskInfo(const SystemDiskInfo& other) = default; ++ ++bool GetSystemDiskInfo(SystemDiskInfo* diskinfo) { ++ NOTIMPLEMENTED(); ++ return false; ++} ++ ++bool GetVmStatInfo(VmStatInfo* vmstat) { ++ NOTIMPLEMENTED(); ++ return false; ++} ++ ++int ProcessMetrics::GetIdleWakeupsPerSecond() { ++ NOTIMPLEMENTED(); ++ return 0; ++} ++ ++Value SystemMemoryInfoKB::ToValue() const { ++ Value res(Value::Type::DICTIONARY); ++ res.SetIntKey("total", total); ++ res.SetIntKey("free", free); ++ res.SetIntKey("available", available); ++ res.SetIntKey("buffers", buffers); ++ res.SetIntKey("cached", cached); ++ res.SetIntKey("active_anon", active_anon); ++ res.SetIntKey("inactive_anon", inactive_anon); ++ res.SetIntKey("active_file", active_file); ++ res.SetIntKey("inactive_file", inactive_file); ++ res.SetIntKey("swap_total", swap_total); ++ res.SetIntKey("swap_free", swap_free); ++ res.SetIntKey("swap_used", swap_total - swap_free); ++ res.SetIntKey("dirty", dirty); ++ res.SetIntKey("reclaimable", reclaimable); ++ ++ NOTIMPLEMENTED(); ++ ++ return res; ++} ++ ++Value VmStatInfo::ToValue() const { ++ Value res(Value::Type::DICTIONARY); ++ res.SetIntKey("pswpin", pswpin); ++ res.SetIntKey("pswpout", pswpout); ++ res.SetIntKey("pgmajfault", pgmajfault); ++ ++ NOTIMPLEMENTED(); ++ ++ return res; ++} ++ ++SystemDiskInfo& SystemDiskInfo::operator=(const SystemDiskInfo&) = default; ++ ++Value SystemDiskInfo::ToValue() const { ++ Value res(Value::Type::DICTIONARY); ++ ++ // Write out uint64_t variables as doubles. ++ // Note: this may discard some precision, but for JS there's no other option. ++ res.SetDoubleKey("reads", static_cast(reads)); ++ res.SetDoubleKey("reads_merged", static_cast(reads_merged)); ++ res.SetDoubleKey("sectors_read", static_cast(sectors_read)); ++ res.SetDoubleKey("read_time", static_cast(read_time)); ++ res.SetDoubleKey("writes", static_cast(writes)); ++ res.SetDoubleKey("writes_merged", static_cast(writes_merged)); ++ res.SetDoubleKey("sectors_written", static_cast(sectors_written)); ++ res.SetDoubleKey("write_time", static_cast(write_time)); ++ res.SetDoubleKey("io", static_cast(io)); ++ res.SetDoubleKey("io_time", static_cast(io_time)); ++ res.SetDoubleKey("weighted_io_time", static_cast(weighted_io_time)); ++ ++ NOTIMPLEMENTED(); ++ ++ return res; + } + + } // namespace base diff --git a/devel/electron23/files/patch-base_process_process__metrics__posix.cc b/devel/electron23/files/patch-base_process_process__metrics__posix.cc new file mode 100644 index 000000000000..9cd1a72c8e2a --- /dev/null +++ b/devel/electron23/files/patch-base_process_process__metrics__posix.cc @@ -0,0 +1,20 @@ +--- base/process/process_metrics_posix.cc.orig 2022-08-31 12:19:35 UTC ++++ base/process/process_metrics_posix.cc +@@ -20,6 +20,8 @@ + + #if BUILDFLAG(IS_APPLE) + #include ++#elif BUILDFLAG(IS_OPENBSD) ++#include + #else + #include + #endif +@@ -135,7 +137,7 @@ size_t ProcessMetrics::GetMallocUsage() { + return stats.size_in_use; + #elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) + return GetMallocUsageMallinfo(); +-#elif BUILDFLAG(IS_FUCHSIA) ++#elif BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + // TODO(fuchsia): Not currently exposed. https://crbug.com/735087. + return 0; + #endif diff --git a/devel/electron23/files/patch-base_process_process__metrics__unittest.cc b/devel/electron23/files/patch-base_process_process__metrics__unittest.cc new file mode 100644 index 000000000000..1e4ff0087053 --- /dev/null +++ b/devel/electron23/files/patch-base_process_process__metrics__unittest.cc @@ -0,0 +1,20 @@ +--- base/process/process_metrics_unittest.cc.orig 2022-09-24 10:57:32 UTC ++++ base/process/process_metrics_unittest.cc +@@ -44,7 +44,7 @@ namespace debug { + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ + BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_WIN) || \ +- BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + + namespace { + +@@ -347,7 +347,7 @@ TEST_F(SystemMetricsTest, ParseVmstat) { + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ + BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_WIN) || \ +- BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + + // Test that ProcessMetrics::GetPlatformIndependentCPUUsage() doesn't return + // negative values when the number of threads running on the process decreases diff --git a/devel/electron23/files/patch-base_process_process__posix.cc b/devel/electron23/files/patch-base_process_process__posix.cc new file mode 100644 index 000000000000..9872810a9d99 --- /dev/null +++ b/devel/electron23/files/patch-base_process_process__posix.cc @@ -0,0 +1,93 @@ +--- base/process/process_posix.cc.orig 2022-08-31 12:19:35 UTC ++++ base/process/process_posix.cc +@@ -25,10 +25,15 @@ + #include "build/build_config.h" + #include "third_party/abseil-cpp/absl/types/optional.h" + +-#if BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + #include + #endif + ++#if defined(OS_BSD) ++#include ++#include ++#endif ++ + #if BUILDFLAG(CLANG_PROFILING) + #include "base/test/clang_profiling.h" + #endif +@@ -95,7 +100,7 @@ bool WaitpidWithTimeout(base::ProcessHandle handle, + return ret_pid > 0; + } + +-#if BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + // Using kqueue on Mac so that we can wait on non-child processes. + // We can't use kqueues on child processes because we need to reap + // our own children using wait. +@@ -200,7 +205,7 @@ bool WaitForExitWithTimeoutImpl(base::ProcessHandle ha + const bool exited = (parent_pid < 0); + + if (!exited && parent_pid != our_pid) { +-#if BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + // On Mac we can wait on non child processes. + return WaitForSingleNonChildProcess(handle, timeout); + #else +@@ -392,7 +397,55 @@ void Process::Exited(int exit_code) const { + + int Process::GetPriority() const { + DCHECK(IsValid()); ++// avoid pledge(2) violation ++#if defined(OS_BSD) ++ return 0; ++#else + return getpriority(PRIO_PROCESS, static_cast(process_)); ++#endif ++} ++ ++Time Process::CreationTime() const { ++// avoid ps pledge in the network process ++#if !defined(OS_BSD) ++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid(), ++ sizeof(struct kinfo_proc), 0 }; ++ struct kinfo_proc *info = nullptr; ++ size_t info_size; ++#endif ++ Time ct = Time(); ++ ++#if !defined(OS_BSD) ++ if (sysctl(mib, std::size(mib), NULL, &info_size, NULL, 0) < 0) ++ goto out; ++ ++ mib[5] = (info_size / sizeof(struct kinfo_proc)); ++ if ((info = reinterpret_cast(malloc(info_size))) == NULL) ++ goto out; ++ ++ if (sysctl(mib, std::size(mib), info, &info_size, NULL, 0) < 0) ++ goto out; ++ ++ ct = Time::FromTimeT(info->p_ustart_sec); ++ ++out: ++ if (info) ++ free(info); ++#endif ++ return ct; ++} ++ ++bool Process::IsProcessBackgrounded() const { ++ return false; ++} ++ ++bool Process::SetProcessBackgrounded(bool value) { ++ return false; ++} ++ ++// static ++bool Process::CanBackgroundProcesses() { ++ return false; + } + + } // namespace base diff --git a/devel/electron23/files/patch-base_process_process__unittest.cc b/devel/electron23/files/patch-base_process_process__unittest.cc new file mode 100644 index 000000000000..7c23a1ea4882 --- /dev/null +++ b/devel/electron23/files/patch-base_process_process__unittest.cc @@ -0,0 +1,11 @@ +--- base/process/process_unittest.cc.orig 2022-07-22 17:30:31 UTC ++++ base/process/process_unittest.cc +@@ -193,7 +193,7 @@ TEST_F(ProcessTest, CreationTimeOtherProcess) { + // was spawned and a time recorded after it was spawned. However, since the + // base::Time and process creation clocks don't match, tolerate some error. + constexpr base::TimeDelta kTolerance = +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // On Linux, process creation time is relative to boot time which has a + // 1-second resolution. Tolerate 1 second for the imprecise boot time and + // 100 ms for the imprecise clock. diff --git a/devel/electron23/files/patch-base_profiler_module__cache.cc b/devel/electron23/files/patch-base_profiler_module__cache.cc new file mode 100644 index 000000000000..49e9bebdb59d --- /dev/null +++ b/devel/electron23/files/patch-base_profiler_module__cache.cc @@ -0,0 +1,11 @@ +--- base/profiler/module_cache.cc.orig 2022-08-31 12:19:35 UTC ++++ base/profiler/module_cache.cc +@@ -34,7 +34,7 @@ struct ModuleAddressCompare { + + std::string TransformModuleIDToBreakpadFormat(StringPiece module_id) { + std::string mangled_id(module_id); +-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Linux ELF module IDs are 160bit integers, which we need to mangle + // down to 128bit integers to match the id that Breakpad outputs. + // Example on version '66.0.3359.170' x64: diff --git a/devel/electron23/files/patch-base_profiler_sampling__profiler__thread__token.cc b/devel/electron23/files/patch-base_profiler_sampling__profiler__thread__token.cc new file mode 100644 index 000000000000..d41258e8bd74 --- /dev/null +++ b/devel/electron23/files/patch-base_profiler_sampling__profiler__thread__token.cc @@ -0,0 +1,20 @@ +--- base/profiler/sampling_profiler_thread_token.cc.orig 2023-02-01 18:43:07 UTC ++++ base/profiler/sampling_profiler_thread_token.cc +@@ -6,7 +6,7 @@ + + #include "build/build_config.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include + + #include "base/profiler/stack_base_address_posix.h" +@@ -18,7 +18,7 @@ SamplingProfilerThreadToken GetSamplingProfilerCurrent + PlatformThreadId id = PlatformThread::CurrentId(); + #if BUILDFLAG(IS_ANDROID) + return {id, pthread_self()}; +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + absl::optional maybe_stack_base = + GetThreadStackBaseAddress(id, pthread_self()); + return {id, maybe_stack_base}; diff --git a/devel/electron23/files/patch-base_profiler_sampling__profiler__thread__token.h b/devel/electron23/files/patch-base_profiler_sampling__profiler__thread__token.h new file mode 100644 index 000000000000..af658eb9b446 --- /dev/null +++ b/devel/electron23/files/patch-base_profiler_sampling__profiler__thread__token.h @@ -0,0 +1,20 @@ +--- base/profiler/sampling_profiler_thread_token.h.orig 2023-02-01 18:43:07 UTC ++++ base/profiler/sampling_profiler_thread_token.h +@@ -12,7 +12,7 @@ + + #if BUILDFLAG(IS_ANDROID) + #include +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include + #endif + +@@ -26,7 +26,7 @@ struct SamplingProfilerThreadToken { + PlatformThreadId id; + #if BUILDFLAG(IS_ANDROID) + pthread_t pthread_id; +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Due to the sandbox, we can only retrieve the stack base address for the + // current thread. We must grab it during + // GetSamplingProfilerCurrentThreadToken() and not try to get it later. diff --git a/devel/electron23/files/patch-base_profiler_stack__base__address__posix.cc b/devel/electron23/files/patch-base_profiler_stack__base__address__posix.cc new file mode 100644 index 000000000000..30a8bf37fab5 --- /dev/null +++ b/devel/electron23/files/patch-base_profiler_stack__base__address__posix.cc @@ -0,0 +1,50 @@ +--- base/profiler/stack_base_address_posix.cc.orig 2023-02-01 18:43:07 UTC ++++ base/profiler/stack_base_address_posix.cc +@@ -17,6 +17,10 @@ + #include "base/files/scoped_file.h" + #endif + ++#if BUILDFLAG(IS_BSD) ++#include ++#endif ++ + #if BUILDFLAG(IS_CHROMEOS) + extern "C" void* __libc_stack_end; + #endif +@@ -45,7 +49,21 @@ absl::optional GetAndroidMainThreadStackBas + + #if !BUILDFLAG(IS_LINUX) + uintptr_t GetThreadStackBaseAddressImpl(pthread_t pthread_id) { ++#if BUILDFLAG(IS_OPENBSD) ++ stack_t ss; ++ void *address; ++ size_t size; ++ if (pthread_stackseg_np(pthread_id, &ss) != 0) ++ return 0; ++ size = ss.ss_size; ++ address = (void*)((size_t) ss.ss_sp - ss.ss_size); ++#else + pthread_attr_t attr; ++#if BUILDFLAG(IS_FREEBSD) ++ int result; ++ pthread_attr_init(&attr); ++ pthread_attr_get_np(pthread_id, &attr); ++#else + // pthread_getattr_np will crash on ChromeOS & Linux if we are in the sandbox + // and pthread_id refers to a different thread, due to the use of + // sched_getaffinity(). +@@ -58,12 +76,14 @@ uintptr_t GetThreadStackBaseAddressImpl(pthread_t pthr + << logging::SystemErrorCodeToString(result); + // See crbug.com/617730 for limitations of this approach on Linux-like + // systems. ++#endif + void* address; + size_t size; + result = pthread_attr_getstack(&attr, &address, &size); + CHECK_EQ(result, 0) << "pthread_attr_getstack returned " + << logging::SystemErrorCodeToString(result); + pthread_attr_destroy(&attr); ++#endif + const uintptr_t base_address = reinterpret_cast(address) + size; + return base_address; + } diff --git a/devel/electron23/files/patch-base_profiler_stack__sampling__profiler__test__util.cc b/devel/electron23/files/patch-base_profiler_stack__sampling__profiler__test__util.cc new file mode 100644 index 000000000000..ceb87320e758 --- /dev/null +++ b/devel/electron23/files/patch-base_profiler_stack__sampling__profiler__test__util.cc @@ -0,0 +1,11 @@ +--- base/profiler/stack_sampling_profiler_test_util.cc.orig 2023-02-01 18:43:07 UTC ++++ base/profiler/stack_sampling_profiler_test_util.cc +@@ -33,7 +33,7 @@ + // Fortunately, it provides _alloca, which functions identically. + #include + #define alloca _alloca +-#else ++#elif !BUILDFLAG(IS_BSD) + #include + #endif + diff --git a/devel/electron23/files/patch-base_profiler_stack__sampling__profiler__unittest.cc b/devel/electron23/files/patch-base_profiler_stack__sampling__profiler__unittest.cc new file mode 100644 index 000000000000..d739c9137c77 --- /dev/null +++ b/devel/electron23/files/patch-base_profiler_stack__sampling__profiler__unittest.cc @@ -0,0 +1,11 @@ +--- base/profiler/stack_sampling_profiler_unittest.cc.orig 2022-02-28 16:54:41 UTC ++++ base/profiler/stack_sampling_profiler_unittest.cc +@@ -41,7 +41,7 @@ + #include + #include + #include +-#else ++#elif !BUILDFLAG(IS_BSD) + #include + #endif + diff --git a/devel/electron23/files/patch-base_profiler_thread__delegate__posix.cc b/devel/electron23/files/patch-base_profiler_thread__delegate__posix.cc new file mode 100644 index 000000000000..568e6236f393 --- /dev/null +++ b/devel/electron23/files/patch-base_profiler_thread__delegate__posix.cc @@ -0,0 +1,20 @@ +--- base/profiler/thread_delegate_posix.cc.orig 2022-10-24 13:33:33 UTC ++++ base/profiler/thread_delegate_posix.cc +@@ -13,7 +13,7 @@ + #include "build/build_config.h" + #include "third_party/abseil-cpp/absl/types/optional.h" + +-#if !(BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) ++#if !(BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) + #include "base/profiler/stack_base_address_posix.h" + #endif + +@@ -22,7 +22,7 @@ namespace base { + std::unique_ptr ThreadDelegatePosix::Create( + SamplingProfilerThreadToken thread_token) { + absl::optional base_address; +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + base_address = thread_token.stack_base_address; + #else + base_address = diff --git a/devel/electron23/files/patch-base_rand__util.h b/devel/electron23/files/patch-base_rand__util.h new file mode 100644 index 000000000000..63ac19b02681 --- /dev/null +++ b/devel/electron23/files/patch-base_rand__util.h @@ -0,0 +1,11 @@ +--- base/rand_util.h.orig 2022-11-30 08:12:58 UTC ++++ base/rand_util.h +@@ -117,7 +117,7 @@ void RandomShuffle(Itr first, Itr last) { + std::shuffle(first, last, RandomBitGenerator()); + } + +-#if BUILDFLAG(IS_POSIX) ++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_BSD) + BASE_EXPORT int GetUrandomFD(); + #endif + diff --git a/devel/electron23/files/patch-base_rand__util__posix.cc b/devel/electron23/files/patch-base_rand__util__posix.cc new file mode 100644 index 000000000000..b6df31cda061 --- /dev/null +++ b/devel/electron23/files/patch-base_rand__util__posix.cc @@ -0,0 +1,62 @@ +--- base/rand_util_posix.cc.orig 2022-11-30 08:12:58 UTC ++++ base/rand_util_posix.cc +@@ -22,7 +22,7 @@ + #include "base/time/time.h" + #include "build/build_config.h" + +-#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !BUILDFLAG(IS_NACL) ++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_BSD) + #include "third_party/lss/linux_syscall_support.h" + #elif BUILDFLAG(IS_MAC) + // TODO(crbug.com/995996): Waiting for this header to appear in the iOS SDK. +@@ -46,6 +46,7 @@ static constexpr int kOpenFlags = O_RDONLY; + static constexpr int kOpenFlags = O_RDONLY | O_CLOEXEC; + #endif + ++#if !BUILDFLAG(IS_BSD) + // We keep the file descriptor for /dev/urandom around so we don't need to + // reopen it (which is expensive), and since we may not even be able to reopen + // it if we are later put in a sandbox. This class wraps the file descriptor so +@@ -63,10 +64,11 @@ class URandomFd { + private: + const int fd_; + }; ++#endif + + #if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ + BUILDFLAG(IS_ANDROID)) && \ +- !BUILDFLAG(IS_NACL) ++ !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_BSD) + // TODO(pasko): Unify reading kernel version numbers in: + // mojo/core/channel_linux.cc + // chrome/browser/android/seccomp_support_detector.cc +@@ -176,6 +178,7 @@ bool UseBoringSSLForRandBytes() { + namespace { + + void RandBytes(void* output, size_t output_length, bool avoid_allocation) { ++#if !BUILDFLAG(IS_BSD) + #if !BUILDFLAG(IS_NACL) + // The BoringSSL experiment takes priority over everything else. + if (!avoid_allocation && internal::UseBoringSSLForRandBytes()) { +@@ -214,6 +217,9 @@ void RandBytes(void* output, size_t output_length, boo + const bool success = + ReadFromFD(urandom_fd, static_cast(output), output_length); + CHECK(success); ++#else ++ arc4random_buf(static_cast(output), output_length); ++#endif + } + + } // namespace +@@ -233,9 +239,11 @@ void RandBytes(void* output, size_t output_length) { + RandBytes(output, output_length, /*avoid_allocation=*/false); + } + ++#if !BUILDFLAG(IS_BSD) + int GetUrandomFD() { + static NoDestructor urandom_fd; + return urandom_fd->fd(); + } ++#endif + + } // namespace base diff --git a/devel/electron23/files/patch-base_strings_safe__sprintf__unittest.cc b/devel/electron23/files/patch-base_strings_safe__sprintf__unittest.cc new file mode 100644 index 000000000000..83ee17065193 --- /dev/null +++ b/devel/electron23/files/patch-base_strings_safe__sprintf__unittest.cc @@ -0,0 +1,18 @@ +--- base/strings/safe_sprintf_unittest.cc.orig 2022-11-30 08:12:58 UTC ++++ base/strings/safe_sprintf_unittest.cc +@@ -740,6 +740,7 @@ TEST(SafeSPrintfTest, EmbeddedNul) { + #endif + } + ++#if !BUILDFLAG(IS_BSD) + TEST(SafeSPrintfTest, EmitNULL) { + char buf[40]; + #if defined(__GNUC__) +@@ -756,6 +757,7 @@ TEST(SafeSPrintfTest, EmitNULL) { + #pragma GCC diagnostic pop + #endif + } ++#endif + + TEST(SafeSPrintfTest, PointerSize) { + // The internal data representation is a 64bit value, independent of the diff --git a/devel/electron23/files/patch-base_synchronization_lock__impl.h b/devel/electron23/files/patch-base_synchronization_lock__impl.h new file mode 100644 index 000000000000..baac846e9d78 --- /dev/null +++ b/devel/electron23/files/patch-base_synchronization_lock__impl.h @@ -0,0 +1,23 @@ +--- base/synchronization/lock_impl.h.orig 2022-06-17 14:20:10 UTC ++++ base/synchronization/lock_impl.h +@@ -107,6 +107,10 @@ void LockImpl::Unlock() { + } + + #elif BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA) ++#if BUILDFLAG(IS_FREEBSD) ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wthread-safety-analysis" ++#endif + + #if DCHECK_IS_ON() + BASE_EXPORT void dcheck_trylock_result(int rv); +@@ -127,6 +131,9 @@ void LockImpl::Unlock() { + dcheck_unlock_result(rv); + #endif + } ++#if BUILDFLAG(IS_FREEBSD) ++#pragma GCC diagnostic pop ++#endif + #endif + + // This is an implementation used for AutoLock templated on the lock type. diff --git a/devel/electron23/files/patch-base_syslog__logging.cc b/devel/electron23/files/patch-base_syslog__logging.cc new file mode 100644 index 000000000000..5c1921e82d4a --- /dev/null +++ b/devel/electron23/files/patch-base_syslog__logging.cc @@ -0,0 +1,20 @@ +--- base/syslog_logging.cc.orig 2022-02-28 16:54:41 UTC ++++ base/syslog_logging.cc +@@ -15,7 +15,7 @@ + #include "base/strings/string_util.h" + #include "base/win/scoped_handle.h" + #include "base/win/win_util.h" +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // defines LOG_INFO, LOG_WARNING macros that could conflict with + // base::LOG_INFO, base::LOG_WARNING. + #include +@@ -147,7 +147,7 @@ EventLogMessage::~EventLogMessage() { + + if (user_sid != nullptr) + ::LocalFree(user_sid); +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + const char kEventSource[] = "chrome"; + openlog(kEventSource, LOG_NOWAIT | LOG_PID, LOG_USER); + // We can't use the defined names for the logging severity from syslog.h diff --git a/devel/electron23/files/patch-base_system_sys__info.cc b/devel/electron23/files/patch-base_system_sys__info.cc new file mode 100644 index 000000000000..331d20e23b87 --- /dev/null +++ b/devel/electron23/files/patch-base_system_sys__info.cc @@ -0,0 +1,11 @@ +--- base/system/sys_info.cc.orig 2023-02-01 18:43:07 UTC ++++ base/system/sys_info.cc +@@ -107,7 +107,7 @@ std::string SysInfo::HardwareModelName() { + #endif + + void SysInfo::GetHardwareInfo(base::OnceCallback callback) { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + constexpr base::TaskTraits kTraits = {base::MayBlock()}; + #else + constexpr base::TaskTraits kTraits = {}; diff --git a/devel/electron23/files/patch-base_system_sys__info.h b/devel/electron23/files/patch-base_system_sys__info.h new file mode 100644 index 000000000000..e42872a8523d --- /dev/null +++ b/devel/electron23/files/patch-base_system_sys__info.h @@ -0,0 +1,20 @@ +--- base/system/sys_info.h.orig 2023-02-01 18:43:07 UTC ++++ base/system/sys_info.h +@@ -246,6 +246,8 @@ class BASE_EXPORT SysInfo { + static void SetIsCpuSecurityMitigationsEnabled(bool is_enabled); + #endif + ++ static uint64_t MaxSharedMemorySize(); ++ + private: + FRIEND_TEST_ALL_PREFIXES(SysInfoTest, AmountOfAvailablePhysicalMemory); + FRIEND_TEST_ALL_PREFIXES(debug::SystemMetricsTest, ParseMeminfo); +@@ -257,7 +259,7 @@ class BASE_EXPORT SysInfo { + static HardwareInfo GetHardwareInfoSync(); + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \ +- BUILDFLAG(IS_AIX) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + static uint64_t AmountOfAvailablePhysicalMemory( + const SystemMemoryInfoKB& meminfo); + #endif diff --git a/devel/electron23/files/patch-base_system_sys__info__freebsd.cc b/devel/electron23/files/patch-base_system_sys__info__freebsd.cc new file mode 100644 index 000000000000..81e026100278 --- /dev/null +++ b/devel/electron23/files/patch-base_system_sys__info__freebsd.cc @@ -0,0 +1,115 @@ +--- base/system/sys_info_freebsd.cc.orig 2022-09-01 17:22:07 UTC ++++ base/system/sys_info_freebsd.cc +@@ -9,30 +9,106 @@ + #include + + #include "base/notreached.h" ++#include "base/process/process_metrics.h" ++#include "base/strings/string_util.h" + + namespace base { + +-int64_t SysInfo::AmountOfPhysicalMemoryImpl() { +- int pages, page_size; ++int SysInfo::NumberOfProcessors() { ++ int mib[] = {CTL_HW, HW_NCPU}; ++ int ncpu; ++ size_t size = sizeof(ncpu); ++ if (sysctl(mib, std::size(mib), &ncpu, &size, NULL, 0) < 0) { ++ NOTREACHED(); ++ return 1; ++ } ++ return ncpu; ++} ++ ++uint64_t SysInfo::AmountOfPhysicalMemoryImpl() { ++ int pages, page_size, r = 0; + size_t size = sizeof(pages); +- sysctlbyname("vm.stats.vm.v_page_count", &pages, &size, NULL, 0); +- sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0); +- if (pages == -1 || page_size == -1) { ++ ++ if (r == 0) ++ r = sysctlbyname("vm.stats.vm.v_page_count", &pages, &size, NULL, 0); ++ if (r == 0) ++ r = sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0); ++ ++ if (r == -1) { + NOTREACHED(); + return 0; + } +- return static_cast(pages) * page_size; ++ ++ return static_cast(pages) * page_size; + } + ++uint64_t SysInfo::AmountOfAvailablePhysicalMemoryImpl() { ++ int page_size, r = 0; ++ unsigned int pgfree, pginact, pgcache; ++ size_t size = sizeof(page_size); ++ size_t szpg = sizeof(pgfree); ++ ++ if (r == 0) ++ r = sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0); ++ if (r == 0) ++ r = sysctlbyname("vm.stats.vm.v_free_count", &pgfree, &szpg, NULL, 0); ++ if (r == 0) ++ r = sysctlbyname("vm.stats.vm.v_inactive_count", &pginact, &szpg, NULL, 0); ++ if (r == 0) ++ r = sysctlbyname("vm.stats.vm.v_cache_count", &pgcache, &szpg, NULL, 0); ++ ++ if (r == -1) { ++ NOTREACHED(); ++ return 0; ++ } ++ ++ return static_cast((pgfree + pginact + pgcache) * page_size); ++} ++ + // static ++uint64_t SysInfo::AmountOfAvailablePhysicalMemory(const SystemMemoryInfoKB& info) { ++ uint64_t res_kb = info.available != 0 ++ ? info.available - info.active_file ++ : info.free + info.reclaimable + info.inactive_file; ++ return res_kb * 1024; ++} ++ ++// static ++std::string SysInfo::CPUModelName() { ++ int mib[] = { CTL_HW, HW_MODEL }; ++ char name[256]; ++ size_t size = std::size(name); ++ ++ if (sysctl(mib, std::size(mib), &name, &size, NULL, 0) == 0) { ++ return name; ++ } ++ ++ return std::string(); ++} ++ ++// static + uint64_t SysInfo::MaxSharedMemorySize() { + size_t limit; + size_t size = sizeof(limit); ++ + if (sysctlbyname("kern.ipc.shmmax", &limit, &size, NULL, 0) < 0) { + NOTREACHED(); + return 0; + } ++ + return static_cast(limit); ++} ++ ++SysInfo::HardwareInfo SysInfo::GetHardwareInfoSync() { ++ HardwareInfo info; ++ ++ info.manufacturer = "FreeBSD"; ++ info.model = HardwareModelName(); ++ ++ DCHECK(IsStringUTF8(info.manufacturer)); ++ DCHECK(IsStringUTF8(info.model)); ++ ++ return info; + } + + } // namespace base diff --git a/devel/electron23/files/patch-base_system_sys__info__openbsd.cc b/devel/electron23/files/patch-base_system_sys__info__openbsd.cc new file mode 100644 index 000000000000..4e9997823827 --- /dev/null +++ b/devel/electron23/files/patch-base_system_sys__info__openbsd.cc @@ -0,0 +1,94 @@ +--- base/system/sys_info_openbsd.cc.orig 2022-08-31 12:19:35 UTC ++++ base/system/sys_info_openbsd.cc +@@ -11,6 +11,7 @@ + #include + + #include "base/notreached.h" ++#include "base/strings/string_util.h" + + namespace { + +@@ -26,9 +27,15 @@ uint64_t AmountOfMemory(int pages_name) { + + namespace base { + ++// pledge(2) ++int64_t aofpmem = 0; ++int64_t aofapmem = 0; ++int64_t shmmax = 0; ++char cpumodel[256]; ++ + // static + int SysInfo::NumberOfProcessors() { +- int mib[] = {CTL_HW, HW_NCPU}; ++ int mib[] = {CTL_HW, HW_NCPUONLINE}; + int ncpu; + size_t size = sizeof(ncpu); + if (sysctl(mib, std::size(mib), &ncpu, &size, NULL, 0) < 0) { +@@ -40,10 +47,26 @@ int SysInfo::NumberOfProcessors() { + + // static + uint64_t SysInfo::AmountOfPhysicalMemoryImpl() { +- return AmountOfMemory(_SC_PHYS_PAGES); ++ // pledge(2) ++ if (!aofpmem) ++ aofpmem = AmountOfMemory(_SC_PHYS_PAGES); ++ return aofpmem; + } + + // static ++std::string SysInfo::CPUModelName() { ++ int mib[] = {CTL_HW, HW_MODEL}; ++ size_t len = std::size(cpumodel); ++ ++ if (cpumodel[0] == '\0') { ++ if (sysctl(mib, std::size(mib), cpumodel, &len, NULL, 0) < 0) ++ return std::string(); ++ } ++ ++ return std::string(cpumodel, len - 1); ++} ++ ++// static + uint64_t SysInfo::AmountOfAvailablePhysicalMemoryImpl() { + // We should add inactive file-backed memory also but there is no such + // information from OpenBSD unfortunately. +@@ -55,23 +78,28 @@ uint64_t SysInfo::MaxSharedMemorySize() { + int mib[] = {CTL_KERN, KERN_SHMINFO, KERN_SHMINFO_SHMMAX}; + size_t limit; + size_t size = sizeof(limit); ++ // pledge(2) ++ if (shmmax) ++ goto out; + if (sysctl(mib, std::size(mib), &limit, &size, NULL, 0) < 0) { + NOTREACHED(); + return 0; + } +- return static_cast(limit); ++ shmmax = static_cast(limit); ++out: ++ return shmmax; + } + + // static +-std::string SysInfo::CPUModelName() { +- int mib[] = {CTL_HW, HW_MODEL}; +- char name[256]; +- size_t len = std::size(name); +- if (sysctl(mib, std::size(mib), name, &len, NULL, 0) < 0) { +- NOTREACHED(); +- return std::string(); +- } +- return name; ++SysInfo::HardwareInfo SysInfo::GetHardwareInfoSync() { ++ HardwareInfo info; ++ // Set the manufacturer to "OpenBSD" and the model to ++ // an empty string. ++ info.manufacturer = "OpenBSD"; ++ info.model = HardwareModelName(); ++ DCHECK(IsStringUTF8(info.manufacturer)); ++ DCHECK(IsStringUTF8(info.model)); ++ return info; + } + + } // namespace base diff --git a/devel/electron23/files/patch-base_system_sys__info__posix.cc b/devel/electron23/files/patch-base_system_sys__info__posix.cc new file mode 100644 index 000000000000..c493bf3a554f --- /dev/null +++ b/devel/electron23/files/patch-base_system_sys__info__posix.cc @@ -0,0 +1,26 @@ +--- base/system/sys_info_posix.cc.orig 2023-02-01 18:43:07 UTC ++++ base/system/sys_info_posix.cc +@@ -159,12 +159,12 @@ int NumberOfProcessors() { + + } // namespace internal + +-#if !BUILDFLAG(IS_OPENBSD) ++#if !BUILDFLAG(IS_BSD) + int SysInfo::NumberOfProcessors() { + static int number_of_processors = internal::NumberOfProcessors(); + return number_of_processors; + } +-#endif // !BUILDFLAG(IS_OPENBSD) ++#endif // !BUILDFLAG(IS_BSD) + + // static + uint64_t SysInfo::AmountOfVirtualMemory() { +@@ -254,6 +254,8 @@ std::string SysInfo::OperatingSystemArchitecture() { + arch = "x86"; + } else if (arch == "amd64") { + arch = "x86_64"; ++ } else if (arch == "arm64") { ++ arch = "aarch64"; + } else if (std::string(info.sysname) == "AIX") { + arch = "ppc64"; + } diff --git a/devel/electron23/files/patch-base_system_sys__info__unittest.cc b/devel/electron23/files/patch-base_system_sys__info__unittest.cc new file mode 100644 index 000000000000..654db74237b7 --- /dev/null +++ b/devel/electron23/files/patch-base_system_sys__info__unittest.cc @@ -0,0 +1,20 @@ +--- base/system/sys_info_unittest.cc.orig 2023-02-01 18:43:07 UTC ++++ base/system/sys_info_unittest.cc +@@ -259,12 +259,16 @@ TEST_F(SysInfoTest, GetHardwareInfo) { + EXPECT_TRUE(IsStringUTF8(hardware_info->model)); + bool empty_result_expected = + #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_WIN) || \ +- BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || \ ++ BUILDFLAG(IS_BSD) + false; + #else + true; + #endif + EXPECT_EQ(hardware_info->manufacturer.empty(), empty_result_expected); ++#if BUILDFLAG(IS_BSD) ++ empty_result_expected = true; ++#endif + EXPECT_EQ(hardware_info->model.empty(), empty_result_expected); + } + diff --git a/devel/electron23/files/patch-base_task_thread__pool_environment__config__unittest.cc b/devel/electron23/files/patch-base_task_thread__pool_environment__config__unittest.cc new file mode 100644 index 000000000000..abb639bc986d --- /dev/null +++ b/devel/electron23/files/patch-base_task_thread__pool_environment__config__unittest.cc @@ -0,0 +1,11 @@ +--- base/task/thread_pool/environment_config_unittest.cc.orig 2022-08-31 12:19:35 UTC ++++ base/task/thread_pool/environment_config_unittest.cc +@@ -15,7 +15,7 @@ TEST(ThreadPoolEnvironmentConfig, CanUseBackgroundPrio + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) + EXPECT_TRUE(CanUseBackgroundThreadTypeForWorkerThread()); + #elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || \ +- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_NACL) ++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_NACL) || BUILDFLAG(IS_BSD) + EXPECT_FALSE(CanUseBackgroundThreadTypeForWorkerThread()); + #else + #error Platform doesn't match any block diff --git a/devel/electron23/files/patch-base_test_launcher_test__launcher.cc b/devel/electron23/files/patch-base_test_launcher_test__launcher.cc new file mode 100644 index 000000000000..5aad424d18ea --- /dev/null +++ b/devel/electron23/files/patch-base_test_launcher_test__launcher.cc @@ -0,0 +1,10 @@ +--- base/test/launcher/test_launcher.cc.orig 2023-02-01 18:43:08 UTC ++++ base/test/launcher/test_launcher.cc +@@ -66,6 +66,7 @@ + #include "third_party/libxml/chromium/libxml_utils.h" + + #if BUILDFLAG(IS_POSIX) ++#include + #include + + #include "base/files/file_descriptor_watcher_posix.h" diff --git a/devel/electron23/files/patch-base_test_test__file__util__linux.cc b/devel/electron23/files/patch-base_test_test__file__util__linux.cc new file mode 100644 index 000000000000..21b4b25775a0 --- /dev/null +++ b/devel/electron23/files/patch-base_test_test__file__util__linux.cc @@ -0,0 +1,13 @@ +--- base/test/test_file_util_linux.cc.orig 2022-02-28 16:54:41 UTC ++++ base/test/test_file_util_linux.cc +@@ -54,8 +54,10 @@ bool EvictFileFromSystemCache(const FilePath& file) { + return false; + if (fdatasync(fd.get()) != 0) + return false; ++#if !defined(OS_BSD) + if (posix_fadvise(fd.get(), 0, 0, POSIX_FADV_DONTNEED) != 0) + return false; ++#endif + return true; + } + diff --git a/devel/electron23/files/patch-base_test_test__file__util__posix.cc b/devel/electron23/files/patch-base_test_test__file__util__posix.cc new file mode 100644 index 000000000000..37c9bbbb70ec --- /dev/null +++ b/devel/electron23/files/patch-base_test_test__file__util__posix.cc @@ -0,0 +1,11 @@ +--- base/test/test_file_util_posix.cc.orig 2022-02-28 16:54:41 UTC ++++ base/test/test_file_util_posix.cc +@@ -88,7 +88,7 @@ void SyncPageCacheToDisk() { + } + + #if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_APPLE) && \ +- !BUILDFLAG(IS_ANDROID) ++ !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_BSD) + bool EvictFileFromSystemCache(const FilePath& file) { + // There doesn't seem to be a POSIX way to cool the disk cache. + NOTIMPLEMENTED(); diff --git a/devel/electron23/files/patch-base_threading_platform__thread__linux.cc b/devel/electron23/files/patch-base_threading_platform__thread__linux.cc new file mode 100644 index 000000000000..4ea10c29b58b --- /dev/null +++ b/devel/electron23/files/patch-base_threading_platform__thread__linux.cc @@ -0,0 +1,84 @@ +--- base/threading/platform_thread_linux.cc.orig 2023-02-01 18:43:08 UTC ++++ base/threading/platform_thread_linux.cc +@@ -30,7 +30,9 @@ + + #if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_AIX) + #include ++#if !BUILDFLAG(IS_BSD) + #include ++#endif + #include + #include + #include +@@ -139,7 +141,7 @@ long sched_setattr(pid_t pid, + #endif // !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_AIX) + #endif // BUILDFLAG(IS_CHROMEOS) + +-#if !BUILDFLAG(IS_NACL) ++#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_BSD) + const FilePath::CharType kCgroupDirectory[] = + FILE_PATH_LITERAL("/sys/fs/cgroup"); + +@@ -313,7 +315,7 @@ void SetThreadCgroupsForThreadType(PlatformThreadId th + namespace internal { + + namespace { +-#if !BUILDFLAG(IS_NACL) ++#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_BSD) + const struct sched_param kRealTimePrio = {8}; + #endif + } // namespace +@@ -340,7 +342,7 @@ const ThreadTypeToNiceValuePair kThreadTypeToNiceValue + }; + + bool CanSetThreadTypeToRealtimeAudio() { +-#if !BUILDFLAG(IS_NACL) ++#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_BSD) + // A non-zero soft-limit on RLIMIT_RTPRIO is required to be allowed to invoke + // pthread_setschedparam in SetCurrentThreadTypeForPlatform(). + struct rlimit rlim; +@@ -352,7 +354,7 @@ bool CanSetThreadTypeToRealtimeAudio() { + + bool SetCurrentThreadTypeForPlatform(ThreadType thread_type, + MessagePumpType pump_type_hint) { +-#if !BUILDFLAG(IS_NACL) ++#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_BSD) + const PlatformThreadId tid = PlatformThread::CurrentId(); + + if (g_thread_type_delegate && +@@ -378,7 +380,7 @@ bool SetCurrentThreadTypeForPlatform(ThreadType thread + + absl::optional + GetCurrentThreadPriorityForPlatformForTest() { +-#if !BUILDFLAG(IS_NACL) ++#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_BSD) + int maybe_sched_rr = 0; + struct sched_param maybe_realtime_prio = {0}; + if (pthread_getschedparam(pthread_self(), &maybe_sched_rr, +@@ -397,7 +399,7 @@ GetCurrentThreadPriorityForPlatformForTest() { + void PlatformThread::SetName(const std::string& name) { + ThreadIdNameManager::GetInstance()->SetName(name); + +-#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_AIX) ++#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_AIX) && !BUILDFLAG(IS_BSD) + // On linux we can get the thread names to show up in the debugger by setting + // the process name for the LWP. We don't want to do this for the main + // thread because that would rename the process, causing tools like killall +@@ -417,7 +419,7 @@ void PlatformThread::SetName(const std::string& name) + #endif // !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_AIX) + } + +-#if !BUILDFLAG(IS_NACL) ++#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_BSD) + // static + void PlatformThread::SetThreadTypeDelegate(ThreadTypeDelegate* delegate) { + // A component cannot override a delegate set by another component, thus +@@ -428,7 +430,7 @@ void PlatformThread::SetThreadTypeDelegate(ThreadTypeD + } + #endif + +-#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_AIX) ++#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_AIX) && !BUILDFLAG(IS_BSD) + // static + void PlatformThread::SetThreadType(ProcessId process_id, + PlatformThreadId thread_id, diff --git a/devel/electron23/files/patch-base_threading_platform__thread__posix.cc b/devel/electron23/files/patch-base_threading_platform__thread__posix.cc new file mode 100644 index 000000000000..0d4b2c3c5e79 --- /dev/null +++ b/devel/electron23/files/patch-base_threading_platform__thread__posix.cc @@ -0,0 +1,21 @@ +--- base/threading/platform_thread_posix.cc.orig 2022-11-30 08:12:58 UTC ++++ base/threading/platform_thread_posix.cc +@@ -78,7 +78,7 @@ void* ThreadFunc(void* params) { + if (!thread_params->joinable) + base::DisallowSingleton(); + +-#if !BUILDFLAG(IS_NACL) ++#if !BUILDFLAG(IS_NACL) && !BUILDFLAG(IS_BSD) + #if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) && BUILDFLAG(STARSCAN) + partition_alloc::internal::PCScan::NotifyThreadCreated( + partition_alloc::internal::GetStackPointer()); +@@ -380,6 +380,9 @@ void SetCurrentThreadTypeImpl(ThreadType thread_type, + MessagePumpType pump_type_hint) { + #if BUILDFLAG(IS_NACL) + NOTIMPLEMENTED(); ++// avoid pledge(2) violation ++#elif BUILDFLAG(IS_BSD) ++ NOTIMPLEMENTED(); + #else + if (internal::SetCurrentThreadTypeForPlatform(thread_type, pump_type_hint)) + return; diff --git a/devel/electron23/files/patch-base_threading_platform__thread__unittest.cc b/devel/electron23/files/patch-base_threading_platform__thread__unittest.cc new file mode 100644 index 000000000000..678474ef1de8 --- /dev/null +++ b/devel/electron23/files/patch-base_threading_platform__thread__unittest.cc @@ -0,0 +1,38 @@ +--- base/threading/platform_thread_unittest.cc.orig 2023-02-01 18:43:08 UTC ++++ base/threading/platform_thread_unittest.cc +@@ -31,7 +31,7 @@ + #include "base/time/time.h" + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include + #include + #include +@@ -422,7 +422,7 @@ TEST(PlatformThreadTest, + // and hardcodes what we know. Please inform scheduler-dev@chromium.org if this + // proprerty changes for a given platform. + TEST(PlatformThreadTest, CanChangeThreadType) { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // On Ubuntu, RLIMIT_NICE and RLIMIT_RTPRIO are 0 by default, so we won't be + // able to increase priority to any level. + constexpr bool kCanIncreasePriority = false; +@@ -696,12 +696,16 @@ INSTANTIATE_TEST_SUITE_P( + + #endif // BUILDFLAG(IS_APPLE) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + + namespace { + + bool IsTidCacheCorrect() { ++#if BUILDFLAG(IS_BSD) ++ return PlatformThread::CurrentId() == reinterpret_cast(pthread_self()); ++#else + return PlatformThread::CurrentId() == syscall(__NR_gettid); ++#endif + } + + void* CheckTidCacheCorrectWrapper(void*) { diff --git a/devel/electron23/files/patch-base_trace__event_malloc__dump__provider.cc b/devel/electron23/files/patch-base_trace__event_malloc__dump__provider.cc new file mode 100644 index 000000000000..4d0c036a3550 --- /dev/null +++ b/devel/electron23/files/patch-base_trace__event_malloc__dump__provider.cc @@ -0,0 +1,30 @@ +--- base/trace_event/malloc_dump_provider.cc.orig 2023-02-01 18:43:08 UTC ++++ base/trace_event/malloc_dump_provider.cc +@@ -25,6 +25,8 @@ + + #if BUILDFLAG(IS_APPLE) + #include ++#elif defined(OS_BSD) ++#include + #else + #include + #endif +@@ -187,7 +189,7 @@ void ReportAppleAllocStats(size_t* total_virtual_size, + + #if (BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) && BUILDFLAG(IS_ANDROID)) || \ + (!BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) && !BUILDFLAG(IS_WIN) && \ +- !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_FUCHSIA)) ++ !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_FUCHSIA) && !BUILDFLAG(IS_BSD)) + void ReportMallinfoStats(ProcessMemoryDump* pmd, + size_t* total_virtual_size, + size_t* resident_size, +@@ -358,6 +360,9 @@ bool MallocDumpProvider::OnMemoryDump(const MemoryDump + &allocated_objects_count); + #elif BUILDFLAG(IS_FUCHSIA) + // TODO(fuchsia): Port, see https://crbug.com/706592. ++#elif defined(OS_BSD) ++ total_virtual_size = 0; ++ allocated_objects_size = 0; + #else + ReportMallinfoStats(/*pmd=*/nullptr, &total_virtual_size, &resident_size, + &allocated_objects_size, &allocated_objects_count); diff --git a/devel/electron23/files/patch-base_trace__event_memory__dump__manager.cc b/devel/electron23/files/patch-base_trace__event_memory__dump__manager.cc new file mode 100644 index 000000000000..f1f228e38e7b --- /dev/null +++ b/devel/electron23/files/patch-base_trace__event_memory__dump__manager.cc @@ -0,0 +1,11 @@ +--- base/trace_event/memory_dump_manager.cc.orig 2022-03-25 21:59:56 UTC ++++ base/trace_event/memory_dump_manager.cc +@@ -82,7 +82,7 @@ const char* const MemoryDumpManager::kSystemAllocatorP + #if defined(MALLOC_MEMORY_TRACING_SUPPORTED) + MallocDumpProvider::kAllocatedObjects; + #else +- nullptr; ++ ""; + #endif + + // static diff --git a/devel/electron23/files/patch-base_trace__event_process__memory__dump.cc b/devel/electron23/files/patch-base_trace__event_process__memory__dump.cc new file mode 100644 index 000000000000..4a938cc94c34 --- /dev/null +++ b/devel/electron23/files/patch-base_trace__event_process__memory__dump.cc @@ -0,0 +1,20 @@ +--- base/trace_event/process_memory_dump.cc.orig 2022-09-24 10:57:32 UTC ++++ base/trace_event/process_memory_dump.cc +@@ -112,7 +112,7 @@ absl::optional ProcessMemoryDump::CountResiden + #if BUILDFLAG(IS_WIN) + std::unique_ptr vec( + new PSAPI_WORKING_SET_EX_INFORMATION[max_vec_size]); +-#elif BUILDFLAG(IS_APPLE) ++#elif BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_BSD) + std::unique_ptr vec(new char[max_vec_size]); + #elif BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA) + std::unique_ptr vec(new unsigned char[max_vec_size]); +@@ -134,7 +134,7 @@ absl::optional ProcessMemoryDump::CountResiden + + for (size_t i = 0; i < page_count; i++) + resident_page_count += vec[i].VirtualAttributes.Valid; +-#elif BUILDFLAG(IS_FUCHSIA) ++#elif BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + // TODO(crbug.com/851760): Implement counting resident bytes. + // For now, log and avoid unused variable warnings. + NOTIMPLEMENTED_LOG_ONCE(); diff --git a/devel/electron23/files/patch-base_tracing_trace__time.cc b/devel/electron23/files/patch-base_tracing_trace__time.cc new file mode 100644 index 000000000000..36c6113518f4 --- /dev/null +++ b/devel/electron23/files/patch-base_tracing_trace__time.cc @@ -0,0 +1,28 @@ +--- base/tracing/trace_time.cc.orig 2022-02-28 16:54:41 UTC ++++ base/tracing/trace_time.cc +@@ -8,13 +8,17 @@ + #include "build/build_config.h" + #include "third_party/perfetto/include/perfetto/base/time.h" + ++#if BUILDFLAG(IS_FREEBSD) ++#define CLOCK_BOOTTIME CLOCK_UPTIME ++#endif ++ + namespace base { + namespace tracing { + + int64_t TraceBootTicksNow() { + // On Windows and Mac, TRACE_TIME_TICKS_NOW() behaves like boottime already. + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + struct timespec ts; + int res = clock_gettime(CLOCK_BOOTTIME, &ts); + if (res != -1) +@@ -24,4 +28,4 @@ int64_t TraceBootTicksNow() { + } + + } // namespace tracing +-} // namespace base +\ No newline at end of file ++} // namespace base diff --git a/devel/electron23/files/patch-base_tracing_trace__time.h b/devel/electron23/files/patch-base_tracing_trace__time.h new file mode 100644 index 000000000000..0394e382ee6e --- /dev/null +++ b/devel/electron23/files/patch-base_tracing_trace__time.h @@ -0,0 +1,11 @@ +--- base/tracing/trace_time.h.orig 2022-02-28 16:54:41 UTC ++++ base/tracing/trace_time.h +@@ -12,7 +12,7 @@ namespace base { + namespace tracing { + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + // Linux, Android, and Fuchsia all use CLOCK_MONOTONIC. See crbug.com/166153 + // about efforts to unify base::TimeTicks across all platforms. + constexpr perfetto::protos::pbzero::BuiltinClock kTraceClockId = diff --git a/devel/electron23/files/patch-build_config_BUILD.gn b/devel/electron23/files/patch-build_config_BUILD.gn new file mode 100644 index 000000000000..36a12d51c8be --- /dev/null +++ b/devel/electron23/files/patch-build_config_BUILD.gn @@ -0,0 +1,22 @@ +--- build/config/BUILD.gn.orig 2022-09-24 10:57:32 UTC ++++ build/config/BUILD.gn +@@ -215,13 +215,17 @@ config("default_libs") { + "CoreText.framework", + "Foundation.framework", + ] +- } else if (is_linux || is_chromeos) { ++ } else if ((is_linux && !is_bsd) || is_chromeos) { + libs = [ + "dl", + "pthread", + "rt", + ] +- } ++ } else if (is_bsd) { ++ libs = [ ++ "pthread", ++ ] ++ } + } + + group("common_deps") { diff --git a/devel/electron23/files/patch-build_config_BUILDCONFIG.gn b/devel/electron23/files/patch-build_config_BUILDCONFIG.gn new file mode 100644 index 000000000000..987fef14793c --- /dev/null +++ b/devel/electron23/files/patch-build_config_BUILDCONFIG.gn @@ -0,0 +1,45 @@ +--- build/config/BUILDCONFIG.gn.orig 2023-02-15 13:08:45 UTC ++++ build/config/BUILDCONFIG.gn +@@ -139,7 +139,8 @@ declare_args() { + is_official_build = false + + # Set to true when compiling with the Clang compiler. +- is_clang = current_os != "linux" || ++ is_clang = current_os != "linux" || current_os == "openbsd" || ++ current_os == "freebsd" || + (current_cpu != "s390x" && current_cpu != "s390" && + current_cpu != "ppc64" && current_cpu != "ppc" && + current_cpu != "mips" && current_cpu != "mips64" && +@@ -228,6 +229,10 @@ if (host_toolchain == "") { + host_toolchain = "//build/toolchain/aix:$host_cpu" + } else if (host_os == "zos") { + host_toolchain = "//build/toolchain/zos:$host_cpu" ++ } else if (host_os == "openbsd") { ++ host_toolchain = "//build/toolchain/openbsd:clang_$host_cpu" ++ } else if (host_os == "freebsd") { ++ host_toolchain = "//build/toolchain/freebsd:clang_$host_cpu" + } else { + assert(false, "Unsupported host_os: $host_os") + } +@@ -271,6 +276,8 @@ if (target_os == "android") { + _default_toolchain = "//build/toolchain/aix:$target_cpu" + } else if (target_os == "zos") { + _default_toolchain = "//build/toolchain/zos:$target_cpu" ++} else if (target_os == "openbsd" || target_os == "freebsd") { ++ _default_toolchain = host_toolchain + } else { + assert(false, "Unsupported target_os: $target_os") + } +@@ -305,7 +312,11 @@ is_android = current_os == "android" + is_chromeos = current_os == "chromeos" + is_fuchsia = current_os == "fuchsia" + is_ios = current_os == "ios" +-is_linux = current_os == "linux" ++is_linux = current_os == "linux" || current_os == "openbsd" || ++ current_os == "freebsd" ++is_openbsd = current_os == "openbsd" ++is_freebsd = current_os == "freebsd" ++is_bsd = current_os == "openbsd" || current_os == "freebsd" + is_mac = current_os == "mac" + is_nacl = current_os == "nacl" + is_win = current_os == "win" || current_os == "winuwp" diff --git a/devel/electron23/files/patch-build_config_compiler_BUILD.gn b/devel/electron23/files/patch-build_config_compiler_BUILD.gn new file mode 100644 index 000000000000..284bf2f6db70 --- /dev/null +++ b/devel/electron23/files/patch-build_config_compiler_BUILD.gn @@ -0,0 +1,131 @@ +--- build/config/compiler/BUILD.gn.orig 2023-02-01 18:43:08 UTC ++++ build/config/compiler/BUILD.gn +@@ -224,13 +224,16 @@ config("default_include_dirs") { + # Compiler instrumentation can introduce dependencies in DSOs to symbols in + # the executable they are loaded into, so they are unresolved at link-time. + config("no_unresolved_symbols") { +- if (!using_sanitizer && ++ if (!using_sanitizer && !is_bsd && + (is_linux || is_chromeos || is_android || is_fuchsia)) { + ldflags = [ + "-Wl,-z,defs", + "-Wl,--as-needed", + ] + } ++ if (current_cpu == "x86" && is_openbsd) { ++ ldflags = [ "-Wl,-z,notext" ] ++ } + } + + # compiler --------------------------------------------------------------------- +@@ -454,6 +457,10 @@ config("compiler") { + } + } + ++ if (is_openbsd) { ++ ldflags += [ "-Wl,-z,wxneeded" ] ++ } ++ + # Linux-specific compiler flags setup. + # ------------------------------------ + if (use_gold) { +@@ -529,7 +536,7 @@ config("compiler") { + ldflags += [ "-Wl,-z,keep-text-section-prefix" ] + } + +- if (is_clang && !is_nacl && current_os != "zos") { ++ if (is_clang && !is_nacl && current_os != "zos" && !is_bsd) { + cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ] + if (save_reproducers_on_lld_crash && use_lld) { + ldflags += [ +@@ -813,7 +820,7 @@ config("compiler") { + # lldb doesn't have the needed changes yet. + # * Fuchsia isn't supported as zxdb doesn't support simple template names yet. + # TODO(crbug.com/1379070): Remove if the upstream default ever changes. +- if (is_clang && !is_nacl && !is_win && !is_apple && !is_fuchsia) { ++ if (is_clang && !is_nacl && !is_win && !is_apple && !is_fuchsia && !is_bsd) { + cflags_cc += [ "-gsimple-template-names" ] + } + +@@ -973,7 +980,7 @@ config("compiler_cpu_abi") { + ] + } + } else if (current_cpu == "arm") { +- if (is_clang && !is_android && !is_nacl && ++ if (is_clang && !is_android && !is_nacl && !is_bsd && + !(is_chromeos_lacros && is_chromeos_device)) { + cflags += [ "--target=arm-linux-gnueabihf" ] + ldflags += [ "--target=arm-linux-gnueabihf" ] +@@ -988,7 +995,7 @@ config("compiler_cpu_abi") { + cflags += [ "-mtune=$arm_tune" ] + } + } else if (current_cpu == "arm64") { +- if (is_clang && !is_android && !is_nacl && !is_fuchsia && ++ if (is_clang && !is_android && !is_nacl && !is_fuchsia && !is_bsd && + !(is_chromeos_lacros && is_chromeos_device)) { + cflags += [ "--target=aarch64-linux-gnu" ] + ldflags += [ "--target=aarch64-linux-gnu" ] +@@ -1322,7 +1329,7 @@ config("compiler_deterministic") { + # different build directory like "out/feature_a" and "out/feature_b" if + # we build same files with same compile flag. + # Other paths are already given in relative, no need to normalize them. +- if (is_nacl) { ++ if (is_nacl || is_bsd) { + # TODO(https://crbug.com/1231236): Use -ffile-compilation-dir= here. + cflags += [ + "-Xclang", +@@ -1374,7 +1381,7 @@ config("compiler_deterministic") { + } + + config("clang_revision") { +- if (is_clang && clang_base_path == default_clang_base_path) { ++ if (is_clang && !is_bsd && clang_base_path == default_clang_base_path) { + update_args = [ + "--print-revision", + "--verify-version=$clang_version", +@@ -1615,7 +1622,7 @@ config("default_warnings") { + "-Wno-ignored-pragma-optimize", + ] + +- if (!is_nacl) { ++ if (!is_nacl && !is_bsd) { + cflags += [ + # TODO(crbug.com/1343975) Evaluate and possibly enable. + "-Wno-deprecated-builtins", +@@ -1794,7 +1801,7 @@ config("no_chromium_code") { + # third-party libraries. + "-Wno-c++11-narrowing", + ] +- if (!is_nacl) { ++ if (!is_nacl && !is_freebsd) { + cflags += [ + # Disabled for similar reasons as -Wunused-variable. + "-Wno-unused-but-set-variable", +@@ -2302,7 +2309,7 @@ config("afdo_optimize_size") { + # There are some targeted places that AFDO regresses, so we provide a separate + # config to allow AFDO to be disabled per-target. + config("afdo") { +- if (is_clang) { ++ if (is_clang && !is_bsd) { + cflags = [] + if (clang_emit_debug_info_for_profiling) { + # Add the following flags to generate debug info for profiling. +@@ -2318,7 +2325,7 @@ config("afdo") { + cflags += [ "-fprofile-sample-use=${rebased_clang_sample_profile}" ] + inputs = [ _clang_sample_profile ] + } +- } else if (auto_profile_path != "" && is_a_target_toolchain) { ++ } else if (auto_profile_path != "" && is_a_target_toolchain && !is_bsd) { + cflags = [ "-fauto-profile=${auto_profile_path}" ] + inputs = [ auto_profile_path ] + } +@@ -2472,7 +2479,8 @@ config("symbols") { + configs += [ "//build/config:compress_debug_sections" ] + } + +- if (is_clang && (!is_nacl || is_nacl_saigo) && current_os != "zos") { ++ if (is_clang && (!is_nacl || is_nacl_saigo) && current_os != "zos" && ++ !is_bsd) { + if (is_apple) { + # TODO(https://crbug.com/1050118): Investigate missing debug info on mac. + # Make sure we don't use constructor homing on mac. diff --git a/devel/electron23/files/patch-build_config_linux_BUILD.gn b/devel/electron23/files/patch-build_config_linux_BUILD.gn new file mode 100644 index 000000000000..2e93980f3e50 --- /dev/null +++ b/devel/electron23/files/patch-build_config_linux_BUILD.gn @@ -0,0 +1,11 @@ +--- build/config/linux/BUILD.gn.orig 2022-05-19 14:06:27 UTC ++++ build/config/linux/BUILD.gn +@@ -41,7 +41,7 @@ config("runtime_library") { + } + + if ((!is_chromeos || default_toolchain != "//build/toolchain/cros:target") && +- (!use_custom_libcxx || current_cpu == "mipsel")) { ++ (!use_custom_libcxx || current_cpu == "mipsel") && !is_bsd) { + libs = [ "atomic" ] + } + } diff --git a/devel/electron23/files/patch-build_config_linux_pkg-config.py b/devel/electron23/files/patch-build_config_linux_pkg-config.py new file mode 100644 index 000000000000..e48b205448bd --- /dev/null +++ b/devel/electron23/files/patch-build_config_linux_pkg-config.py @@ -0,0 +1,11 @@ +--- build/config/linux/pkg-config.py.orig 2022-02-07 13:39:41 UTC ++++ build/config/linux/pkg-config.py +@@ -109,7 +109,7 @@ def main(): + # If this is run on non-Linux platforms, just return nothing and indicate + # success. This allows us to "kind of emulate" a Linux build from other + # platforms. +- if "linux" not in sys.platform: ++ if not sys.platform.startswith(tuple(['linux', 'openbsd', 'freebsd'])): + print("[[],[],[],[],[]]") + return 0 + diff --git a/devel/electron23/files/patch-build_config_ozone.gni b/devel/electron23/files/patch-build_config_ozone.gni new file mode 100644 index 000000000000..739797e19626 --- /dev/null +++ b/devel/electron23/files/patch-build_config_ozone.gni @@ -0,0 +1,19 @@ +--- build/config/ozone.gni.orig 2022-08-31 12:19:35 UTC ++++ build/config/ozone.gni +@@ -87,7 +87,15 @@ declare_args() { + } else if (is_chromeos_lacros) { + ozone_platform = "wayland" + ozone_platform_wayland = true +- } else if (is_linux) { ++ } else if (is_linux && !is_bsd) { ++ ozone_platform = "x11" ++ ozone_platform_wayland = true ++ ozone_platform_x11 = true ++ } else if (is_openbsd) { ++ ozone_platform = "x11" ++ ozone_platform_wayland = false ++ ozone_platform_x11 = true ++ } else if (is_freebsd) { + ozone_platform = "x11" + ozone_platform_wayland = true + ozone_platform_x11 = true diff --git a/devel/electron23/files/patch-build_config_rust.gni b/devel/electron23/files/patch-build_config_rust.gni new file mode 100644 index 000000000000..838c2d2430c9 --- /dev/null +++ b/devel/electron23/files/patch-build_config_rust.gni @@ -0,0 +1,11 @@ +--- build/config/rust.gni.orig 2023-02-01 18:43:08 UTC ++++ build/config/rust.gni +@@ -128,7 +128,7 @@ if (enable_rust) { + rust_sysroot = "//third_party/rust-toolchain" + use_unverified_rust_toolchain = false + } else { +- if (host_os != "linux") { ++ if (host_os != "linux" && host_os != "openbsd" && host_os != "freebsd") { + assert(false, + "Attempt to use Android Rust toolchain on an unsupported platform") + } diff --git a/devel/electron23/files/patch-build_config_v8__target__cpu.gni b/devel/electron23/files/patch-build_config_v8__target__cpu.gni new file mode 100644 index 000000000000..40fa8f6348e3 --- /dev/null +++ b/devel/electron23/files/patch-build_config_v8__target__cpu.gni @@ -0,0 +1,13 @@ +--- build/config/v8_target_cpu.gni.orig 2022-02-07 13:39:41 UTC ++++ build/config/v8_target_cpu.gni +@@ -36,6 +36,10 @@ declare_args() { + if (v8_target_cpu == "") { + if (current_toolchain == "//build/toolchain/linux:clang_x64_v8_arm64") { + v8_target_cpu = "arm64" ++ } else if (current_toolchain == "//build/toolchain/openbsd:clang_arm64") { ++ v8_target_cpu = "arm64" ++ } else if (current_toolchain == "//build/toolchain/freebsd:clang_arm64") { ++ v8_target_cpu = "arm64" + } else if (current_toolchain == "//build/toolchain/linux:clang_x86_v8_arm") { + v8_target_cpu = "arm" + } else if (current_toolchain == diff --git a/devel/electron23/files/patch-build_detect__host__arch.py b/devel/electron23/files/patch-build_detect__host__arch.py new file mode 100644 index 000000000000..9d8ad2c44d2b --- /dev/null +++ b/devel/electron23/files/patch-build_detect__host__arch.py @@ -0,0 +1,11 @@ +--- build/detect_host_arch.py.orig 2021-04-14 18:40:48 UTC ++++ build/detect_host_arch.py +@@ -21,6 +21,8 @@ def HostArch(): + host_arch = 'ia32' + elif host_arch in ['x86_64', 'amd64']: + host_arch = 'x64' ++ elif host_arch.startswith('arm64'): ++ host_arch = 'arm64' + elif host_arch.startswith('arm'): + host_arch = 'arm' + elif host_arch.startswith('aarch64'): diff --git a/devel/electron23/files/patch-build_gn__run__binary.py b/devel/electron23/files/patch-build_gn__run__binary.py new file mode 100644 index 000000000000..cf65b6532d6f --- /dev/null +++ b/devel/electron23/files/patch-build_gn__run__binary.py @@ -0,0 +1,11 @@ +--- build/gn_run_binary.py.orig 2022-02-07 13:39:41 UTC ++++ build/gn_run_binary.py +@@ -24,7 +24,7 @@ if not os.path.isabs(path): + # The rest of the arguments are passed directly to the executable. + args = [path] + sys.argv[2:] + +-ret = subprocess.call(args) ++ret = subprocess.call(args, env={"CHROME_EXE_PATH":"${WRKSRC}/out/Release/chrome","LD_LIBRARY_PATH":"${WRKSRC}/out/Release"}) + if ret != 0: + if ret <= -100: + # Windows error codes such as 0xC0000005 and 0xC0000409 are much easier to diff --git a/devel/electron23/files/patch-build_linux_chrome.map b/devel/electron23/files/patch-build_linux_chrome.map new file mode 100644 index 000000000000..992585036b7b --- /dev/null +++ b/devel/electron23/files/patch-build_linux_chrome.map @@ -0,0 +1,13 @@ +--- build/linux/chrome.map.orig 2022-02-28 16:54:41 UTC ++++ build/linux/chrome.map +@@ -20,6 +20,10 @@ global: + # Program entry point. + _start; + ++ # FreeBSD specific variables. ++ __progname; ++ environ; ++ + # Memory allocation symbols. We want chrome and any libraries to + # share the same heap, so it is correct to export these symbols. + aligned_alloc; diff --git a/devel/electron23/files/patch-build_linux_strip__binary.py b/devel/electron23/files/patch-build_linux_strip__binary.py new file mode 100644 index 000000000000..9dd3c051630b --- /dev/null +++ b/devel/electron23/files/patch-build_linux_strip__binary.py @@ -0,0 +1,10 @@ +--- build/linux/strip_binary.py.orig 2022-02-07 13:39:41 UTC ++++ build/linux/strip_binary.py +@@ -10,6 +10,7 @@ import sys + + + def main(): ++ return 0 + argparser = argparse.ArgumentParser(description='eu-strip binary.') + + argparser.add_argument('--eu-strip-binary-path', help='eu-strip path.') diff --git a/devel/electron23/files/patch-build_linux_unbundle_icu.gn b/devel/electron23/files/patch-build_linux_unbundle_icu.gn new file mode 100644 index 000000000000..2a111789fe73 --- /dev/null +++ b/devel/electron23/files/patch-build_linux_unbundle_icu.gn @@ -0,0 +1,18 @@ +--- build/linux/unbundle/icu.gn.orig 2023-04-02 06:40:53 UTC ++++ build/linux/unbundle/icu.gn +@@ -17,6 +17,15 @@ config("icu_config") { + "USING_SYSTEM_ICU=1", + "ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC", + ++ # As of icu 73 C++ nullptr, char16_t, override, final and noexcept are used ++ # instead of defines. These definitions can be removed when the bundled icu ++ # gets updated to 73. For more details, see: ++ # https://unicode-org.atlassian.net/browse/ICU-21833 and ++ # https://github.com/unicode-org/icu/commit/28643799377ecf654564f6f31854b02788cebe33 ++ "U_FINAL=final", ++ "U_NOEXCEPT=noexcept", ++ "U_OVERRIDE=override", ++ + # U_EXPORT (defined in unicode/platform.h) is used to set public visibility + # on classes through the U_COMMON_API and U_I18N_API macros (among others). + # When linking against the system ICU library, we want its symbols to have diff --git a/devel/electron23/files/patch-build_linux_unbundle_libevent.gn b/devel/electron23/files/patch-build_linux_unbundle_libevent.gn new file mode 100644 index 000000000000..d5f276de574d --- /dev/null +++ b/devel/electron23/files/patch-build_linux_unbundle_libevent.gn @@ -0,0 +1,15 @@ +--- build/linux/unbundle/libevent.gn.orig 2022-05-28 07:21:18 UTC ++++ build/linux/unbundle/libevent.gn +@@ -9,7 +9,12 @@ shim_headers("libevent_shim") { + headers = [ "event.h" ] + } + ++config("system_libevent") { ++ defines = [ "USE_SYSTEM_LIBEVENT=1" ] ++} ++ + source_set("libevent") { + deps = [ ":libevent_shim" ] + libs = [ "event" ] ++ public_configs = [ ":system_libevent" ] + } diff --git a/devel/electron23/files/patch-build_linux_unbundle_libusb.gn b/devel/electron23/files/patch-build_linux_unbundle_libusb.gn new file mode 100644 index 000000000000..db96d613cad6 --- /dev/null +++ b/devel/electron23/files/patch-build_linux_unbundle_libusb.gn @@ -0,0 +1,27 @@ +--- build/linux/unbundle/libusb.gn.orig 2021-04-15 08:12:30 UTC ++++ build/linux/unbundle/libusb.gn +@@ -0,0 +1,24 @@ ++# Copyright 2016 The Chromium Authors. All rights reserved. ++# Use of this source code is governed by a BSD-style license that can be ++# found in the LICENSE file. ++ ++import("//build/config/linux/pkg_config.gni") ++import("//build/shim_headers.gni") ++ ++pkg_config("system_libusb") { ++ packages = [ "libusb-1.0" ] ++} ++ ++shim_headers("libusb_shim") { ++ root_path = "src/libusb" ++ headers = [ ++ "libusb.h", ++ ] ++} ++ ++source_set("libusb") { ++ deps = [ ++ ":libusb_shim", ++ ] ++ public_configs = [ ":system_libusb" ] ++} diff --git a/devel/electron23/files/patch-build_linux_unbundle_replace__gn__files.py b/devel/electron23/files/patch-build_linux_unbundle_replace__gn__files.py new file mode 100644 index 000000000000..f2627136771d --- /dev/null +++ b/devel/electron23/files/patch-build_linux_unbundle_replace__gn__files.py @@ -0,0 +1,10 @@ +--- build/linux/unbundle/replace_gn_files.py.orig 2023-02-01 18:43:08 UTC ++++ build/linux/unbundle/replace_gn_files.py +@@ -54,6 +54,7 @@ REPLACEMENTS = { + 'libevent': 'third_party/libevent/BUILD.gn', + 'libjpeg': 'third_party/libjpeg.gni', + 'libpng': 'third_party/libpng/BUILD.gn', ++ 'libusb': 'third_party/libusb/BUILD.gn', + 'libvpx': 'third_party/libvpx/BUILD.gn', + 'libwebp': 'third_party/libwebp/BUILD.gn', + 'libxml': 'third_party/libxml/BUILD.gn', diff --git a/devel/electron23/files/patch-build_toolchain_freebsd_BUILD.gn b/devel/electron23/files/patch-build_toolchain_freebsd_BUILD.gn new file mode 100644 index 000000000000..7857149615a0 --- /dev/null +++ b/devel/electron23/files/patch-build_toolchain_freebsd_BUILD.gn @@ -0,0 +1,69 @@ +--- build/toolchain/freebsd/BUILD.gn.orig 2022-02-07 13:39:41 UTC ++++ build/toolchain/freebsd/BUILD.gn +@@ -0,0 +1,66 @@ ++# Copyright 2013 The Chromium Authors. All rights reserved. ++# Use of this source code is governed by a BSD-style license that can be ++# found in the LICENSE file. ++ ++import("//build/config/sysroot.gni") ++import("//build/toolchain/gcc_toolchain.gni") ++ ++clang_toolchain("clang_x86") { ++ toolchain_args = { ++ current_cpu = "x86" ++ current_os = "freebsd" ++ } ++} ++ ++gcc_toolchain("x86") { ++ cc = "gcc" ++ cxx = "g++" ++ ++ readelf = "readelf" ++ nm = "nm" ++ ar = "ar" ++ ld = cxx ++ ++ toolchain_args = { ++ current_cpu = "x86" ++ current_os = "freebsd" ++ is_clang = false ++ } ++} ++ ++clang_toolchain("clang_x64") { ++ toolchain_args = { ++ current_cpu = "x64" ++ current_os = "freebsd" ++ } ++} ++ ++gcc_toolchain("x64") { ++ cc = "gcc" ++ cxx = "g++" ++ ++ readelf = "readelf" ++ nm = "nm" ++ ar = "ar" ++ ld = cxx ++ ++ toolchain_args = { ++ current_cpu = "x64" ++ current_os = "freebsd" ++ is_clang = false ++ } ++} ++ ++clang_toolchain("clang_arm") { ++ toolchain_args = { ++ current_cpu = "arm64" ++ current_os = "freebsd" ++ } ++} ++ ++clang_toolchain("clang_arm64") { ++ toolchain_args = { ++ current_cpu = "arm64" ++ current_os = "freebsd" ++ } ++} diff --git a/devel/electron23/files/patch-build_toolchain_gcc__solink__wrapper.py b/devel/electron23/files/patch-build_toolchain_gcc__solink__wrapper.py new file mode 100644 index 000000000000..34debf134bea --- /dev/null +++ b/devel/electron23/files/patch-build_toolchain_gcc__solink__wrapper.py @@ -0,0 +1,11 @@ +--- build/toolchain/gcc_solink_wrapper.py.orig 2022-02-07 13:39:41 UTC ++++ build/toolchain/gcc_solink_wrapper.py +@@ -39,7 +39,7 @@ def CollectDynSym(args): + """Replaces: nm --format=posix -g -D -p $sofile | cut -f1-2 -d' '""" + toc = '' + nm = subprocess.Popen(wrapper_utils.CommandToRun( +- [args.nm, '--format=posix', '-g', '-D', '-p', args.sofile]), ++ [args.nm, '-g', '-D', '-p', args.sofile]), + stdout=subprocess.PIPE, + bufsize=-1, + universal_newlines=True) diff --git a/devel/electron23/files/patch-build_toolchain_gcc__toolchain.gni b/devel/electron23/files/patch-build_toolchain_gcc__toolchain.gni new file mode 100644 index 000000000000..86b877beb1f1 --- /dev/null +++ b/devel/electron23/files/patch-build_toolchain_gcc__toolchain.gni @@ -0,0 +1,44 @@ +--- build/toolchain/gcc_toolchain.gni.orig 2023-02-01 18:43:08 UTC ++++ build/toolchain/gcc_toolchain.gni +@@ -53,6 +53,13 @@ if (enable_resource_allowlist_generation) { + "enable_resource_allowlist_generation=true does not work for target_os=$target_os") + } + ++declare_args() { ++ extra_cflags = "" ++ extra_cppflags = "" ++ extra_cxxflags = "" ++ extra_ldflags = "" ++} ++ + # This template defines a toolchain for something that works like gcc + # (including clang). + # +@@ -803,22 +810,12 @@ template("gcc_toolchain") { + # use_gold too. + template("clang_toolchain") { + gcc_toolchain(target_name) { +- _path = "$clang_base_path/bin" +- _is_path_absolute = get_path_info(_path, "abspath") == _path +- +- # Preserve absolute paths for tools like distcc. +- if (_is_path_absolute && filter_include([ _path ], [ "//*" ]) == []) { +- prefix = _path +- } else { +- prefix = rebase_path(_path, root_build_dir) +- } +- +- cc = "${prefix}/clang" +- cxx = "${prefix}/clang++" ++ cc = "cc" ++ cxx = "c++" + ld = cxx +- readelf = "${prefix}/llvm-readelf" +- ar = "${prefix}/llvm-ar" +- nm = "${prefix}/llvm-nm" ++ readelf = "readelf" ++ ar = "ar" ++ nm = "nm" + + forward_variables_from(invoker, + [ diff --git a/devel/electron23/files/patch-build_toolchain_openbsd_BUILD.gn b/devel/electron23/files/patch-build_toolchain_openbsd_BUILD.gn new file mode 100644 index 000000000000..04e6f6b416e2 --- /dev/null +++ b/devel/electron23/files/patch-build_toolchain_openbsd_BUILD.gn @@ -0,0 +1,69 @@ +--- build/toolchain/openbsd/BUILD.gn.orig 2022-02-07 13:39:41 UTC ++++ build/toolchain/openbsd/BUILD.gn +@@ -0,0 +1,66 @@ ++# Copyright 2013 The Chromium Authors. All rights reserved. ++# Use of this source code is governed by a BSD-style license that can be ++# found in the LICENSE file. ++ ++import("//build/config/sysroot.gni") ++import("//build/toolchain/gcc_toolchain.gni") ++ ++clang_toolchain("clang_x86") { ++ toolchain_args = { ++ current_cpu = "x86" ++ current_os = "openbsd" ++ } ++} ++ ++gcc_toolchain("x86") { ++ cc = "gcc" ++ cxx = "g++" ++ ++ readelf = "readelf" ++ nm = "nm" ++ ar = "ar" ++ ld = cxx ++ ++ toolchain_args = { ++ current_cpu = "x86" ++ current_os = "openbsd" ++ is_clang = false ++ } ++} ++ ++clang_toolchain("clang_x64") { ++ toolchain_args = { ++ current_cpu = "x64" ++ current_os = "openbsd" ++ } ++} ++ ++gcc_toolchain("x64") { ++ cc = "gcc" ++ cxx = "g++" ++ ++ readelf = "readelf" ++ nm = "nm" ++ ar = "ar" ++ ld = cxx ++ ++ toolchain_args = { ++ current_cpu = "x64" ++ current_os = "openbsd" ++ is_clang = false ++ } ++} ++ ++clang_toolchain("clang_arm") { ++ toolchain_args = { ++ current_cpu = "arm64" ++ current_os = "openbsd" ++ } ++} ++ ++clang_toolchain("clang_arm64") { ++ toolchain_args = { ++ current_cpu = "arm64" ++ current_os = "openbsd" ++ } ++} diff --git a/devel/electron23/files/patch-cc_BUILD.gn b/devel/electron23/files/patch-cc_BUILD.gn new file mode 100644 index 000000000000..817a022d0488 --- /dev/null +++ b/devel/electron23/files/patch-cc_BUILD.gn @@ -0,0 +1,19 @@ +--- cc/BUILD.gn.orig 2023-02-01 18:43:08 UTC ++++ cc/BUILD.gn +@@ -665,7 +665,7 @@ cc_test_static_library("test_support") { + if (enable_vulkan) { + deps += [ "//gpu/vulkan/init" ] + } +- if (!is_android) { ++ if (!is_android && !is_bsd) { + data_deps = [ "//third_party/mesa_headers" ] + } + } +@@ -892,7 +892,6 @@ cc_test("cc_unittests") { + data = [ "//components/viz/test/data/" ] + data_deps = [ + "//testing/buildbot/filters:cc_unittests_filters", +- "//third_party/mesa_headers", + ] + + if (is_android && enable_chrome_android_internal) { diff --git a/devel/electron23/files/patch-chrome_app_app__management__strings.grdp b/devel/electron23/files/patch-chrome_app_app__management__strings.grdp new file mode 100644 index 000000000000..951439da5219 --- /dev/null +++ b/devel/electron23/files/patch-chrome_app_app__management__strings.grdp @@ -0,0 +1,11 @@ +--- chrome/app/app_management_strings.grdp.orig 2022-07-22 17:30:31 UTC ++++ chrome/app/app_management_strings.grdp +@@ -173,7 +173,7 @@ + You can open and edit supported files with this app from Finder or other apps. To control which files open this app by default, <a href="#">learn how to set default apps on your device</a>. + + +- ++ + + You can open and edit supported files with this app from your file browser or other apps. To control which files open this app by default, <a href="#">learn how to set default apps on your device</a>. + diff --git a/devel/electron23/files/patch-chrome_app_chrome__command__ids.h b/devel/electron23/files/patch-chrome_app_chrome__command__ids.h new file mode 100644 index 000000000000..e5fe7eacffed --- /dev/null +++ b/devel/electron23/files/patch-chrome_app_chrome__command__ids.h @@ -0,0 +1,11 @@ +--- chrome/app/chrome_command_ids.h.orig 2022-06-17 14:20:10 UTC ++++ chrome/app/chrome_command_ids.h +@@ -67,7 +67,7 @@ + #define IDC_NAME_WINDOW 34049 + + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch of lacros-chrome is complete. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + #define IDC_USE_SYSTEM_TITLE_BAR 34051 + #define IDC_RESTORE_WINDOW 34052 + #endif diff --git a/devel/electron23/files/patch-chrome_app_chrome__main.cc b/devel/electron23/files/patch-chrome_app_chrome__main.cc new file mode 100644 index 000000000000..fdc4cbb99883 --- /dev/null +++ b/devel/electron23/files/patch-chrome_app_chrome__main.cc @@ -0,0 +1,20 @@ +--- chrome/app/chrome_main.cc.orig 2023-02-01 18:43:09 UTC ++++ chrome/app/chrome_main.cc +@@ -25,7 +25,7 @@ + #include "chrome/app/notification_metrics.h" + #endif + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + #include "base/base_switches.h" + #endif + +@@ -151,7 +151,7 @@ int ChromeMain(int argc, const char** argv) { + headless::SetUpCommandLine(command_line); + } else { + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \ +- BUILDFLAG(IS_WIN) ++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) + if (headless::IsOldHeadlessMode()) { + #if BUILDFLAG(GOOGLE_CHROME_BRANDING) + command_line->AppendSwitch(::headless::switches::kEnableCrashReporter); diff --git a/devel/electron23/files/patch-chrome_app_chrome__main__delegate.cc b/devel/electron23/files/patch-chrome_app_chrome__main__delegate.cc new file mode 100644 index 000000000000..2fa2cd03c385 --- /dev/null +++ b/devel/electron23/files/patch-chrome_app_chrome__main__delegate.cc @@ -0,0 +1,121 @@ +--- chrome/app/chrome_main_delegate.cc.orig 2023-02-01 18:43:09 UTC ++++ chrome/app/chrome_main_delegate.cc +@@ -138,7 +138,7 @@ + #include "components/about_ui/credit_utils.h" + #endif + +-#if BUILDFLAG(ENABLE_NACL) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) ++#if BUILDFLAG(ENABLE_NACL) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && !BUILDFLAG(IS_BSD) + #include "components/nacl/common/nacl_paths.h" + #include "components/nacl/zygote/nacl_fork_delegate_linux.h" + #endif +@@ -182,16 +182,16 @@ + #include "v8/include/v8.h" + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "base/environment.h" + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + #include "base/message_loop/message_pump_libevent.h" + #endif + + #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID) || \ +- BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++ BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "chrome/browser/policy/policy_path_parser.h" + #include "components/crash/core/app/crashpad.h" + #endif +@@ -351,7 +351,7 @@ void AdjustLinuxOOMScore(const std::string& process_ty + // and resources loaded. + bool SubprocessNeedsResourceBundle(const std::string& process_type) { + return +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // The zygote process opens the resources for the renderers. + process_type == switches::kZygoteProcess || + #endif +@@ -436,7 +436,7 @@ bool HandleVersionSwitches(const base::CommandLine& co + + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + // Show the man page if --help or -h is on the command line. + void HandleHelpSwitches(const base::CommandLine& command_line) { + if (command_line.HasSwitch(switches::kHelp) || +@@ -550,7 +550,7 @@ void InitializeUserDataDir(base::CommandLine* command_ + std::string process_type = + command_line->GetSwitchValueASCII(switches::kProcessType); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // On Linux, Chrome does not support running multiple copies under different + // DISPLAYs, so the profile directory can be specified in the environment to + // support the virtual desktop use-case. +@@ -639,7 +639,7 @@ void RecordMainStartupMetrics(base::TimeTicks applicat + #endif + + #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS) ++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Record the startup process creation time on supported platforms. On Android + // this is recorded in ChromeMainDelegateAndroid. + startup_metric_utils::RecordStartupProcessCreationTime( +@@ -927,6 +927,8 @@ void ChromeMainDelegate::CommonEarlyInitialization() { + // not always enabled on ChromeOS. + #if BUILDFLAG(IS_CHROMEOS) + bool enable_gwp_asan = crash_reporter::IsCrashpadEnabled(); ++#elif BUILDFLAG(IS_BSD) ++ bool enable_gwp_asan = false; + #else + bool enable_gwp_asan = true; + #endif +@@ -987,7 +989,7 @@ void ChromeMainDelegate::CommonEarlyInitialization() { + base::internal::TimerBase::InitializeFeatures(); + base::InitializeCpuReductionExperiment(); + base::sequence_manager::internal::SequenceManagerImpl::InitializeFeatures(); +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_BSD) + base::MessagePumpLibevent::InitializeFeatures(); + #elif BUILDFLAG(IS_MAC) + base::PlatformThread::InitFeaturesPostFieldTrial(); +@@ -1119,7 +1121,7 @@ absl::optional ChromeMainDelegate::BasicStartupCo + + // TODO(crbug.com/1052397): Revisit the macro expression once build flag + // switch of lacros-chrome is complete. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + // This will directly exit if the user asked for help. + HandleHelpSwitches(command_line); + #endif +@@ -1149,7 +1151,7 @@ absl::optional ChromeMainDelegate::BasicStartupCo + #if BUILDFLAG(IS_CHROMEOS) + chromeos::dbus_paths::RegisterPathProvider(); + #endif +-#if BUILDFLAG(ENABLE_NACL) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) ++#if BUILDFLAG(ENABLE_NACL) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) + nacl::RegisterPathProvider(); + #endif + +@@ -1531,7 +1533,7 @@ void ChromeMainDelegate::PreSandboxStartup() { + CHECK(!loaded_locale.empty()) << "Locale could not be found for " << locale; + } + +-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_BSD) + // Zygote needs to call InitCrashReporter() in RunZygote(). + if (process_type != switches::kZygoteProcess) { + if (command_line.HasSwitch(switches::kPreCrashpadCrashTest)) { +@@ -1611,7 +1613,7 @@ absl::variant Chrome + + // This entry is not needed on Linux, where the NaCl loader + // process is launched via nacl_helper instead. +-#if BUILDFLAG(ENABLE_NACL) && !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(ENABLE_NACL) && !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_BSD) + {switches::kNaClLoaderProcess, NaClMain}, + #else + {"", nullptr}, // To avoid constant array of size 0 diff --git a/devel/electron23/files/patch-chrome_app_chromium__strings.grd b/devel/electron23/files/patch-chrome_app_chromium__strings.grd new file mode 100644 index 000000000000..fb42efb1aeaa --- /dev/null +++ b/devel/electron23/files/patch-chrome_app_chromium__strings.grd @@ -0,0 +1,20 @@ +--- chrome/app/chromium_strings.grd.orig 2022-11-30 08:12:58 UTC ++++ chrome/app/chromium_strings.grd +@@ -296,7 +296,7 @@ If you update this file, be sure also to update google + Welcome to Chromium; new browser window opened + + +- ++ + + Welcome to Chromium + +@@ -425,7 +425,7 @@ If you update this file, be sure also to update google + To get future Chromium updates, you'll need Windows 10 or later. This computer is using Windows 8.1. + + +- ++ + + Chromium may not function correctly because it is no longer supported on this Linux distribution + diff --git a/devel/electron23/files/patch-chrome_app_generated__resources.grd b/devel/electron23/files/patch-chrome_app_generated__resources.grd new file mode 100644 index 000000000000..284f5b19c27e --- /dev/null +++ b/devel/electron23/files/patch-chrome_app_generated__resources.grd @@ -0,0 +1,74 @@ +--- chrome/app/generated_resources.grd.orig 2023-02-01 18:43:09 UTC ++++ chrome/app/generated_resources.grd +@@ -2,7 +2,7 @@ + + +@@ -3122,7 +3122,7 @@ are declared in tools/grit/grit_rule.gni. + + + +- ++ + + Device Credentials + +@@ -4868,7 +4868,7 @@ are declared in tools/grit/grit_rule.gni. + Read information about your browser, OS, device, installed software, registry values and files + + +- ++ + + Read information about your browser, OS, device, installed software and files + +@@ -5529,7 +5529,7 @@ Keep your key file in a safe place. You will need it t + Old versions of Chrome Apps won't open on Windows devices after December 2022. Contact your administrator to update to a new version or remove this app. + + +- ++ + + Old versions of Chrome Apps won't open on Linux devices after December 2022. Contact your administrator to update to a new version or remove this app. + +@@ -5575,7 +5575,7 @@ Keep your key file in a safe place. You will need it t + Old versions of Chrome apps won't open on Windows devices after December 2022. You can check if there's a new version available. + + +- ++ + + Old versions of Chrome apps won't open on Linux devices after December 2022. You can check if there's a new version available. + +@@ -9287,7 +9287,7 @@ Check your passwords anytime in ++ + + Use system title bar and borders + +@@ -10620,7 +10620,7 @@ Please help our engineers fix this problem. Tell us wh + Set as default + + +- ++ + + Minimize + +@@ -12735,7 +12735,7 @@ Please help our engineers fix this problem. Tell us wh + Open Anyway + + +- ++ + + System Signals Utilities + diff --git a/devel/electron23/files/patch-chrome_app_google__chrome__strings.grd b/devel/electron23/files/patch-chrome_app_google__chrome__strings.grd new file mode 100644 index 000000000000..d87739da8527 --- /dev/null +++ b/devel/electron23/files/patch-chrome_app_google__chrome__strings.grd @@ -0,0 +1,20 @@ +--- chrome/app/google_chrome_strings.grd.orig 2022-11-30 08:12:58 UTC ++++ chrome/app/google_chrome_strings.grd +@@ -301,7 +301,7 @@ chromium_strings.grd. --> + Welcome to Chrome; new browser window opened + + +- ++ + + Welcome to Google Chrome + +@@ -453,7 +453,7 @@ chromium_strings.grd. --> + To get future Google Chrome updates, you'll need Windows 10 or later. This computer is using Windows 8.1. + + +- ++ + + Google Chrome may not function correctly because it is no longer supported on this Linux distribution + diff --git a/devel/electron23/files/patch-chrome_app_profiles__strings.grdp b/devel/electron23/files/patch-chrome_app_profiles__strings.grdp new file mode 100644 index 000000000000..cf95a34a489e --- /dev/null +++ b/devel/electron23/files/patch-chrome_app_profiles__strings.grdp @@ -0,0 +1,11 @@ +--- chrome/app/profiles_strings.grdp.orig 2022-02-07 13:39:41 UTC ++++ chrome/app/profiles_strings.grdp +@@ -66,7 +66,7 @@ + Add Profile... + + +- ++ + + Add profile... + diff --git a/devel/electron23/files/patch-chrome_app_settings__strings.grdp b/devel/electron23/files/patch-chrome_app_settings__strings.grdp new file mode 100644 index 000000000000..389b1dd3fe74 --- /dev/null +++ b/devel/electron23/files/patch-chrome_app_settings__strings.grdp @@ -0,0 +1,20 @@ +--- chrome/app/settings_strings.grdp.orig 2023-02-01 18:43:10 UTC ++++ chrome/app/settings_strings.grdp +@@ -154,7 +154,7 @@ + Theme + + +- ++ + + GTK + +@@ -174,7 +174,7 @@ + Use Classic + + +- ++ + + Reset to default + diff --git a/devel/electron23/files/patch-chrome_app_theme_chrome__unscaled__resources.grd b/devel/electron23/files/patch-chrome_app_theme_chrome__unscaled__resources.grd new file mode 100644 index 000000000000..90e18ad29955 --- /dev/null +++ b/devel/electron23/files/patch-chrome_app_theme_chrome__unscaled__resources.grd @@ -0,0 +1,29 @@ +--- chrome/app/theme/chrome_unscaled_resources.grd.orig 2023-02-01 18:43:10 UTC ++++ chrome/app/theme/chrome_unscaled_resources.grd +@@ -16,7 +16,7 @@ + + + +- ++ + + + +@@ -61,7 +61,7 @@ + + + +- ++ + + + +@@ -75,7 +75,7 @@ + + + +- ++ + + + diff --git a/devel/electron23/files/patch-chrome_app_theme_theme__resources.grd b/devel/electron23/files/patch-chrome_app_theme_theme__resources.grd new file mode 100644 index 000000000000..7de60f90f199 --- /dev/null +++ b/devel/electron23/files/patch-chrome_app_theme_theme__resources.grd @@ -0,0 +1,59 @@ +--- chrome/app/theme/theme_resources.grd.orig 2023-02-01 18:43:10 UTC ++++ chrome/app/theme/theme_resources.grd +@@ -135,14 +135,14 @@ + + + +- ++ + + + + + + +- ++ + + + +@@ -150,7 +150,7 @@ + + + +- ++ + + + +@@ -162,7 +162,7 @@ + + + +- ++ + + + +@@ -171,10 +171,10 @@ + + + +- ++ + + +- ++ + + + +@@ -183,7 +183,7 @@ + + + +- ++ + + + diff --git a/devel/electron23/files/patch-chrome_browser_about__flags.cc b/devel/electron23/files/patch-chrome_browser_about__flags.cc new file mode 100644 index 000000000000..5641b5ae496d --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_about__flags.cc @@ -0,0 +1,117 @@ +--- chrome/browser/about_flags.cc.orig 2023-02-01 18:43:10 UTC ++++ chrome/browser/about_flags.cc +@@ -218,7 +218,7 @@ + #include "ui/ui_features.h" + #include "url/url_features.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "base/allocator/buildflags.h" + #endif + +@@ -294,7 +294,7 @@ + #include "chrome/browser/supervised_user/supervised_user_features/supervised_user_features.h" // nogncheck + #endif // ENABLE_SUPERVISED_USERS + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD) + #include "ui/ozone/buildflags.h" + #include "ui/ozone/public/ozone_switches.h" + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) +@@ -401,7 +401,7 @@ const FeatureEntry::FeatureVariation kDXGIWaitableSwap + {"Max 3 Frames", &kDXGIWaitableSwapChain3Frames, 1, nullptr}}; + #endif + +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + const FeatureEntry::Choice kOzonePlatformHintRuntimeChoices[] = { + {flag_descriptions::kOzonePlatformHintChoiceDefault, "", ""}, + {flag_descriptions::kOzonePlatformHintChoiceAuto, +@@ -1317,7 +1317,7 @@ const FeatureEntry::FeatureVariation kLocalWebApproval + #endif + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \ +- BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + const FeatureEntry::FeatureParam + kOmniboxDocumentProviderCapLowQualitySuggestionsTo1[] = { + {"DocumentProviderMaxLowQualitySuggestions", "1"}, +@@ -4479,13 +4479,13 @@ const FeatureEntry kFeatureEntries[] = { + FEATURE_VALUE_TYPE(features::kWebShare)}, + #endif // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) + +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + {"ozone-platform-hint", flag_descriptions::kOzonePlatformHintName, + flag_descriptions::kOzonePlatformHintDescription, kOsLinux, + MULTI_VALUE_TYPE(kOzonePlatformHintRuntimeChoices)}, + #endif // BUILDFLAG(IS_LINUX) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + {"skip-undecryptable-passwords", + flag_descriptions::kSkipUndecryptablePasswordsName, + flag_descriptions::kSkipUndecryptablePasswordsDescription, +@@ -4752,7 +4752,7 @@ const FeatureEntry kFeatureEntries[] = { + FEATURE_VALUE_TYPE(feed::kDiscoFeedEndpoint)}, + #endif // BUILDFLAG(IS_ANDROID) + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \ +- BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + {"following-feed-sidepanel", flag_descriptions::kFollowingFeedSidepanelName, + flag_descriptions::kFollowingFeedSidepanelDescription, kOsDesktop, + FEATURE_VALUE_TYPE(feed::kWebUiFeed)}, +@@ -5331,7 +5331,7 @@ const FeatureEntry kFeatureEntries[] = { + FEATURE_VALUE_TYPE(omnibox::kZeroSuggestInMemoryCaching)}, + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \ +- BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + {"omnibox-experimental-keyword-mode", + flag_descriptions::kOmniboxExperimentalKeywordModeName, + flag_descriptions::kOmniboxExperimentalKeywordModeDescription, kOsDesktop, +@@ -5969,7 +5969,7 @@ const FeatureEntry kFeatureEntries[] = { + flag_descriptions::kPointerLockOptionsDescription, kOsDesktop, + FEATURE_VALUE_TYPE(features::kPointerLockOptions)}, + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + {"enable-async-dns", flag_descriptions::kAsyncDnsName, + flag_descriptions::kAsyncDnsDescription, kOsWin | kOsLinux, + FEATURE_VALUE_TYPE(features::kAsyncDns)}, +@@ -6969,7 +6969,7 @@ const FeatureEntry kFeatureEntries[] = { + #endif // BUILDFLAG(IS_CHROMEOS) + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + {"global-media-controls-modern-ui", + flag_descriptions::kGlobalMediaControlsModernUIName, + flag_descriptions::kGlobalMediaControlsModernUIDescription, +@@ -7737,7 +7737,7 @@ const FeatureEntry kFeatureEntries[] = { + #endif + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + {"quick-commands", flag_descriptions::kQuickCommandsName, + flag_descriptions::kQuickCommandsDescription, kOsDesktop, + FEATURE_VALUE_TYPE(features::kQuickCommands)}, +@@ -7995,7 +7995,7 @@ const FeatureEntry kFeatureEntries[] = { + + #if BUILDFLAG(IS_WIN) || \ + (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || \ +- BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + { + "ui-debug-tools", + flag_descriptions::kUIDebugToolsName, +@@ -8554,7 +8554,7 @@ const FeatureEntry kFeatureEntries[] = { + #endif + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || \ +- BUILDFLAG(IS_CHROMEOS_ASH) ++ BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD) + {"document-picture-in-picture-api", + flag_descriptions::kDocumentPictureInPictureApiName, + flag_descriptions::kDocumentPictureInPictureApiDescription, diff --git a/devel/electron23/files/patch-chrome_browser_after__startup__task__utils.cc b/devel/electron23/files/patch-chrome_browser_after__startup__task__utils.cc new file mode 100644 index 000000000000..ef6940d77ab3 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_after__startup__task__utils.cc @@ -0,0 +1,11 @@ +--- chrome/browser/after_startup_task_utils.cc.orig 2022-08-31 12:19:35 UTC ++++ chrome/browser/after_startup_task_utils.cc +@@ -107,7 +107,7 @@ void SetBrowserStartupIsComplete() { + TRACE_EVENT0("startup", "SetBrowserStartupIsComplete"); + g_startup_complete_flag.Get().Set(); + #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS) ++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Process::Current().CreationTime() is not available on all platforms. + const base::Time process_creation_time = + base::Process::Current().CreationTime(); diff --git a/devel/electron23/files/patch-chrome_browser_apps_platform__apps_platform__app__launch.cc b/devel/electron23/files/patch-chrome_browser_apps_platform__apps_platform__app__launch.cc new file mode 100644 index 000000000000..cd6ccf427c25 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_apps_platform__apps_platform__app__launch.cc @@ -0,0 +1,20 @@ +--- chrome/browser/apps/platform_apps/platform_app_launch.cc.orig 2022-08-31 12:19:35 UTC ++++ chrome/browser/apps/platform_apps/platform_app_launch.cc +@@ -20,7 +20,7 @@ + #include "extensions/common/extension.h" + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + #include "chrome/browser/ui/browser.h" + #include "chrome/browser/ui/browser_navigator.h" + #include "chrome/browser/ui/browser_window.h" +@@ -124,7 +124,7 @@ bool OpenExtensionApplicationTab(Profile* profile, con + } + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + bool OpenDeprecatedApplicationPrompt(Profile* profile, + const std::string& app_id) { + if (!extensions::IsExtensionUnsupportedDeprecatedApp(profile, app_id)) diff --git a/devel/electron23/files/patch-chrome_browser_apps_platform__apps_platform__app__launch.h b/devel/electron23/files/patch-chrome_browser_apps_platform__apps_platform__app__launch.h new file mode 100644 index 000000000000..393b6f62495b --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_apps_platform__apps_platform__app__launch.h @@ -0,0 +1,11 @@ +--- chrome/browser/apps/platform_apps/platform_app_launch.h.orig 2022-02-28 16:54:41 UTC ++++ chrome/browser/apps/platform_apps/platform_app_launch.h +@@ -36,7 +36,7 @@ bool OpenExtensionApplicationWindow(Profile* profile, + // and false otherwise. + bool OpenExtensionApplicationTab(Profile* profile, const std::string& app_id); + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + // Opens the deprecated Chrome Apps flow if |app_id| refers to a Chrome App and + // Chrome Apps are deprecated on the |profile|. Returns true if that was the + // case, or false otherwise. diff --git a/devel/electron23/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc b/devel/electron23/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc new file mode 100644 index 000000000000..bea2cd828782 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc @@ -0,0 +1,11 @@ +--- chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc.orig 2022-05-19 14:06:27 UTC ++++ chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc +@@ -90,7 +90,7 @@ ChromeAutocompleteSchemeClassifier::GetInputTypeForSch + return metrics::OmniboxInputType::QUERY; + + case ExternalProtocolHandler::UNKNOWN: { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Linux impl of GetApplicationNameForProtocol doesn't distinguish + // between URL schemes with handers and those without. This will + // make the default behaviour be search on Linux. diff --git a/devel/electron23/files/patch-chrome_browser_background_background__mode__manager.cc b/devel/electron23/files/patch-chrome_browser_background_background__mode__manager.cc new file mode 100644 index 000000000000..08a29f0abc2f --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_background_background__mode__manager.cc @@ -0,0 +1,11 @@ +--- chrome/browser/background/background_mode_manager.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/background/background_mode_manager.cc +@@ -892,7 +892,7 @@ gfx::ImageSkia GetStatusTrayIcon() { + return gfx::ImageSkia(); + + return family->CreateExact(size).AsImageSkia(); +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + return *ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed( + IDR_PRODUCT_LOGO_128); + #elif BUILDFLAG(IS_MAC) diff --git a/devel/electron23/files/patch-chrome_browser_background_background__mode__optimizer.cc b/devel/electron23/files/patch-chrome_browser_background_background__mode__optimizer.cc new file mode 100644 index 000000000000..37083840f5bd --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_background_background__mode__optimizer.cc @@ -0,0 +1,11 @@ +--- chrome/browser/background/background_mode_optimizer.cc.orig 2022-02-28 16:54:41 UTC ++++ chrome/browser/background/background_mode_optimizer.cc +@@ -31,7 +31,7 @@ std::unique_ptr BackgroundMod + switches::kKeepAliveForTest)) + return nullptr; + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + if (base::FeatureList::IsEnabled(features::kBackgroundModeAllowRestart)) + return base::WrapUnique(new BackgroundModeOptimizer()); + #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) diff --git a/devel/electron23/files/patch-chrome_browser_browser__features.cc b/devel/electron23/files/patch-chrome_browser_browser__features.cc new file mode 100644 index 000000000000..167ccb912cd1 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_browser__features.cc @@ -0,0 +1,11 @@ +--- chrome/browser/browser_features.cc.orig 2022-11-30 08:12:58 UTC ++++ chrome/browser/browser_features.cc +@@ -30,7 +30,7 @@ BASE_FEATURE(kColorProviderRedirectionForThemeProvider + // the browser exits. + BASE_FEATURE(kDestroyProfileOnBrowserClose, + "DestroyProfileOnBrowserClose", +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) + base::FEATURE_ENABLED_BY_DEFAULT); + #else + base::FEATURE_DISABLED_BY_DEFAULT); diff --git a/devel/electron23/files/patch-chrome_browser_browser__process__impl.cc b/devel/electron23/files/patch-chrome_browser_browser__process__impl.cc new file mode 100644 index 000000000000..d7e0810fdc57 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_browser__process__impl.cc @@ -0,0 +1,29 @@ +--- chrome/browser/browser_process_impl.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/browser_process_impl.cc +@@ -211,7 +211,7 @@ + #include "components/enterprise/browser/controller/chrome_browser_cloud_management_controller.h" + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "chrome/browser/error_reporting/chrome_js_error_report_processor.h" // nogncheck + #endif + +@@ -1183,7 +1183,7 @@ void BrowserProcessImpl::PreMainMessageLoopRun() { + + ApplyMetricsReportingPolicy(); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + ChromeJsErrorReportProcessor::Create(); + #endif + +@@ -1443,7 +1443,7 @@ void BrowserProcessImpl::Unpin() { + // Mac is currently not supported. + // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is + // complete. +-#if BUILDFLAG(IS_WIN) || (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) ++#if BUILDFLAG(IS_WIN) || (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || BUILDFLAG(IS_BSD) + + bool BrowserProcessImpl::IsRunningInBackground() const { + // Check if browser is in the background. diff --git a/devel/electron23/files/patch-chrome_browser_browser__process__impl.h b/devel/electron23/files/patch-chrome_browser_browser__process__impl.h new file mode 100644 index 000000000000..91073fd42001 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_browser__process__impl.h @@ -0,0 +1,11 @@ +--- chrome/browser/browser_process_impl.h.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/browser_process_impl.h +@@ -364,7 +364,7 @@ class BrowserProcessImpl : public BrowserProcess, + + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. +-#if BUILDFLAG(IS_WIN) || (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) ++#if BUILDFLAG(IS_WIN) || (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || BUILDFLAG(IS_BSD) + base::RepeatingTimer autoupdate_timer_; + + // Gets called by autoupdate timer to see if browser needs restart and can be diff --git a/devel/electron23/files/patch-chrome_browser_chrome__browser__interface__binders.cc b/devel/electron23/files/patch-chrome_browser_chrome__browser__interface__binders.cc new file mode 100644 index 000000000000..1adbd21332af --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_chrome__browser__interface__binders.cc @@ -0,0 +1,71 @@ +--- chrome/browser/chrome_browser_interface_binders.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/chrome_browser_interface_binders.cc +@@ -114,13 +114,13 @@ + #endif // BUILDFLAG(FULL_SAFE_BROWSING) + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS_ASH) ++ BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD) + #include "chrome/browser/ui/webui/connectors_internals/connectors_internals.mojom.h" + #include "chrome/browser/ui/webui/connectors_internals/connectors_internals_ui.h" + #endif + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + #include "chrome/browser/ui/webui/app_settings/web_app_settings_ui.h" + #include "ui/webui/resources/cr_components/app_management/app_management.mojom.h" + #endif +@@ -192,7 +192,7 @@ + #endif // BUILDFLAG(IS_ANDROID) + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS) ++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "chrome/browser/ui/webui/discards/discards.mojom.h" + #include "chrome/browser/ui/webui/discards/discards_ui.h" + #include "chrome/browser/ui/webui/discards/site_data.mojom.h" +@@ -812,7 +812,7 @@ void PopulateChromeFrameBinders( + #endif // BUILDFLAG(ENABLE_SPEECH_SERVICE) + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS) ++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + if (!render_frame_host->GetParent()) { + map->Add( + base::BindRepeating(&DraggableRegionsHostImpl::CreateIfAllowed)); +@@ -820,7 +820,7 @@ void PopulateChromeFrameBinders( + #endif + + #if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || \ +- BUILDFLAG(IS_WIN) ++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) + if (base::FeatureList::IsEnabled(blink::features::kDesktopPWAsSubApps) && + !render_frame_host->GetParentOrOuterDocument()) { + // The service binder will reject non-primary main frames, but we still need +@@ -885,14 +885,14 @@ void PopulateChromeWebUIFrameBinders( + SegmentationInternalsUI>(map); + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS_ASH) ++ BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD) + RegisterWebUIControllerInterfaceBinder< + connectors_internals::mojom::PageHandler, + enterprise_connectors::ConnectorsInternalsUI>(map); + #endif + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + RegisterWebUIControllerInterfaceBinder< + app_management::mojom::PageHandlerFactory, WebAppSettingsUI>(map); + #endif +@@ -1303,7 +1303,7 @@ void PopulateChromeWebUIFrameBinders( + #endif // BUILDFLAG(IS_CHROMEOS_ASH) + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS) ++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + RegisterWebUIControllerInterfaceBinder(map); + diff --git a/devel/electron23/files/patch-chrome_browser_chrome__browser__main.cc b/devel/electron23/files/patch-chrome_browser_chrome__browser__main.cc new file mode 100644 index 000000000000..c5760d1a371e --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_chrome__browser__main.cc @@ -0,0 +1,43 @@ +--- chrome/browser/chrome_browser_main.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/chrome_browser_main.cc +@@ -240,11 +240,11 @@ + + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + #include "chrome/browser/first_run/upgrade_util_linux.h" + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "components/crash/core/app/crashpad.h" + #endif + +@@ -279,7 +279,7 @@ + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + #include "chrome/browser/metrics/desktop_session_duration/desktop_session_duration_tracker.h" + #include "chrome/browser/metrics/desktop_session_duration/touch_mode_stats_tracker.h" + #include "chrome/browser/profiles/profile_activity_metrics_recorder.h" +@@ -988,7 +988,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { + browser_creator_->AddFirstRunTabs(master_prefs_->new_tabs); + } + +-#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Create directory for user-level Native Messaging manifest files. This + // makes it less likely that the directory will be created by third-party + // software with incorrect owner or permission. See crbug.com/725513 . +@@ -1044,7 +1044,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + metrics::DesktopSessionDurationTracker::Initialize(); + ProfileActivityMetricsRecorder::Initialize(); + TouchModeStatsTracker::Initialize( diff --git a/devel/electron23/files/patch-chrome_browser_chrome__browser__main__extra__parts__linux.cc b/devel/electron23/files/patch-chrome_browser_chrome__browser__main__extra__parts__linux.cc new file mode 100644 index 000000000000..009b0cbbe1e2 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_chrome__browser__main__extra__parts__linux.cc @@ -0,0 +1,11 @@ +--- chrome/browser/chrome_browser_main_extra_parts_linux.cc.orig 2022-02-28 16:54:41 UTC ++++ chrome/browser/chrome_browser_main_extra_parts_linux.cc +@@ -120,7 +120,7 @@ ChromeBrowserMainExtraPartsLinux::ChromeBrowserMainExt + ChromeBrowserMainExtraPartsLinux::~ChromeBrowserMainExtraPartsLinux() = default; + + void ChromeBrowserMainExtraPartsLinux::PreEarlyInitialization() { +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + // On the desktop, we fix the platform name if necessary. + // See https://crbug.com/1246928. + auto* const command_line = base::CommandLine::ForCurrentProcess(); diff --git a/devel/electron23/files/patch-chrome_browser_chrome__browser__main__linux.cc b/devel/electron23/files/patch-chrome_browser_chrome__browser__main__linux.cc new file mode 100644 index 000000000000..4393081b8a6f --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_chrome__browser__main__linux.cc @@ -0,0 +1,28 @@ +--- chrome/browser/chrome_browser_main_linux.cc.orig 2022-06-17 14:20:10 UTC ++++ chrome/browser/chrome_browser_main_linux.cc +@@ -57,13 +57,15 @@ ChromeBrowserMainPartsLinux::~ChromeBrowserMainPartsLi + } + + void ChromeBrowserMainPartsLinux::PostCreateMainMessageLoop() { +-#if BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // No-op: Ash and Lacros Bluetooth DBusManager initialization depend on + // FeatureList, and is done elsewhere. + #endif // BUILDFLAG(IS_CHROMEOS) + + #if !BUILDFLAG(IS_CHROMEOS) ++#if !BUILDFLAG(IS_BSD) + bluez::BluezDBusManager::Initialize(nullptr /* system_bus */); ++#endif + + // Set up crypt config. This needs to be done before anything starts the + // network service, as the raw encryption key needs to be shared with the +@@ -123,7 +125,7 @@ void ChromeBrowserMainPartsLinux::PostBrowserStart() { + #endif // defined(USE_DBUS) && !BUILDFLAG(IS_CHROMEOS) + + void ChromeBrowserMainPartsLinux::PostDestroyThreads() { +-#if BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // No-op; per PostBrowserStart() comment, this is done elsewhere. + #else + bluez::BluezDBusManager::Shutdown(); diff --git a/devel/electron23/files/patch-chrome_browser_chrome__browser__main__posix.cc b/devel/electron23/files/patch-chrome_browser_chrome__browser__main__posix.cc new file mode 100644 index 000000000000..0c5acc3fd1b5 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_chrome__browser__main__posix.cc @@ -0,0 +1,11 @@ +--- chrome/browser/chrome_browser_main_posix.cc.orig 2022-11-30 08:12:58 UTC ++++ chrome/browser/chrome_browser_main_posix.cc +@@ -73,7 +73,7 @@ void ExitHandler::ExitWhenPossibleOnUIThread(int signa + } else { + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + switch (signal) { + case SIGINT: + case SIGHUP: diff --git a/devel/electron23/files/patch-chrome_browser_chrome__content__browser__client.cc b/devel/electron23/files/patch-chrome_browser_chrome__content__browser__client.cc new file mode 100644 index 000000000000..65f275f61670 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_chrome__content__browser__client.cc @@ -0,0 +1,145 @@ +--- chrome/browser/chrome_content_browser_client.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/chrome_content_browser_client.cc +@@ -401,7 +401,7 @@ + #include "components/user_manager/user_manager.h" + #include "services/service_manager/public/mojom/interface_provider_spec.mojom.h" + #include "storage/browser/file_system/external_mount_points.h" +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + #include "chrome/browser/chrome_browser_main_linux.h" + #elif BUILDFLAG(IS_ANDROID) + #include "base/android/application_status_listener.h" +@@ -486,12 +486,12 @@ + + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \ ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) || \ + (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) + #include "chrome/browser/browser_switcher/browser_switcher_navigation_throttle.h" + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "components/crash/core/app/crash_switches.h" + #include "components/crash/core/app/crashpad.h" + #endif +@@ -500,13 +500,13 @@ + #include "components/crash/content/browser/crash_handler_host_linux.h" + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) + #include "chrome/browser/enterprise/chrome_browser_main_extra_parts_enterprise.h" + #include "chrome/browser/ui/webui/app_settings/web_app_settings_navigation_throttle.h" + #endif + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || \ +- BUILDFLAG(IS_CHROMEOS_ASH) ++ BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD) + #include "chrome/browser/enterprise/connectors/device_trust/navigation_throttle.h" + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || + // BUILDFLAG(IS_CHROMEOS_ASH) +@@ -535,11 +535,11 @@ + + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.h" + #endif + +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + #include "chrome/browser/chrome_browser_main_extra_parts_linux.h" + #elif BUILDFLAG(IS_OZONE) + #include "chrome/browser/chrome_browser_main_extra_parts_ozone.h" +@@ -1649,7 +1649,7 @@ ChromeContentBrowserClient::CreateBrowserMainParts(boo + #elif BUILDFLAG(IS_CHROMEOS_LACROS) + main_parts = std::make_unique( + is_integration_test, &startup_data_); +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + main_parts = std::make_unique( + is_integration_test, &startup_data_); + #elif BUILDFLAG(IS_ANDROID) +@@ -1688,7 +1688,7 @@ ChromeContentBrowserClient::CreateBrowserMainParts(boo + std::make_unique()); + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + main_parts->AddParts( + std::make_unique()); + #else +@@ -1709,7 +1709,7 @@ ChromeContentBrowserClient::CreateBrowserMainParts(boo + main_parts->AddParts(std::make_unique()); + #endif + +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + main_parts->AddParts(std::make_unique()); + #elif BUILDFLAG(IS_OZONE) + main_parts->AddParts(std::make_unique()); +@@ -1728,7 +1728,7 @@ ChromeContentBrowserClient::CreateBrowserMainParts(boo + + chrome::AddMetricsExtraParts(main_parts.get()); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) + main_parts->AddParts( + std::make_unique< + chrome::enterprise_util::ChromeBrowserMainExtraPartsEnterprise>()); +@@ -2550,6 +2550,8 @@ void ChromeContentBrowserClient::AppendExtraCommandLin + #elif BUILDFLAG(IS_POSIX) + #if BUILDFLAG(IS_ANDROID) + bool enable_crash_reporter = true; ++#elif BUILDFLAG(IS_BSD) ++ bool enable_crash_reporter = false; + #elif BUILDFLAG(IS_CHROMEOS) + bool enable_crash_reporter = false; + if (crash_reporter::IsCrashpadEnabled()) { +@@ -2933,7 +2935,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLin + ThreadProfilerConfiguration::Get()->AppendCommandLineSwitchForChildProcess( + command_line); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD) + // Opt into a hardened stack canary mitigation if it hasn't already been + // force-disabled. + if (!browser_command_line.HasSwitch(switches::kChangeStackGuardOnFork)) { +@@ -4416,7 +4418,7 @@ void ChromeContentBrowserClient::GetAdditionalFileSyst + } + } + +-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_BSD) + void ChromeContentBrowserClient::GetAdditionalMappedFilesForChildProcess( + const base::CommandLine& command_line, + int child_process_id, +@@ -4936,14 +4938,14 @@ ChromeContentBrowserClient::CreateThrottlesForNavigati + &throttles); + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) + MaybeAddThrottle( + WebAppSettingsNavigationThrottle::MaybeCreateThrottleFor(handle), + &throttles); + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || \ +- BUILDFLAG(IS_CHROMEOS_ASH) ++ BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD) + MaybeAddThrottle(enterprise_connectors::DeviceTrustNavigationThrottle:: + MaybeCreateThrottleFor(handle), + &throttles); +@@ -4978,7 +4980,7 @@ ChromeContentBrowserClient::CreateThrottlesForNavigati + handle)); + } + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + MaybeAddThrottle(browser_switcher::BrowserSwitcherNavigationThrottle:: + MaybeCreateThrottleFor(handle), + &throttles); diff --git a/devel/electron23/files/patch-chrome_browser_chrome__content__browser__client.h b/devel/electron23/files/patch-chrome_browser_chrome__content__browser__client.h new file mode 100644 index 000000000000..06df7bb2e70b --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_chrome__content__browser__client.h @@ -0,0 +1,11 @@ +--- chrome/browser/chrome_content_browser_client.h.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/chrome_content_browser_client.h +@@ -441,7 +441,7 @@ class ChromeContentBrowserClient : public content::Con + void OverridePageVisibilityState( + content::RenderFrameHost* render_frame_host, + content::PageVisibilityState* visibility_state) override; +-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_BSD) + void GetAdditionalMappedFilesForChildProcess( + const base::CommandLine& command_line, + int child_process_id, diff --git a/devel/electron23/files/patch-chrome_browser_custom__handlers_chrome__protocol__handler__registry__delegate.cc b/devel/electron23/files/patch-chrome_browser_custom__handlers_chrome__protocol__handler__registry__delegate.cc new file mode 100644 index 000000000000..8b9b9115d38e --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_custom__handlers_chrome__protocol__handler__registry__delegate.cc @@ -0,0 +1,11 @@ +--- chrome/browser/custom_handlers/chrome_protocol_handler_registry_delegate.cc.orig 2022-02-28 16:54:41 UTC ++++ chrome/browser/custom_handlers/chrome_protocol_handler_registry_delegate.cc +@@ -69,7 +69,7 @@ void ChromeProtocolHandlerRegistryDelegate::CheckDefau + // If true default protocol handlers will be removed if the OS level + // registration for a protocol is no longer Chrome. + bool ChromeProtocolHandlerRegistryDelegate::ShouldRemoveHandlersNotInOS() { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // We don't do this on Linux as the OS registration there is not reliable, + // and Chrome OS doesn't have any notion of OS registration. + // TODO(benwells): When Linux support is more reliable remove this diff --git a/devel/electron23/files/patch-chrome_browser_defaults.cc b/devel/electron23/files/patch-chrome_browser_defaults.cc new file mode 100644 index 000000000000..d03a43578178 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_defaults.cc @@ -0,0 +1,11 @@ +--- chrome/browser/defaults.cc.orig 2022-07-22 17:30:31 UTC ++++ chrome/browser/defaults.cc +@@ -52,7 +52,7 @@ const bool kSyncAutoStarts = true; + const bool kSyncAutoStarts = false; + #endif + +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + const bool kScrollEventChangesTab = true; + #else + const bool kScrollEventChangesTab = false; diff --git a/devel/electron23/files/patch-chrome_browser_dev__ui__browser__resources.grd b/devel/electron23/files/patch-chrome_browser_dev__ui__browser__resources.grd new file mode 100644 index 000000000000..70e23c9f7c7c --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_dev__ui__browser__resources.grd @@ -0,0 +1,11 @@ +--- chrome/browser/dev_ui_browser_resources.grd.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/dev_ui_browser_resources.grd +@@ -33,7 +33,7 @@ This file specifies browser resources for developer-fa + + + +- ++ + + + diff --git a/devel/electron23/files/patch-chrome_browser_device__identity_device__oauth2__token__service__factory.cc b/devel/electron23/files/patch-chrome_browser_device__identity_device__oauth2__token__service__factory.cc new file mode 100644 index 000000000000..e5e00061d6ab --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_device__identity_device__oauth2__token__service__factory.cc @@ -0,0 +1,11 @@ +--- chrome/browser/device_identity/device_oauth2_token_service_factory.cc.orig 2022-02-28 16:54:41 UTC ++++ chrome/browser/device_identity/device_oauth2_token_service_factory.cc +@@ -28,7 +28,7 @@ std::unique_ptr CreatePlatform + return std::make_unique( + local_state); + #elif BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) || \ +- (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) ++ (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || BUILDFLAG(IS_BSD) + return std::make_unique(local_state); + #else + NOTREACHED(); diff --git a/devel/electron23/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc b/devel/electron23/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc new file mode 100644 index 000000000000..6b9f8c54bad4 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc @@ -0,0 +1,11 @@ +--- chrome/browser/devtools/devtools_eye_dropper.cc.orig 2022-02-28 16:54:41 UTC ++++ chrome/browser/devtools/devtools_eye_dropper.cc +@@ -186,7 +186,7 @@ void DevToolsEyeDropper::UpdateCursor() { + // magnified projection only with centered hotspot. + // Mac Retina requires cursor to be > 120px in order to render smoothly. + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + const float kCursorSize = 63; + const float kDiameter = 63; + const float kHotspotOffset = 32; diff --git a/devel/electron23/files/patch-chrome_browser_diagnostics_diagnostics__writer.h b/devel/electron23/files/patch-chrome_browser_diagnostics_diagnostics__writer.h new file mode 100644 index 000000000000..43c1038a8248 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_diagnostics_diagnostics__writer.h @@ -0,0 +1,11 @@ +--- chrome/browser/diagnostics/diagnostics_writer.h.orig 2022-02-07 13:39:41 UTC ++++ chrome/browser/diagnostics/diagnostics_writer.h +@@ -14,6 +14,8 @@ namespace diagnostics { + // Console base class used internally. + class SimpleConsole; + ++#undef MACHINE ++ + class DiagnosticsWriter : public DiagnosticsModel::Observer { + public: + // The type of formatting done by this writer. diff --git a/devel/electron23/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc b/devel/electron23/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc new file mode 100644 index 000000000000..011b619ac840 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc @@ -0,0 +1,29 @@ +--- chrome/browser/download/chrome_download_manager_delegate.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/download/chrome_download_manager_delegate.cc +@@ -1568,7 +1568,7 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDe + bool ChromeDownloadManagerDelegate::IsOpenInBrowserPreferreredForFile( + const base::FilePath& path) { + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_MAC) ++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + if (path.MatchesExtension(FILE_PATH_LITERAL(".pdf"))) { + return !download_prefs_->ShouldOpenPdfInSystemReader(); + } +@@ -1684,7 +1684,7 @@ void ChromeDownloadManagerDelegate::CheckDownloadAllow + content::CheckDownloadAllowedCallback check_download_allowed_cb) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_MAC) ++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + // Don't download pdf if it is a file URL, as that might cause an infinite + // download loop if Chrome is not the system pdf viewer. + if (url.SchemeIsFile() && download_prefs_->ShouldOpenPdfInSystemReader()) { +@@ -1730,7 +1730,7 @@ void ChromeDownloadManagerDelegate::CheckSavePackageAl + DCHECK(download_item->IsSavePackageDownload()); + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_MAC) ++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + absl::optional settings = + safe_browsing::DeepScanningRequest::ShouldUploadBinary(download_item); + diff --git a/devel/electron23/files/patch-chrome_browser_download_download__commands.cc b/devel/electron23/files/patch-chrome_browser_download_download__commands.cc new file mode 100644 index 000000000000..64002dd0fec3 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_download_download__commands.cc @@ -0,0 +1,20 @@ +--- chrome/browser/download/download_commands.cc.orig 2022-05-19 14:06:27 UTC ++++ chrome/browser/download/download_commands.cc +@@ -26,7 +26,7 @@ + #include "ui/base/clipboard/scoped_clipboard_writer.h" + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + #include "chrome/browser/ui/browser.h" + #include "chrome/browser/ui/browser_finder.h" + #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h" +@@ -167,7 +167,7 @@ void DownloadCommands::ExecuteCommand(Command command) + } + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + + Browser* DownloadCommands::GetBrowser() const { + if (!model_) diff --git a/devel/electron23/files/patch-chrome_browser_download_download__commands.h b/devel/electron23/files/patch-chrome_browser_download_download__commands.h new file mode 100644 index 000000000000..35050c88691a --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_download_download__commands.h @@ -0,0 +1,11 @@ +--- chrome/browser/download/download_commands.h.orig 2022-08-31 12:19:35 UTC ++++ chrome/browser/download/download_commands.h +@@ -55,7 +55,7 @@ class DownloadCommands { + void ExecuteCommand(Command command); + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + bool IsDownloadPdf() const; + bool CanOpenPdfInSystemViewer() const; + Browser* GetBrowser() const; diff --git a/devel/electron23/files/patch-chrome_browser_download_download__file__picker.cc b/devel/electron23/files/patch-chrome_browser_download_download__file__picker.cc new file mode 100644 index 000000000000..0d82ba222dc9 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_download_download__file__picker.cc @@ -0,0 +1,20 @@ +--- chrome/browser/download/download_file_picker.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/download/download_file_picker.cc +@@ -17,7 +17,7 @@ + #include "content/public/browser/download_manager.h" + #include "content/public/browser/web_contents.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) + #include "chrome/browser/ui/browser_list.h" + #include "chrome/browser/ui/browser_window.h" + #include "ui/aura/window.h" +@@ -82,7 +82,7 @@ DownloadFilePicker::DownloadFilePicker(download::Downl + // dialog in Linux (See SelectFileImpl() in select_file_dialog_linux_gtk.cc). + // and windows.Here we make owning_window host to browser current active + // window if it is null. https://crbug.com/1301898 +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) + if (!owning_window || !owning_window->GetHost()) { + owning_window = BrowserList::GetInstance() + ->GetLastActive() diff --git a/devel/electron23/files/patch-chrome_browser_download_download__item__model.cc b/devel/electron23/files/patch-chrome_browser_download_download__item__model.cc new file mode 100644 index 000000000000..ba7a6ecd721a --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_download_download__item__model.cc @@ -0,0 +1,29 @@ +--- chrome/browser/download/download_item_model.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/download/download_item_model.cc +@@ -801,7 +801,7 @@ bool DownloadItemModel::IsCommandChecked( + download_crx_util::IsExtensionDownload(*download_); + case DownloadCommands::ALWAYS_OPEN_TYPE: + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_MAC) ++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + if (download_commands->CanOpenPdfInSystemViewer()) { + DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext(profile()); + return prefs->ShouldOpenPdfInSystemReader(); +@@ -844,7 +844,7 @@ void DownloadItemModel::ExecuteCommand(DownloadCommand + base::UmaHistogramBoolean("Download.SetAlwaysOpenTo", !is_checked); + DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext(profile()); + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_MAC) ++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + if (download_commands->CanOpenPdfInSystemViewer()) { + prefs->SetShouldOpenPdfInSystemReader(!is_checked); + SetShouldPreferOpeningInBrowser(is_checked); +@@ -1255,7 +1255,7 @@ void DownloadItemModel::DetermineAndSetShouldPreferOpe + return; + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + if (download_->GetOriginalMimeType() == "application/x-x509-user-cert") { + SetShouldPreferOpeningInBrowser(true); + return; diff --git a/devel/electron23/files/patch-chrome_browser_download_download__prefs.cc b/devel/electron23/files/patch-chrome_browser_download_download__prefs.cc new file mode 100644 index 000000000000..cc12bca0a1aa --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_download_download__prefs.cc @@ -0,0 +1,90 @@ +--- chrome/browser/download/download_prefs.cc.orig 2022-11-30 08:12:58 UTC ++++ chrome/browser/download/download_prefs.cc +@@ -13,6 +13,7 @@ + #include "base/callback_helpers.h" + #include "base/check.h" + #include "base/cxx17_backports.h" ++#include "base/command_line.h" + #include "base/feature_list.h" + #include "base/files/file_util.h" + #include "base/no_destructor.h" +@@ -61,6 +62,10 @@ + #include "chrome/browser/ui/pdf/adobe_reader_info_win.h" + #endif + ++#if BUILDFLAG(IS_OPENBSD) ++#include "sandbox/policy/openbsd/sandbox_openbsd.h" ++#endif ++ + using content::BrowserContext; + using content::BrowserThread; + using content::DownloadManager; +@@ -71,7 +76,7 @@ namespace { + // Consider downloads 'dangerous' if they go to the home directory on Linux and + // to the desktop on any platform. + bool DownloadPathIsDangerous(const base::FilePath& download_path) { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + base::FilePath home_dir = base::GetHomeDir(); + if (download_path == home_dir) { + return true; +@@ -182,7 +187,7 @@ DownloadPrefs::DownloadPrefs(Profile* profile) : profi + #endif // BUILDFLAG(IS_CHROMEOS_ASH) + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_MAC) ++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + should_open_pdf_in_system_reader_ = + prefs->GetBoolean(prefs::kOpenPdfDownloadInSystemReader); + #endif +@@ -302,7 +307,7 @@ void DownloadPrefs::RegisterProfilePrefs( + registry->RegisterTimePref(prefs::kDownloadLastCompleteTime, + /*default_value=*/base::Time()); + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_MAC) ++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + registry->RegisterBooleanPref(prefs::kOpenPdfDownloadInSystemReader, false); + #endif + #if BUILDFLAG(IS_ANDROID) +@@ -475,7 +480,7 @@ void DownloadPrefs::DisableAutoOpenByUserBasedOnExtens + } + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_MAC) ++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + void DownloadPrefs::SetShouldOpenPdfInSystemReader(bool should_open) { + if (should_open_pdf_in_system_reader_ == should_open) + return; +@@ -507,7 +512,7 @@ bool DownloadPrefs::ShouldOpenPdfInSystemReader() cons + + void DownloadPrefs::ResetAutoOpenByUser() { + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_MAC) ++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + SetShouldOpenPdfInSystemReader(false); + #endif + auto_open_by_user_.clear(); +@@ -538,7 +543,7 @@ void DownloadPrefs::SaveAutoOpenState() { + bool DownloadPrefs::CanPlatformEnableAutoOpenForPdf() const { + #if BUILDFLAG(IS_CHROMEOS) + return false; // There is no UI for auto-open on ChromeOS. +-#elif BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) ++#elif BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + return ShouldOpenPdfInSystemReader(); + #else + return false; +@@ -662,7 +667,14 @@ base::FilePath DownloadPrefs::SanitizeDownloadTargetPa + #else + // If the stored download directory is an absolute path, we presume it's + // correct; there's not really much more validation we can do here. ++#if BUILDFLAG(IS_OPENBSD) ++ // If unveil(2) is used, force the file dialog directory to something we ++ // know is available. ++ auto* sandbox = sandbox::policy::SandboxLinux::GetInstance(); ++ if (!sandbox->unveil_initialized() && path.IsAbsolute()) ++#else + if (path.IsAbsolute()) ++#endif + return path; + + // When the default download directory is *not* an absolute path, we use the diff --git a/devel/electron23/files/patch-chrome_browser_download_download__prefs.h b/devel/electron23/files/patch-chrome_browser_download_download__prefs.h new file mode 100644 index 000000000000..128fa5206221 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_download_download__prefs.h @@ -0,0 +1,20 @@ +--- chrome/browser/download/download_prefs.h.orig 2022-11-30 08:12:58 UTC ++++ chrome/browser/download/download_prefs.h +@@ -118,7 +118,7 @@ class DownloadPrefs { + void DisableAutoOpenByUserBasedOnExtension(const base::FilePath& file_name); + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_MAC) ++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + // Store the user preference to disk. If |should_open| is true, also disable + // the built-in PDF plugin. If |should_open| is false, enable the PDF plugin. + void SetShouldOpenPdfInSystemReader(bool should_open); +@@ -178,7 +178,7 @@ class DownloadPrefs { + std::unique_ptr auto_open_allowed_by_urls_; + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_MAC) ++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + bool should_open_pdf_in_system_reader_; + #endif + diff --git a/devel/electron23/files/patch-chrome_browser_enterprise_connectors_analysis_analysis__service__settings.cc b/devel/electron23/files/patch-chrome_browser_enterprise_connectors_analysis_analysis__service__settings.cc new file mode 100644 index 000000000000..c90f36e25b3a --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_enterprise_connectors_analysis_analysis__service__settings.cc @@ -0,0 +1,16 @@ +--- chrome/browser/enterprise/connectors/analysis/analysis_service_settings.cc.orig 2022-09-24 10:57:32 UTC ++++ chrome/browser/enterprise/connectors/analysis/analysis_service_settings.cc +@@ -142,11 +142,11 @@ AnalysisServiceSettings::AnalysisServiceSettings( + const char* verification_key = kKeyWindowsVerification; + #elif BUILDFLAG(IS_MAC) + const char* verification_key = kKeyMacVerification; +-#elif BUILDFLAG(IS_LINUX) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + const char* verification_key = kKeyLinuxVerification; + #endif + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + const base::Value::Dict& dict = settings_value.GetDict(); + const base::Value::List* signatures = + dict.FindListByDottedPath(verification_key); diff --git a/devel/electron23/files/patch-chrome_browser_enterprise_connectors_connectors__service.cc b/devel/electron23/files/patch-chrome_browser_enterprise_connectors_connectors__service.cc new file mode 100644 index 000000000000..e3fe52a2c1e0 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_enterprise_connectors_connectors__service.cc @@ -0,0 +1,11 @@ +--- chrome/browser/enterprise/connectors/connectors_service.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/enterprise/connectors/connectors_service.cc +@@ -513,7 +513,7 @@ bool ConnectorsService::ConnectorsEnabled() const { + + Profile* profile = Profile::FromBrowserContext(context_); + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + // On desktop, the guest profile is actually the primary OTR profile of + // the "regular" guest profile. The regular guest profile is never used + // directly by users. Also, user are not able to create child OTR profiles diff --git a/devel/electron23/files/patch-chrome_browser_enterprise_connectors_device__trust_device__trust__connector__service__factory.cc b/devel/electron23/files/patch-chrome_browser_enterprise_connectors_device__trust_device__trust__connector__service__factory.cc new file mode 100644 index 000000000000..2265e7bf79bc --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_enterprise_connectors_device__trust_device__trust__connector__service__factory.cc @@ -0,0 +1,43 @@ +--- chrome/browser/enterprise/connectors/device_trust/device_trust_connector_service_factory.cc.orig 2022-11-30 08:12:58 UTC ++++ chrome/browser/enterprise/connectors/device_trust/device_trust_connector_service_factory.cc +@@ -11,11 +11,11 @@ + #include "chrome/browser/profiles/profile.h" + #include "components/keyed_service/core/keyed_service.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + #include "chrome/browser/browser_process.h" + #if BUILDFLAG(IS_MAC) + #include "chrome/browser/enterprise/connectors/device_trust/browser/mac_device_trust_connector_service.h" +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) + #include "chrome/browser/enterprise/connectors/device_trust/browser/browser_device_trust_connector_service.h" + #endif // BUILDFLAG(IS_MAC) + #include "chrome/browser/policy/chrome_browser_policy_connector.h" +@@ -45,7 +45,7 @@ DeviceTrustConnectorService* DeviceTrustConnectorServi + + bool DeviceTrustConnectorServiceFactory::ServiceIsCreatedWithBrowserContext() + const { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + return IsDeviceTrustConnectorFeatureEnabled(); + #else + return false; +@@ -81,7 +81,7 @@ KeyedService* DeviceTrustConnectorServiceFactory::Buil + + DeviceTrustConnectorService* service = nullptr; + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + if (IsDeviceTrustConnectorFeatureEnabled()) { + auto* key_manager = g_browser_process->browser_policy_connector() + ->chrome_browser_cloud_management_controller() +@@ -89,7 +89,7 @@ KeyedService* DeviceTrustConnectorServiceFactory::Buil + #if BUILDFLAG(IS_MAC) + service = new MacDeviceTrustConnectorService( + key_manager, profile->GetPrefs(), g_browser_process->local_state()); +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) + service = new BrowserDeviceTrustConnectorService(key_manager, + profile->GetPrefs()); + #endif // BUILDFLAG(IS_MAC) diff --git a/devel/electron23/files/patch-chrome_browser_enterprise_connectors_device__trust_device__trust__service__factory.cc b/devel/electron23/files/patch-chrome_browser_enterprise_connectors_device__trust_device__trust__service__factory.cc new file mode 100644 index 000000000000..63412c621bd8 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_enterprise_connectors_device__trust_device__trust__service__factory.cc @@ -0,0 +1,11 @@ +--- chrome/browser/enterprise/connectors/device_trust/device_trust_service_factory.cc.orig 2022-11-30 08:12:58 UTC ++++ chrome/browser/enterprise/connectors/device_trust/device_trust_service_factory.cc +@@ -21,7 +21,7 @@ + #include "components/policy/core/common/management/management_service.h" + #include "content/public/browser/browser_context.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + #include "chrome/browser/browser_process.h" + #include "chrome/browser/enterprise/connectors/device_trust/attestation/desktop/desktop_attestation_service.h" + #include "chrome/browser/policy/chrome_browser_policy_connector.h" diff --git a/devel/electron23/files/patch-chrome_browser_enterprise_connectors_device__trust_key__management_browser_commands_key__rotation__command__factory.cc b/devel/electron23/files/patch-chrome_browser_enterprise_connectors_device__trust_key__management_browser_commands_key__rotation__command__factory.cc new file mode 100644 index 000000000000..72a03e4cb336 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_enterprise_connectors_device__trust_key__management_browser_commands_key__rotation__command__factory.cc @@ -0,0 +1,20 @@ +--- chrome/browser/enterprise/connectors/device_trust/key_management/browser/commands/key_rotation_command_factory.cc.orig 2022-10-24 13:33:33 UTC ++++ chrome/browser/enterprise/connectors/device_trust/key_management/browser/commands/key_rotation_command_factory.cc +@@ -14,7 +14,7 @@ + + #if BUILDFLAG(IS_WIN) + #include "chrome/browser/enterprise/connectors/device_trust/key_management/browser/commands/win_key_rotation_command.h" +-#elif BUILDFLAG(IS_LINUX) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + #include "chrome/browser/enterprise/connectors/device_trust/key_management/browser/commands/linux_key_rotation_command.h" + #elif BUILDFLAG(IS_MAC) + #include "chrome/browser/enterprise/connectors/device_trust/key_management/browser/commands/mac_key_rotation_command.h" +@@ -47,7 +47,7 @@ std::unique_ptr KeyRotationCommand + PrefService* local_prefs) { + #if BUILDFLAG(IS_WIN) + return std::make_unique(); +-#elif BUILDFLAG(IS_LINUX) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + return std::make_unique(url_loader_factory); + #elif BUILDFLAG(IS_MAC) + return std::make_unique(url_loader_factory, diff --git a/devel/electron23/files/patch-chrome_browser_enterprise_connectors_device__trust_key__management_core_persistence_key__persistence__delegate__factory.cc b/devel/electron23/files/patch-chrome_browser_enterprise_connectors_device__trust_key__management_core_persistence_key__persistence__delegate__factory.cc new file mode 100644 index 000000000000..8268b3ffef16 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_enterprise_connectors_device__trust_key__management_core_persistence_key__persistence__delegate__factory.cc @@ -0,0 +1,20 @@ +--- chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/key_persistence_delegate_factory.cc.orig 2022-02-28 16:54:41 UTC ++++ chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/key_persistence_delegate_factory.cc +@@ -13,7 +13,7 @@ + #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/win_key_persistence_delegate.h" + #elif BUILDFLAG(IS_MAC) + #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/mac_key_persistence_delegate.h" +-#elif BUILDFLAG(IS_LINUX) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/linux_key_persistence_delegate.h" + #endif + +@@ -44,7 +44,7 @@ KeyPersistenceDelegateFactory::CreateKeyPersistenceDel + return std::make_unique(); + #elif BUILDFLAG(IS_MAC) + return std::make_unique(); +-#elif BUILDFLAG(IS_LINUX) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + return std::make_unique(); + #else + NOTREACHED(); diff --git a/devel/electron23/files/patch-chrome_browser_enterprise_connectors_device__trust_signals_signals__service__factory.cc b/devel/electron23/files/patch-chrome_browser_enterprise_connectors_device__trust_signals_signals__service__factory.cc new file mode 100644 index 000000000000..07cb869cf2b3 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_enterprise_connectors_device__trust_signals_signals__service__factory.cc @@ -0,0 +1,20 @@ +--- chrome/browser/enterprise/connectors/device_trust/signals/signals_service_factory.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/enterprise/connectors/device_trust/signals/signals_service_factory.cc +@@ -22,7 +22,7 @@ + #include "chrome/browser/enterprise/connectors/device_trust/signals/decorators/browser/win/win_signals_decorator.h" + #endif // BUILDFLAG(IS_WIN) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + #include "base/check.h" + #include "chrome/browser/enterprise/connectors/device_trust/signals/decorators/browser/browser_signals_decorator.h" + #include "chrome/browser/policy/chrome_browser_policy_connector.h" +@@ -62,7 +62,7 @@ std::unique_ptr CreateSignalsService(P + decorators.push_back(std::make_unique()); + #endif // BUILDFLAG(IS_WIN) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + policy::CloudPolicyStore* store = nullptr; + + // Managed device. diff --git a/devel/electron23/files/patch-chrome_browser_enterprise_connectors_reporting_browser__crash__event__router.cc b/devel/electron23/files/patch-chrome_browser_enterprise_connectors_reporting_browser__crash__event__router.cc new file mode 100644 index 000000000000..17ad5be28520 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_enterprise_connectors_reporting_browser__crash__event__router.cc @@ -0,0 +1,19 @@ +--- chrome/browser/enterprise/connectors/reporting/browser_crash_event_router.cc.orig 2022-10-24 13:33:33 UTC ++++ chrome/browser/enterprise/connectors/reporting/browser_crash_event_router.cc +@@ -19,14 +19,14 @@ + #include "chrome/common/chrome_paths.h" + #include "components/version_info/version_info.h" + +-#if !BUILDFLAG(IS_FUCHSIA) ++#if !BUILDFLAG(IS_FUCHSIA) && !BUILDFLAG(IS_BSD) + #include "components/crash/core/app/crashpad.h" + #include "third_party/crashpad/crashpad/client/crash_report_database.h" + #endif // !BUILDFLAG(IS_FUCHSIA) + + namespace enterprise_connectors { + +-#if !BUILDFLAG(IS_FUCHSIA) ++#if !BUILDFLAG(IS_FUCHSIA) && !BUILDFLAG(IS_BSD) + namespace { + // key names used when building the dictionary to pass to the real-time + // reporting API diff --git a/devel/electron23/files/patch-chrome_browser_enterprise_connectors_reporting_browser__crash__event__router.h b/devel/electron23/files/patch-chrome_browser_enterprise_connectors_reporting_browser__crash__event__router.h new file mode 100644 index 000000000000..f48465f57a76 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_enterprise_connectors_reporting_browser__crash__event__router.h @@ -0,0 +1,29 @@ +--- chrome/browser/enterprise/connectors/reporting/browser_crash_event_router.h.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/enterprise/connectors/reporting/browser_crash_event_router.h +@@ -9,7 +9,7 @@ + #include "chrome/browser/enterprise/connectors/reporting/realtime_reporting_client.h" + #include "components/enterprise/browser/controller/chrome_browser_cloud_management_controller.h" + +-#if !BUILDFLAG(IS_FUCHSIA) ++#if !BUILDFLAG(IS_FUCHSIA) && !BUILDFLAG(IS_BSD) + #include "third_party/crashpad/crashpad/client/crash_report_database.h" + #endif // !BUILDFLAG(IS_FUCHSIA) + namespace enterprise_connectors { +@@ -31,7 +31,7 @@ class BrowserCrashEventRouter + BrowserCrashEventRouter& operator=(BrowserCrashEventRouter&&) = delete; + ~BrowserCrashEventRouter() override; + +-#if !BUILDFLAG(IS_FUCHSIA) ++#if !BUILDFLAG(IS_FUCHSIA) && !BUILDFLAG(IS_BSD) + void OnCloudReportingLaunched( + enterprise_reporting::ReportScheduler* report_scheduler) override; + void UploadToReportingServer( +@@ -46,7 +46,7 @@ class BrowserCrashEventRouter + raw_ptr + controller_ = nullptr; + +-#if !BUILDFLAG(IS_FUCHSIA) ++#if !BUILDFLAG(IS_FUCHSIA) && !BUILDFLAG(IS_BSD) + // ReportCrashes() checks the enterprise policy settings, retrieves crash + // reports from the crashpad local database and sends reports that have not + // been sent to the reporting server. diff --git a/devel/electron23/files/patch-chrome_browser_enterprise_identifiers_profile__id__delegate__impl.cc b/devel/electron23/files/patch-chrome_browser_enterprise_identifiers_profile__id__delegate__impl.cc new file mode 100644 index 000000000000..0911288fdfbd --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_enterprise_identifiers_profile__id__delegate__impl.cc @@ -0,0 +1,20 @@ +--- chrome/browser/enterprise/identifiers/profile_id_delegate_impl.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/enterprise/identifiers/profile_id_delegate_impl.cc +@@ -12,7 +12,7 @@ + #include "components/enterprise/browser/identifiers/identifiers_prefs.h" + #include "components/prefs/pref_service.h" + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + #include "components/enterprise/browser/controller/browser_dm_token_storage.h" + #if BUILDFLAG(IS_WIN) + #include "base/strings/utf_string_conversions.h" +@@ -36,7 +36,7 @@ void CreateProfileGUID(PrefService* prefs) { + } + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + // Gets the device ID from the BrowserDMTokenStorage. + std::string GetId() { + std::string device_id = diff --git a/devel/electron23/files/patch-chrome_browser_enterprise_remote__commands_cbcm__remote__commands__factory.cc b/devel/electron23/files/patch-chrome_browser_enterprise_remote__commands_cbcm__remote__commands__factory.cc new file mode 100644 index 000000000000..255d96a1e284 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_enterprise_remote__commands_cbcm__remote__commands__factory.cc @@ -0,0 +1,20 @@ +--- chrome/browser/enterprise/remote_commands/cbcm_remote_commands_factory.cc.orig 2022-02-28 16:54:41 UTC ++++ chrome/browser/enterprise/remote_commands/cbcm_remote_commands_factory.cc +@@ -11,7 +11,7 @@ + #include "chrome/browser/profiles/profile_manager.h" + #include "components/policy/core/common/remote_commands/remote_command_job.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + #include "chrome/browser/enterprise/connectors/device_trust/device_trust_features.h" + #include "chrome/browser/enterprise/remote_commands/rotate_attestation_credential_job.h" + #include "chrome/browser/policy/chrome_browser_policy_connector.h" +@@ -31,7 +31,7 @@ CBCMRemoteCommandsFactory::BuildJobForType( + g_browser_process->profile_manager()); + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + if (enterprise_connectors::IsDeviceTrustConnectorFeatureEnabled() && + type == enterprise_management:: + RemoteCommand_Type_BROWSER_ROTATE_ATTESTATION_CREDENTIAL) { diff --git a/devel/electron23/files/patch-chrome_browser_enterprise_signals_device__info__fetcher.cc b/devel/electron23/files/patch-chrome_browser_enterprise_signals_device__info__fetcher.cc new file mode 100644 index 000000000000..7474e42d664a --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_enterprise_signals_device__info__fetcher.cc @@ -0,0 +1,20 @@ +--- chrome/browser/enterprise/signals/device_info_fetcher.cc.orig 2022-11-30 08:12:58 UTC ++++ chrome/browser/enterprise/signals/device_info_fetcher.cc +@@ -10,7 +10,7 @@ + #include "chrome/browser/enterprise/signals/device_info_fetcher_mac.h" + #elif BUILDFLAG(IS_WIN) + #include "chrome/browser/enterprise/signals/device_info_fetcher_win.h" +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "chrome/browser/enterprise/signals/device_info_fetcher_linux.h" + #endif + +@@ -71,7 +71,7 @@ std::unique_ptr DeviceInfoFetcher:: + return std::make_unique(); + #elif BUILDFLAG(IS_WIN) + return std::make_unique(); +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + return std::make_unique(); + #else + return std::make_unique(); diff --git a/devel/electron23/files/patch-chrome_browser_enterprise_signals_device__info__fetcher__linux.cc b/devel/electron23/files/patch-chrome_browser_enterprise_signals_device__info__fetcher__linux.cc new file mode 100644 index 000000000000..63eec68ffcfc --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_enterprise_signals_device__info__fetcher__linux.cc @@ -0,0 +1,78 @@ +--- chrome/browser/enterprise/signals/device_info_fetcher_linux.cc.orig 2022-02-07 13:39:41 UTC ++++ chrome/browser/enterprise/signals/device_info_fetcher_linux.cc +@@ -4,12 +4,23 @@ + + #include "chrome/browser/enterprise/signals/device_info_fetcher_linux.h" + ++#include "build/build_config.h" ++ + #if defined(USE_GIO) + #include + #endif // defined(USE_GIO) + #include ++#if !defined(OS_BSD) + #include ++#endif + ++#if defined(OS_BSD) ++#include ++#include ++#include ++#include ++#endif ++ + #include + + #include "base/environment.h" +@@ -118,6 +129,7 @@ SettingValue GetScreenlockSecured() { + // Implements the logic from the native host installation script. First find the + // root device identifier, then locate its parent and get its type. + SettingValue GetDiskEncrypted() { ++#if !defined(OS_BSD) + struct stat info; + // First figure out the device identifier. Fail fast if this fails. + if (stat("/", &info) != 0) +@@ -139,11 +151,35 @@ SettingValue GetDiskEncrypted() { + } + return SettingValue::UNKNOWN; + } ++#endif + return SettingValue::DISABLED; + } + + std::vector GetMacAddresses() { + std::vector result; ++#if defined(OS_BSD) ++ struct ifaddrs* ifa = nullptr; ++ ++ if (getifaddrs(&ifa) != 0) ++ return result; ++ ++ struct ifaddrs* interface = ifa; ++ for (; interface != nullptr; interface = interface->ifa_next) { ++ if (interface->ifa_addr == nullptr || ++ interface->ifa_addr->sa_family != AF_LINK) { ++ continue; ++ } ++ struct sockaddr_dl* sdl = ++ reinterpret_cast(interface->ifa_addr); ++ if (!sdl || sdl->sdl_alen != 6) ++ continue; ++ char* link_address = static_cast(LLADDR(sdl)); ++ result.push_back(base::StringPrintf( ++ "%02x:%02x:%02x:%02x:%02x:%02x", link_address[0] & 0xff, ++ link_address[1] & 0xff, link_address[2] & 0xff, link_address[3] & 0xff, ++ link_address[4] & 0xff, link_address[5] & 0xff)); ++ } ++#else + base::DirReaderPosix reader("/sys/class/net"); + if (!reader.IsValid()) + return result; +@@ -166,6 +202,7 @@ std::vector GetMacAddresses() { + &address); + result.push_back(address); + } ++#endif + return result; + } + diff --git a/devel/electron23/files/patch-chrome_browser_extensions_BUILD.gn b/devel/electron23/files/patch-chrome_browser_extensions_BUILD.gn new file mode 100644 index 000000000000..5e119c6db81d --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_extensions_BUILD.gn @@ -0,0 +1,13 @@ +--- chrome/browser/extensions/BUILD.gn.orig 2022-11-30 08:12:58 UTC ++++ chrome/browser/extensions/BUILD.gn +@@ -1328,6 +1328,10 @@ static_library("extensions") { + deps += [ "//chrome/services/printing/public/mojom" ] + } + ++ if (is_bsd) { ++ sources -= [ "api/image_writer_private/removable_storage_provider_linux.cc" ] ++ } ++ + if (enable_service_discovery) { + sources += [ + "api/mdns/mdns_api.cc", diff --git a/devel/electron23/files/patch-chrome_browser_extensions_api_api__browser__context__keyed__service__factories.cc b/devel/electron23/files/patch-chrome_browser_extensions_api_api__browser__context__keyed__service__factories.cc new file mode 100644 index 000000000000..2e1a53847797 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_extensions_api_api__browser__context__keyed__service__factories.cc @@ -0,0 +1,20 @@ +--- chrome/browser/extensions/api/api_browser_context_keyed_service_factories.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/extensions/api/api_browser_context_keyed_service_factories.cc +@@ -40,7 +40,7 @@ + #include "extensions/browser/api/bluetooth_low_energy/bluetooth_low_energy_api.h" + #include "extensions/browser/api/networking_private/networking_private_delegate_factory.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) + #include "chrome/browser/extensions/api/system_indicator/system_indicator_manager_factory.h" + #endif + +@@ -92,7 +92,7 @@ void EnsureApiBrowserContextKeyedServiceFactoriesBuilt + extensions::SettingsPrivateEventRouterFactory::GetInstance(); + extensions::SettingsOverridesAPI::GetFactoryInstance(); + extensions::SidePanelService::GetFactoryInstance(); +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) + extensions::SystemIndicatorManagerFactory::GetInstance(); + #endif + extensions::TabGroupsEventRouterFactory::GetInstance(); diff --git a/devel/electron23/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_chrome__desktop__report__request__helper.cc b/devel/electron23/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_chrome__desktop__report__request__helper.cc new file mode 100644 index 000000000000..6ddb4b1c7de4 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_chrome__desktop__report__request__helper.cc @@ -0,0 +1,29 @@ +--- chrome/browser/extensions/api/enterprise_reporting_private/chrome_desktop_report_request_helper.cc.orig 2022-07-22 17:30:31 UTC ++++ chrome/browser/extensions/api/enterprise_reporting_private/chrome_desktop_report_request_helper.cc +@@ -24,7 +24,7 @@ + #include "base/win/registry.h" + #endif + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "base/environment.h" + #include "base/nix/xdg_util.h" + #endif +@@ -256,7 +256,7 @@ base::FilePath GetEndpointVerificationDir() { + bool got_path = false; + #if BUILDFLAG(IS_WIN) + got_path = base::PathService::Get(base::DIR_LOCAL_APP_DATA, &path); +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + std::unique_ptr env(base::Environment::Create()); + path = base::nix::GetXDGDirectory(env.get(), base::nix::kXdgConfigHomeEnvVar, + base::nix::kDotConfigDir); +@@ -267,7 +267,7 @@ base::FilePath GetEndpointVerificationDir() { + if (!got_path) + return path; + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + path = path.AppendASCII("google"); + #else + path = path.AppendASCII("Google"); diff --git a/devel/electron23/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_conversion__utils.cc b/devel/electron23/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_conversion__utils.cc new file mode 100644 index 000000000000..82dd2b1604b2 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_conversion__utils.cc @@ -0,0 +1,11 @@ +--- chrome/browser/extensions/api/enterprise_reporting_private/conversion_utils.cc.orig 2022-11-30 08:12:58 UTC ++++ chrome/browser/extensions/api/enterprise_reporting_private/conversion_utils.cc +@@ -8,7 +8,7 @@ + + #include "build/build_config.h" + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + + #include + #include diff --git a/devel/electron23/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_conversion__utils.h b/devel/electron23/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_conversion__utils.h new file mode 100644 index 000000000000..cd8c69565344 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_conversion__utils.h @@ -0,0 +1,11 @@ +--- chrome/browser/extensions/api/enterprise_reporting_private/conversion_utils.h.orig 2022-08-31 12:19:35 UTC ++++ chrome/browser/extensions/api/enterprise_reporting_private/conversion_utils.h +@@ -7,7 +7,7 @@ + + #include "build/build_config.h" + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + + #include + diff --git a/devel/electron23/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_enterprise__reporting__private__api.cc b/devel/electron23/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_enterprise__reporting__private__api.cc new file mode 100644 index 000000000000..752400c66ae4 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_enterprise__reporting__private__api.cc @@ -0,0 +1,38 @@ +--- chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_api.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_api.cc +@@ -31,7 +31,7 @@ + #include "components/reporting/util/statusor.h" + #endif + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + #include "base/strings/string_util.h" + #include "chrome/browser/enterprise/signals/signals_aggregator_factory.h" + #include "chrome/browser/extensions/api/enterprise_reporting_private/conversion_utils.h" +@@ -149,7 +149,7 @@ api::enterprise_reporting_private::ContextInfo ToConte + return info; + } + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + + device_signals::SignalsAggregationRequest CreateAggregationRequest( + const std::string& user_id, +@@ -209,7 +209,7 @@ EnterpriseReportingPrivateGetDeviceIdFunction:: + + // getPersistentSecret + +-#if !BUILDFLAG(IS_LINUX) ++#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_BSD) + + EnterpriseReportingPrivateGetPersistentSecretFunction:: + EnterpriseReportingPrivateGetPersistentSecretFunction() = default; +@@ -636,7 +636,7 @@ void EnterpriseReportingPrivateEnqueueRecordFunction:: + } + #endif + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + + // getFileSystemInfo + diff --git a/devel/electron23/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_enterprise__reporting__private__api.h b/devel/electron23/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_enterprise__reporting__private__api.h new file mode 100644 index 000000000000..bba2bf2f5f30 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_extensions_api_enterprise__reporting__private_enterprise__reporting__private__api.h @@ -0,0 +1,29 @@ +--- chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_api.h.orig 2022-11-30 08:12:58 UTC ++++ chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_api.h +@@ -19,7 +19,7 @@ + #include "components/reporting/proto/synced/record.pb.h" + #include "components/reporting/proto/synced/record_constants.pb.h" + #include "components/reporting/util/statusor.h" +-#elif BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#elif BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + #include "base/time/time.h" + #include "components/device_signals/core/browser/signals_types.h" + #endif // BUILDFLAG(IS_CHROMEOS) +@@ -55,7 +55,7 @@ class EnterpriseReportingPrivateGetDeviceIdFunction : + ~EnterpriseReportingPrivateGetDeviceIdFunction() override; + }; + +-#if !BUILDFLAG(IS_LINUX) ++#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_BSD) + + class EnterpriseReportingPrivateGetPersistentSecretFunction + : public ExtensionFunction { +@@ -265,7 +265,7 @@ class EnterpriseReportingPrivateEnqueueRecordFunction + + #endif + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + + class EnterpriseReportingPrivateGetFileSystemInfoFunction + : public ExtensionFunction { diff --git a/devel/electron23/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc b/devel/electron23/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc new file mode 100644 index 000000000000..7f4aa748d089 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc @@ -0,0 +1,20 @@ +--- chrome/browser/extensions/api/image_writer_private/removable_storage_provider.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/extensions/api/image_writer_private/removable_storage_provider.cc +@@ -20,6 +20,7 @@ static base::LazyInstancePostTask( + FROM_HERE, +@@ -33,6 +34,9 @@ void RemovableStorageProvider::GetAllDevices(DeviceLis + base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}, + base::BindOnce(&RemovableStorageProvider::PopulateDeviceList), + std::move(callback)); ++#else ++ NOTIMPLEMENTED(); ++#endif + } + + // static diff --git a/devel/electron23/files/patch-chrome_browser_extensions_api_messaging_native__process__launcher__posix.cc b/devel/electron23/files/patch-chrome_browser_extensions_api_messaging_native__process__launcher__posix.cc new file mode 100644 index 000000000000..657717257a26 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_extensions_api_messaging_native__process__launcher__posix.cc @@ -0,0 +1,11 @@ +--- chrome/browser/extensions/api/messaging/native_process_launcher_posix.cc.orig 2022-02-28 16:54:41 UTC ++++ chrome/browser/extensions/api/messaging/native_process_launcher_posix.cc +@@ -82,7 +82,7 @@ bool NativeProcessLauncher::LaunchNativeProcess( + + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + // Don't use no_new_privs mode, e.g. in case the host needs to use sudo. + options.allow_new_privs = true; + #endif diff --git a/devel/electron23/files/patch-chrome_browser_extensions_api_passwords__private_passwords__private__delegate__impl.cc b/devel/electron23/files/patch-chrome_browser_extensions_api_passwords__private_passwords__private__delegate__impl.cc new file mode 100644 index 000000000000..62a21f7dc8f1 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_extensions_api_passwords__private_passwords__private__delegate__impl.cc @@ -0,0 +1,11 @@ +--- chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.cc +@@ -518,7 +518,7 @@ void PasswordsPrivateDelegateImpl::OsReauthCall( + } + + void PasswordsPrivateDelegateImpl::OsReauthTimeoutCall() { +-#if !BUILDFLAG(IS_LINUX) ++#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_BSD) + PasswordsPrivateEventRouter* router = + PasswordsPrivateEventRouterFactory::GetForProfile(profile_); + if (router) diff --git a/devel/electron23/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc b/devel/electron23/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc new file mode 100644 index 000000000000..3794a2d4db5f --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc @@ -0,0 +1,20 @@ +--- chrome/browser/extensions/api/settings_private/prefs_util.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/extensions/api/settings_private/prefs_util.cc +@@ -185,7 +185,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlist + + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + (*s_allowlist)[::prefs::kUseCustomChromeFrame] = + settings_api::PrefType::PREF_TYPE_BOOLEAN; + #endif +@@ -197,7 +197,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlist + settings_api::PrefType::PREF_TYPE_STRING; + (*s_allowlist)[::prefs::kPolicyThemeColor] = + settings_api::PrefType::PREF_TYPE_NUMBER; +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + (*s_allowlist)[::prefs::kUsesSystemThemeDeprecated] = + settings_api::PrefType::PREF_TYPE_BOOLEAN; + (*s_allowlist)[::prefs::kSystemTheme] = diff --git a/devel/electron23/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc b/devel/electron23/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc new file mode 100644 index 000000000000..643e85fb5537 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc @@ -0,0 +1,29 @@ +--- chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc.orig 2022-07-22 17:30:31 UTC ++++ chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc +@@ -29,7 +29,7 @@ + #include "extensions/browser/process_manager.h" + #include "extensions/common/error_utils.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "extensions/common/permissions/permissions_data.h" + #endif + +@@ -38,7 +38,7 @@ namespace { + bool CanEnableAudioDebugRecordingsFromExtension( + const extensions::Extension* extension) { + bool enabled_by_permissions = false; +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + if (extension) { + enabled_by_permissions = + extension->permissions_data()->active_permissions().HasAPIPermission( +@@ -580,7 +580,7 @@ void WebrtcLoggingPrivateStartEventLoggingFunction::Fi + + ExtensionFunction::ResponseAction + WebrtcLoggingPrivateGetLogsDirectoryFunction::Run() { +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Unlike other WebrtcLoggingPrivate functions that take a RequestInfo object, + // this function shouldn't be called by a component extension on behalf of + // some web code. It returns a DirectoryEntry for use directly in the calling diff --git a/devel/electron23/files/patch-chrome_browser_extensions_external__provider__impl.cc b/devel/electron23/files/patch-chrome_browser_extensions_external__provider__impl.cc new file mode 100644 index 000000000000..d7b6e7d98ec1 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_extensions_external__provider__impl.cc @@ -0,0 +1,20 @@ +--- chrome/browser/extensions/external_provider_impl.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/extensions/external_provider_impl.cc +@@ -825,7 +825,7 @@ void ExternalProviderImpl::CreateExternalProviders( + if (!profile->GetPrefs()->GetBoolean(pref_names::kBlockExternalExtensions)) { + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + provider_list->push_back(std::make_unique( + service, + base::MakeRefCounted( +@@ -853,7 +853,7 @@ void ExternalProviderImpl::CreateExternalProviders( + bundled_extension_creation_flags)); + + // Define a per-user source of external extensions. +-#if BUILDFLAG(IS_MAC) || ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && \ ++#if BUILDFLAG(IS_MAC) || ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)) && \ + BUILDFLAG(CHROMIUM_BRANDING)) + provider_list->push_back(std::make_unique( + service, diff --git a/devel/electron23/files/patch-chrome_browser_file__system__access_chrome__file__system__access__permission__context.cc b/devel/electron23/files/patch-chrome_browser_file__system__access_chrome__file__system__access__permission__context.cc new file mode 100644 index 000000000000..95307f007a7f --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_file__system__access_chrome__file__system__access__permission__context.cc @@ -0,0 +1,11 @@ +--- chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc.orig 2023-02-16 14:15:53 UTC ++++ chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc +@@ -302,7 +302,7 @@ const struct { + {base::DIR_HOME, FILE_PATH_LITERAL("Library/CloudStorage"), + kDontBlockChildren}, + #endif +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // On Linux also block access to devices via /dev. + {kNoBasePathKey, FILE_PATH_LITERAL("/dev"), kBlockAllChildren}, + // And security sensitive data in /proc and /sys. diff --git a/devel/electron23/files/patch-chrome_browser_first__run_first__run__dialog.h b/devel/electron23/files/patch-chrome_browser_first__run_first__run__dialog.h new file mode 100644 index 000000000000..8f7d4918c91a --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_first__run_first__run__dialog.h @@ -0,0 +1,11 @@ +--- chrome/browser/first_run/first_run_dialog.h.orig 2022-11-30 08:12:58 UTC ++++ chrome/browser/first_run/first_run_dialog.h +@@ -12,7 +12,7 @@ + // Hide this function on platforms where the dialog does not exist. + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. +-#if BUILDFLAG(IS_MAC) || (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) ++#if BUILDFLAG(IS_MAC) || (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || BUILDFLAG(IS_BSD) + + namespace first_run { + diff --git a/devel/electron23/files/patch-chrome_browser_first__run_first__run__internal.h b/devel/electron23/files/patch-chrome_browser_first__run_first__run__internal.h new file mode 100644 index 000000000000..c20f89819d93 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_first__run_first__run__internal.h @@ -0,0 +1,11 @@ +--- chrome/browser/first_run/first_run_internal.h.orig 2022-11-30 08:12:58 UTC ++++ chrome/browser/first_run/first_run_internal.h +@@ -54,7 +54,7 @@ FirstRunState DetermineFirstRunState(bool has_sentinel + bool force_first_run, + bool no_first_run); + +-#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + // For testing, forces the first run dialog to either be shown or not. If not + // called, the decision to show the dialog or not will be made by Chrome based + // on a number of factors (such as install type, whether it's a Chrome-branded diff --git a/devel/electron23/files/patch-chrome_browser_flag__descriptions.cc b/devel/electron23/files/patch-chrome_browser_flag__descriptions.cc new file mode 100644 index 000000000000..a92b37c2c8a6 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_flag__descriptions.cc @@ -0,0 +1,56 @@ +--- chrome/browser/flag_descriptions.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/flag_descriptions.cc +@@ -6339,7 +6339,7 @@ const char kSearchWebInSidePanelDescription[] = + // Random platform combinations ----------------------------------------------- + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + const char kQuickCommandsName[] = "Quick Commands"; + const char kQuickCommandsDescription[] = + "Enable a text interface to browser features. Invoke with Ctrl-Space."; +@@ -6348,7 +6348,7 @@ const char kQuickCommandsDescription[] = + // BUILDFLAG(IS_FUCHSIA) + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_CHROMEOS) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + const char kFollowingFeedSidepanelName[] = "Following feed in the sidepanel"; + const char kFollowingFeedSidepanelDescription[] = + "Enables the following feed in the sidepanel."; +@@ -6369,7 +6369,7 @@ const char kWebShareDescription[] = + "platforms."; + #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) + +-#if BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) ++#if (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS)) || BUILDFLAG(IS_BSD) + const char kOzonePlatformHintChoiceDefault[] = "Default"; + const char kOzonePlatformHintChoiceAuto[] = "Auto"; + const char kOzonePlatformHintChoiceX11[] = "X11"; +@@ -6389,7 +6389,7 @@ const char kWebBluetoothConfirmPairingSupportDescripti + "Bluetooth"; + #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + const char kSkipUndecryptablePasswordsName[] = + "Skip undecryptable passwords to use the available decryptable " + "passwords."; +@@ -6403,7 +6403,7 @@ const char kForcePasswordInitialSyncWhenDecryptionFail + "storage and requests initial sync."; + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + const char kAsyncDnsName[] = "Async DNS resolver"; + const char kAsyncDnsDescription[] = "Enables the built-in DNS resolver."; + #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) +@@ -6496,7 +6496,7 @@ const char kElasticOverscrollDescription[] = + + #if BUILDFLAG(IS_WIN) || \ + (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || \ +- BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + const char kUIDebugToolsName[] = "Debugging tools for UI"; + const char kUIDebugToolsDescription[] = + "Enables additional keyboard shortcuts to help debugging."; diff --git a/devel/electron23/files/patch-chrome_browser_flag__descriptions.h b/devel/electron23/files/patch-chrome_browser_flag__descriptions.h new file mode 100644 index 000000000000..13f46025bc3e --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_flag__descriptions.h @@ -0,0 +1,62 @@ +--- chrome/browser/flag_descriptions.h.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/flag_descriptions.h +@@ -3657,14 +3657,14 @@ extern const char kSearchWebInSidePanelDescription[]; + // Random platform combinations ----------------------------------------------- + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + extern const char kQuickCommandsName[]; + extern const char kQuickCommandsDescription[]; + + #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || + // defined (OS_FUCHSIA) + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + extern const char kWebShareName[]; + extern const char kWebShareDescription[]; + #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) +@@ -3674,7 +3674,7 @@ extern const char kWebBluetoothConfirmPairingSupportNa + extern const char kWebBluetoothConfirmPairingSupportDescription[]; + #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) + +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + extern const char kOzonePlatformHintChoiceDefault[]; + extern const char kOzonePlatformHintChoiceAuto[]; + extern const char kOzonePlatformHintChoiceX11[]; +@@ -3684,7 +3684,7 @@ extern const char kOzonePlatformHintName[]; + extern const char kOzonePlatformHintDescription[]; + #endif // BUILDFLAG(IS_LINUX) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + extern const char kSkipUndecryptablePasswordsName[]; + extern const char kSkipUndecryptablePasswordsDescription[]; + +@@ -3692,13 +3692,13 @@ extern const char kForcePasswordInitialSyncWhenDecrypt + extern const char kForcePasswordInitialSyncWhenDecryptionFailsDescription[]; + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + extern const char kAsyncDnsName[]; + extern const char kAsyncDnsDescription[]; + #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_CHROMEOS) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + extern const char kFollowingFeedSidepanelName[]; + extern const char kFollowingFeedSidepanelDescription[]; + #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || +@@ -3773,7 +3773,7 @@ extern const char kElasticOverscrollDescription[]; + + #if BUILDFLAG(IS_WIN) || \ + (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || \ +- BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + extern const char kUIDebugToolsName[]; + extern const char kUIDebugToolsDescription[]; + diff --git a/devel/electron23/files/patch-chrome_browser_headless_headless__mode__util.cc b/devel/electron23/files/patch-chrome_browser_headless_headless__mode__util.cc new file mode 100644 index 000000000000..41af2d3dc326 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_headless_headless__mode__util.cc @@ -0,0 +1,25 @@ +--- chrome/browser/headless/headless_mode_util.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/headless/headless_mode_util.cc +@@ -10,11 +10,11 @@ + // New headless mode is available on Linux, Windows and Mac platforms. + // More platforms will be added later, so avoid function level clutter + // by providing stub implementations at the end of the file. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + + #include "base/base_switches.h" + +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + #include "ui/gl/gl_switches.h" + #include "ui/ozone/public/ozone_switches.h" + #endif // BUILDFLAG(IS_LINUX) +@@ -64,7 +64,7 @@ void SetUpCommandLine(const base::CommandLine* command + base::CommandLine::ForCurrentProcess()->AppendSwitch( + ::switches::kNoErrorDialogs); + } +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + // Headless mode on Linux relies on ozone/headless platform. + base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( + ::switches::kOzonePlatform, switches::kHeadless); diff --git a/devel/electron23/files/patch-chrome_browser_intranet__redirect__detector.h b/devel/electron23/files/patch-chrome_browser_intranet__redirect__detector.h new file mode 100644 index 000000000000..cb20abe773a3 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_intranet__redirect__detector.h @@ -0,0 +1,11 @@ +--- chrome/browser/intranet_redirect_detector.h.orig 2022-02-28 16:54:41 UTC ++++ chrome/browser/intranet_redirect_detector.h +@@ -27,7 +27,7 @@ class SimpleURLLoader; + class PrefRegistrySimple; + + #if !(BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)) ++ BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)) + #error "IntranetRedirectDetector should only be built on Desktop platforms." + #endif + diff --git a/devel/electron23/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc b/devel/electron23/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc new file mode 100644 index 000000000000..1359e252c0eb --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc @@ -0,0 +1,15 @@ +--- chrome/browser/media_galleries/fileapi/mtp_device_map_service.cc.orig 2022-02-07 13:39:41 UTC ++++ chrome/browser/media_galleries/fileapi/mtp_device_map_service.cc +@@ -39,10 +39,12 @@ void MTPDeviceMapService::RegisterMTPFileSystem( + // Note that this initializes the delegate asynchronously, but since + // the delegate will only be used from the IO thread, it is guaranteed + // to be created before use of it expects it to be there. ++#if !defined(OS_BSD) + CreateMTPDeviceAsyncDelegate( + device_location, read_only, + base::BindOnce(&MTPDeviceMapService::AddAsyncDelegate, + base::Unretained(this), device_location, read_only)); ++#endif + mtp_device_usage_map_[key] = 0; + } + diff --git a/devel/electron23/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc b/devel/electron23/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc new file mode 100644 index 000000000000..66d669e63ab6 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc @@ -0,0 +1,16 @@ +--- chrome/browser/media_galleries/media_file_system_registry.cc.orig 2022-10-24 13:33:33 UTC ++++ chrome/browser/media_galleries/media_file_system_registry.cc +@@ -585,7 +585,12 @@ class MediaFileSystemRegistry::MediaFileSystemContextI + // Constructor in 'private' section because depends on private class definition. + MediaFileSystemRegistry::MediaFileSystemRegistry() + : file_system_context_(new MediaFileSystemContextImpl) { +- StorageMonitor::GetInstance()->AddObserver(this); ++ /* ++ * This conditional is needed for shutdown. Destructors ++ * try to get the media file system registry. ++ */ ++ if (StorageMonitor::GetInstance()) ++ StorageMonitor::GetInstance()->AddObserver(this); + } + + MediaFileSystemRegistry::~MediaFileSystemRegistry() { diff --git a/devel/electron23/files/patch-chrome_browser_media_audio__service__util.cc b/devel/electron23/files/patch-chrome_browser_media_audio__service__util.cc new file mode 100644 index 000000000000..93af34d33a38 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_media_audio__service__util.cc @@ -0,0 +1,20 @@ +--- chrome/browser/media/audio_service_util.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/media/audio_service_util.cc +@@ -21,7 +21,7 @@ + + namespace { + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \ ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) || \ + (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)) + const base::Value* GetPolicy(const char* policy_name) { + const policy::PolicyMap& policies = +@@ -43,7 +43,7 @@ bool GetPolicyOrFeature(const char* policy_name, const + bool IsAudioServiceSandboxEnabled() { + // TODO(crbug.com/1052397): Remove !IS_CHROMEOS_LACROS once lacros starts being + // built with OS_CHROMEOS instead of OS_LINUX. +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \ ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) || \ + (BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS_LACROS)) + return GetPolicyOrFeature(policy::key::kAudioSandboxEnabled, + features::kAudioServiceSandbox); diff --git a/devel/electron23/files/patch-chrome_browser_media_router_discovery_BUILD.gn b/devel/electron23/files/patch-chrome_browser_media_router_discovery_BUILD.gn new file mode 100644 index 000000000000..ebaf501970b5 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_media_router_discovery_BUILD.gn @@ -0,0 +1,11 @@ +--- chrome/browser/media/router/discovery/BUILD.gn.orig 2022-10-24 13:33:33 UTC ++++ chrome/browser/media/router/discovery/BUILD.gn +@@ -80,7 +80,7 @@ static_library("discovery") { + "media_sink_discovery_metrics.h", + ] + +- if (is_linux || is_chromeos) { ++ if ((is_linux || is_chromeos) && !is_bsd) { + sources += [ "discovery_network_list_wifi_linux.cc" ] + } + diff --git a/devel/electron23/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc b/devel/electron23/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc new file mode 100644 index 000000000000..71650219d44a --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc @@ -0,0 +1,48 @@ +--- chrome/browser/media/router/discovery/discovery_network_list_posix.cc.orig 2022-02-28 16:54:41 UTC ++++ chrome/browser/media/router/discovery/discovery_network_list_posix.cc +@@ -5,11 +5,12 @@ + #include "chrome/browser/media/router/discovery/discovery_network_list.h" + + #include ++#include ++#include ++#include + #include + #include + #include +-#include +-#include + + #include + +@@ -18,7 +19,7 @@ + #include "chrome/browser/media/router/discovery/discovery_network_list_wifi.h" + #include "net/base/net_errors.h" + +-#if !BUILDFLAG(IS_MAC) ++#if !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_BSD) + #include + #else + #include +@@ -27,7 +28,7 @@ + namespace media_router { + namespace { + +-#if !BUILDFLAG(IS_MAC) ++#if !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_BSD) + using sll = struct sockaddr_ll; + #define SOCKET_ARP_TYPE(s) ((s)->sll_hatype) + #define SOCKET_ADDRESS_LEN(s) ((s)->sll_halen) +@@ -38,6 +39,12 @@ using sll = struct sockaddr_dl; + #define SOCKET_ARP_TYPE(s) ((s)->sdl_type) + #define SOCKET_ADDRESS_LEN(s) ((s)->sdl_alen) + #define SOCKET_ADDRESS(s) (LLADDR(s)) ++#endif ++ ++#if BUILDFLAG(IS_BSD) ++bool MaybeGetWifiSSID(const std::string& if_name, std::string* ssid_out) { ++ return false; ++} + #endif + + void GetDiscoveryNetworkInfoListImpl( diff --git a/devel/electron23/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc b/devel/electron23/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc new file mode 100644 index 000000000000..bf6fc5cf1a6f --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc @@ -0,0 +1,30 @@ +--- chrome/browser/media/router/discovery/discovery_network_list_wifi_linux.cc.orig 2021-04-14 18:40:53 UTC ++++ chrome/browser/media/router/discovery/discovery_network_list_wifi_linux.cc +@@ -9,7 +9,11 @@ + #include + #include + ++#include "build/build_config.h" ++ ++#if !defined(OS_BSD) + #include ++#endif + + #include "base/check.h" + #include "base/files/scoped_file.h" +@@ -20,6 +24,7 @@ namespace media_router { + bool MaybeGetWifiSSID(const std::string& if_name, std::string* ssid_out) { + DCHECK(ssid_out); + ++#if !defined(OS_BSD) + base::ScopedFD ioctl_socket(socket(AF_INET, SOCK_DGRAM, 0)); + if (!ioctl_socket.is_valid()) { + // AF_INET is for IPv4, so it may fail for IPv6-only hosts even when there +@@ -41,6 +46,7 @@ bool MaybeGetWifiSSID(const std::string& if_name, std: + ssid_out->assign(ssid); + return true; + } ++#endif + return false; + } + diff --git a/devel/electron23/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc b/devel/electron23/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc new file mode 100644 index 000000000000..5e7159774a61 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc @@ -0,0 +1,11 @@ +--- chrome/browser/media/webrtc/webrtc_event_log_uploader.cc.orig 2022-02-28 16:54:41 UTC ++++ chrome/browser/media/webrtc/webrtc_event_log_uploader.cc +@@ -40,7 +40,7 @@ const char kProduct[] = "Chrome"; + const char kProduct[] = "Chrome_Mac"; + #elif BUILDFLAG(IS_CHROMEOS_ASH) + const char kProduct[] = "Chrome_ChromeOS"; +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + const char kProduct[] = "Chrome_Linux"; + #elif BUILDFLAG(IS_ANDROID) + const char kProduct[] = "Chrome_Android"; diff --git a/devel/electron23/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc b/devel/electron23/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc new file mode 100644 index 000000000000..be4c6b83e83f --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc @@ -0,0 +1,13 @@ +--- chrome/browser/media/webrtc/webrtc_log_uploader.cc.orig 2022-05-19 14:06:27 UTC ++++ chrome/browser/media/webrtc/webrtc_log_uploader.cc +@@ -362,6 +362,10 @@ void WebRtcLogUploader::SetupMultipart( + const char product[] = "Chrome_ChromeOS"; + #elif BUILDFLAG(IS_FUCHSIA) + const char product[] = "Chrome_Fuchsia"; ++#elif defined(OS_OPENBSD) ++ const char product[] = "Chrome_OpenBSD"; ++#elif defined(OS_FREEBSD) ++ const char product[] = "Chrome_FreeBSD"; + #else + #error Platform not supported. + #endif diff --git a/devel/electron23/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.cc b/devel/electron23/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.cc new file mode 100644 index 000000000000..05637ef06508 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.cc @@ -0,0 +1,33 @@ +--- chrome/browser/media/webrtc/webrtc_logging_controller.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/media/webrtc/webrtc_logging_controller.cc +@@ -23,10 +23,10 @@ + #include "content/public/browser/browser_context.h" + #include "content/public/browser/render_process_host.h" + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "content/public/browser/child_process_security_policy.h" + #include "storage/browser/file_system/isolated_context.h" +-#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + + using webrtc_event_logging::WebRtcEventLogManager; + +@@ -277,7 +277,7 @@ void WebRtcLoggingController::StartEventLogging( + web_app_id, callback); + } + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + void WebRtcLoggingController::GetLogsDirectory( + LogsDirectoryCallback callback, + LogsDirectoryErrorCallback error_callback) { +@@ -322,7 +322,7 @@ void WebRtcLoggingController::GrantLogsDirectoryAccess + FROM_HERE, + base::BindOnce(std::move(callback), file_system.id(), registered_name)); + } +-#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + + void WebRtcLoggingController::OnRtpPacket( + std::unique_ptr packet_header, diff --git a/devel/electron23/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.h b/devel/electron23/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.h new file mode 100644 index 000000000000..1b1c49d92b09 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.h @@ -0,0 +1,20 @@ +--- chrome/browser/media/webrtc/webrtc_logging_controller.h.orig 2022-10-24 13:33:33 UTC ++++ chrome/browser/media/webrtc/webrtc_logging_controller.h +@@ -133,7 +133,7 @@ class WebRtcLoggingController + size_t web_app_id, + const StartEventLoggingCallback& callback); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Ensures that the WebRTC Logs directory exists and then grants render + // process access to the 'WebRTC Logs' directory, and invokes |callback| with + // the ids necessary to create a DirectoryEntry object. +@@ -192,7 +192,7 @@ class WebRtcLoggingController + bool success, + const std::string& error_message); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + // Grants the render process access to the 'WebRTC Logs' directory, and + // invokes |callback| with the ids necessary to create a DirectoryEntry + // object. If the |logs_path| couldn't be created or found, |error_callback| diff --git a/devel/electron23/files/patch-chrome_browser_memory__details.cc b/devel/electron23/files/patch-chrome_browser_memory__details.cc new file mode 100644 index 000000000000..18dd4eaf463f --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_memory__details.cc @@ -0,0 +1,20 @@ +--- chrome/browser/memory_details.cc.orig 2022-02-28 16:54:41 UTC ++++ chrome/browser/memory_details.cc +@@ -38,7 +38,7 @@ + #include "services/resource_coordinator/public/cpp/memory_instrumentation/memory_instrumentation.h" + #include "ui/base/l10n/l10n_util.h" + +-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_BSD) + #include "content/public/browser/zygote_host/zygote_host_linux.h" + #endif + +@@ -329,7 +329,7 @@ void MemoryDetails::CollectChildInfoOnUIThread() { + std::ref(process))); + } + +-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_ANDROID) ++#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_BSD) + if (content::ZygoteHost::GetInstance()->IsZygotePid(process.pid)) { + process.process_type = content::PROCESS_TYPE_ZYGOTE; + } diff --git a/devel/electron23/files/patch-chrome_browser_memory__details__linux.cc b/devel/electron23/files/patch-chrome_browser_memory__details__linux.cc new file mode 100644 index 000000000000..e174124e6c99 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_memory__details__linux.cc @@ -0,0 +1,37 @@ +--- chrome/browser/memory_details_linux.cc.orig 2022-02-07 13:39:41 UTC ++++ chrome/browser/memory_details_linux.cc +@@ -13,6 +13,7 @@ + #include + + #include "base/bind.h" ++#include "base/command_line.h" + #include "base/files/file_util.h" + #include "base/process/process_iterator.h" + #include "base/process/process_metrics.h" +@@ -27,6 +28,7 @@ + #include "content/public/browser/browser_task_traits.h" + #include "content/public/browser/browser_thread.h" + #include "content/public/common/process_type.h" ++#include "sandbox/policy/switches.h" + #include "ui/base/l10n/l10n_util.h" + + using base::ProcessEntry; +@@ -70,9 +72,18 @@ ProcessData GetProcessDataMemoryInformation( + + std::unique_ptr metrics( + base::ProcessMetrics::CreateProcessMetrics(pid)); ++ ++ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); ++ if (!command_line->HasSwitch(sandbox::policy::switches::kNoSandbox)) { ++ pmi.num_open_fds = 0; ++ pmi.open_fds_soft_limit = 0; ++ goto out; ++ } ++ + pmi.num_open_fds = metrics->GetOpenFdCount(); + pmi.open_fds_soft_limit = metrics->GetOpenFdSoftLimit(); + ++out: + process_data.processes.push_back(pmi); + } + return process_data; diff --git a/devel/electron23/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc b/devel/electron23/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc new file mode 100644 index 000000000000..e19d6f09e1a3 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc @@ -0,0 +1,23 @@ +--- chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc.orig 2022-11-30 08:12:58 UTC ++++ chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc +@@ -61,8 +61,10 @@ + + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) ++#if !BUILDFLAG(IS_BSD) + #include ++#endif + + #include "base/linux_util.h" + #include "base/strings/string_split.h" +@@ -494,7 +496,7 @@ void RecordStartupMetrics() { + + // Record whether Chrome is the default browser or not. + // Disabled on Linux due to hanging browser tests, see crbug.com/1216328. +-#if !BUILDFLAG(IS_LINUX) ++#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_BSD) + shell_integration::DefaultWebClientState default_state = + shell_integration::GetDefaultBrowser(); + base::UmaHistogramEnumeration("DefaultBrowser.State", default_state, diff --git a/devel/electron23/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc b/devel/electron23/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc new file mode 100644 index 000000000000..32362af9012a --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc @@ -0,0 +1,47 @@ +--- chrome/browser/metrics/chrome_metrics_service_client.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/metrics/chrome_metrics_service_client.cc +@@ -175,7 +175,7 @@ + #include "chrome/notification_helper/notification_helper_constants.h" + #endif + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + #include "components/metrics/motherboard_metrics_provider.h" + #endif + +@@ -738,7 +738,7 @@ void ChromeMetricsServiceClient::RegisterMetricsServic + metrics_service_->RegisterMetricsProvider( + std::make_unique()); + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + metrics_service_->RegisterMetricsProvider( + std::make_unique()); + #endif +@@ -819,7 +819,7 @@ void ChromeMetricsServiceClient::RegisterMetricsServic + + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \ ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) || \ + (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) + metrics_service_->RegisterMetricsProvider( + std::make_unique()); +@@ -917,7 +917,7 @@ void ChromeMetricsServiceClient::RegisterMetricsServic + std::make_unique()); + #endif + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + metrics_service_->RegisterMetricsProvider( + metrics::CreateDesktopSessionMetricsProvider()); + #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || (BUILDFLAG(IS_LINUX) +@@ -1108,7 +1108,7 @@ bool ChromeMetricsServiceClient::RegisterForProfileEve + #endif + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \ ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) || \ + (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) + // This creates the DesktopProfileSessionDurationsServices if it didn't exist + // already. diff --git a/devel/electron23/files/patch-chrome_browser_metrics_perf_cpu__identity.cc b/devel/electron23/files/patch-chrome_browser_metrics_perf_cpu__identity.cc new file mode 100644 index 000000000000..25685c40b0cb --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_metrics_perf_cpu__identity.cc @@ -0,0 +1,11 @@ +--- chrome/browser/metrics/perf/cpu_identity.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/metrics/perf/cpu_identity.cc +@@ -141,7 +141,7 @@ CPUIdentity GetCPUIdentity() { + result.release = + #if BUILDFLAG(IS_CHROMEOS_ASH) + base::SysInfo::KernelVersion(); +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + base::SysInfo::OperatingSystemVersion(); + #else + #error "Unsupported configuration" diff --git a/devel/electron23/files/patch-chrome_browser_metrics_power_process__metrics__recorder__util.cc b/devel/electron23/files/patch-chrome_browser_metrics_power_process__metrics__recorder__util.cc new file mode 100644 index 000000000000..167de82c10fa --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_metrics_power_process__metrics__recorder__util.cc @@ -0,0 +1,11 @@ +--- chrome/browser/metrics/power/process_metrics_recorder_util.cc.orig 2022-07-22 17:30:31 UTC ++++ chrome/browser/metrics/power/process_metrics_recorder_util.cc +@@ -59,7 +59,7 @@ void RecordProcessHistograms(const char* histogram_suf + const ProcessMonitor::Metrics& metrics) { + RecordAverageCPUUsage(histogram_suffix, metrics.cpu_usage); + #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_AIX) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + base::UmaHistogramCounts10000( + base::StrCat({"PerformanceMonitor.IdleWakeups2.", histogram_suffix}), + metrics.idle_wakeups); diff --git a/devel/electron23/files/patch-chrome_browser_metrics_power_process__monitor.cc b/devel/electron23/files/patch-chrome_browser_metrics_power_process__monitor.cc new file mode 100644 index 000000000000..560fb98cad8b --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_metrics_power_process__monitor.cc @@ -0,0 +1,29 @@ +--- chrome/browser/metrics/power/process_monitor.cc.orig 2022-11-30 08:12:58 UTC ++++ chrome/browser/metrics/power/process_monitor.cc +@@ -64,7 +64,7 @@ ProcessMonitor::Metrics SampleMetrics(base::ProcessMet + #endif + + #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_AIX) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + metrics.idle_wakeups = process_metrics.GetIdleWakeupsPerSecond(); + #endif + #if BUILDFLAG(IS_MAC) +@@ -81,7 +81,7 @@ void ScaleMetrics(ProcessMonitor::Metrics* metrics, do + metrics->cpu_usage *= factor; + + #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_AIX) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + metrics->idle_wakeups *= factor; + #endif + +@@ -168,7 +168,7 @@ ProcessMonitor::Metrics& operator+=(ProcessMonitor::Me + lhs.cpu_usage += rhs.cpu_usage; + + #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_AIX) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + lhs.idle_wakeups += rhs.idle_wakeups; + #endif + diff --git a/devel/electron23/files/patch-chrome_browser_metrics_power_process__monitor.h b/devel/electron23/files/patch-chrome_browser_metrics_power_process__monitor.h new file mode 100644 index 000000000000..16db05f3bd3c --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_metrics_power_process__monitor.h @@ -0,0 +1,11 @@ +--- chrome/browser/metrics/power/process_monitor.h.orig 2022-11-30 08:12:58 UTC ++++ chrome/browser/metrics/power/process_monitor.h +@@ -75,7 +75,7 @@ class ProcessMonitor : public content::BrowserChildPro + double cpu_usage = 0.0; + + #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \ +- BUILDFLAG(IS_AIX) ++ BUILDFLAG(IS_AIX) || BUILDFLAG(IS_BSD) + // Returns the number of average idle cpu wakeups per second since the last + // time the metric was sampled. + int idle_wakeups = 0; diff --git a/devel/electron23/files/patch-chrome_browser_net_system__network__context__manager.cc b/devel/electron23/files/patch-chrome_browser_net_system__network__context__manager.cc new file mode 100644 index 000000000000..ce881997693b --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_net_system__network__context__manager.cc @@ -0,0 +1,38 @@ +--- chrome/browser/net/system_network_context_manager.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/net/system_network_context_manager.cc +@@ -92,7 +92,7 @@ + + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + #include "chrome/common/chrome_paths_internal.h" + #include "chrome/grit/chromium_strings.h" + #include "ui/base/l10n/l10n_util.h" +@@ -177,7 +177,7 @@ network::mojom::HttpAuthDynamicParamsPtr CreateHttpAut + auth_dynamic_params->basic_over_http_enabled = + local_state->GetBoolean(prefs::kBasicAuthOverHttpEnabled); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + auth_dynamic_params->delegate_by_kdc_policy = + local_state->GetBoolean(prefs::kAuthNegotiateDelegateByKdcPolicy); + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS) +@@ -455,7 +455,7 @@ SystemNetworkContextManager::SystemNetworkContextManag + pref_change_registrar_.Add(prefs::kAllHttpAuthSchemesAllowedForOrigins, + auth_pref_callback); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + pref_change_registrar_.Add(prefs::kAuthNegotiateDelegateByKdcPolicy, + auth_pref_callback); + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS) +@@ -527,7 +527,7 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRe + registry->RegisterBooleanPref(prefs::kKerberosEnabled, false); + #endif // BUILDFLAG(IS_CHROMEOS_LACROS) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + registry->RegisterBooleanPref(prefs::kAuthNegotiateDelegateByKdcPolicy, + false); + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS) diff --git a/devel/electron23/files/patch-chrome_browser_new__tab__page_modules_drive_drive__service.cc b/devel/electron23/files/patch-chrome_browser_new__tab__page_modules_drive_drive__service.cc new file mode 100644 index 000000000000..a45f061b45f9 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_new__tab__page_modules_drive_drive__service.cc @@ -0,0 +1,11 @@ +--- chrome/browser/new_tab_page/modules/drive/drive_service.cc.orig 2022-02-07 13:39:41 UTC ++++ chrome/browser/new_tab_page/modules/drive/drive_service.cc +@@ -28,7 +28,7 @@ + #include "services/network/public/cpp/resource_request.h" + + namespace { +-#if OS_LINUX ++#if defined(OS_LINUX) || defined(OS_BSD) + constexpr char kPlatform[] = "LINUX"; + #elif OS_WIN + constexpr char kPlatform[] = "WINDOWS"; diff --git a/devel/electron23/files/patch-chrome_browser_new__tab__page_new__tab__page__util.cc b/devel/electron23/files/patch-chrome_browser_new__tab__page_new__tab__page__util.cc new file mode 100644 index 000000000000..d0f0036afb0f --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_new__tab__page_new__tab__page__util.cc @@ -0,0 +1,20 @@ +--- chrome/browser/new_tab_page/new_tab_page_util.cc.orig 2022-10-24 13:33:33 UTC ++++ chrome/browser/new_tab_page/new_tab_page_util.cc +@@ -11,7 +11,7 @@ + + namespace { + bool IsOsSupportedForRecipe() { +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + return true; + #else + return false; +@@ -27,7 +27,7 @@ bool IsOsSupportedForCart() { + } + + bool IsOsSupportedForDrive() { +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + return true; + #else + return false; diff --git a/devel/electron23/files/patch-chrome_browser_notifications_notification__display__service__impl.cc b/devel/electron23/files/patch-chrome_browser_notifications_notification__display__service__impl.cc new file mode 100644 index 000000000000..cf7943370f20 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_notifications_notification__display__service__impl.cc @@ -0,0 +1,38 @@ +--- chrome/browser/notifications/notification_display_service_impl.cc.orig 2022-05-19 14:06:27 UTC ++++ chrome/browser/notifications/notification_display_service_impl.cc +@@ -32,7 +32,7 @@ + #endif + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \ +- BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + #include "chrome/browser/send_tab_to_self/desktop_notification_handler.h" + #include "chrome/browser/sharing/sharing_notification_handler.h" + #endif +@@ -65,7 +65,7 @@ NotificationDisplayServiceImpl* NotificationDisplaySer + // static + void NotificationDisplayServiceImpl::RegisterProfilePrefs( + user_prefs::PrefRegistrySyncable* registry) { +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + registry->RegisterBooleanPref(prefs::kAllowSystemNotifications, true); + #endif + } +@@ -81,7 +81,7 @@ NotificationDisplayServiceImpl::NotificationDisplaySer + std::make_unique()); + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \ +- BUILDFLAG(IS_WIN) ++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) + AddNotificationHandler( + NotificationHandler::Type::SEND_TAB_TO_SELF, + std::make_unique( +@@ -89,7 +89,7 @@ NotificationDisplayServiceImpl::NotificationDisplaySer + #endif + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \ +- BUILDFLAG(IS_WIN) ++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) + AddNotificationHandler( + NotificationHandler::Type::TAILORED_SECURITY, + std::make_unique()); diff --git a/devel/electron23/files/patch-chrome_browser_notifications_notification__platform__bridge__delegator.cc b/devel/electron23/files/patch-chrome_browser_notifications_notification__platform__bridge__delegator.cc new file mode 100644 index 000000000000..1d138c9c3cb0 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_notifications_notification__platform__bridge__delegator.cc @@ -0,0 +1,11 @@ +--- chrome/browser/notifications/notification_platform_bridge_delegator.cc.orig 2022-02-28 16:54:41 UTC ++++ chrome/browser/notifications/notification_platform_bridge_delegator.cc +@@ -57,7 +57,7 @@ bool SystemNotificationsEnabled(Profile* profile) { + #elif BUILDFLAG(IS_WIN) + return NotificationPlatformBridgeWin::SystemNotificationEnabled(); + #else +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + if (profile) { + // Prefs take precedence over flags. + PrefService* prefs = profile->GetPrefs(); diff --git a/devel/electron23/files/patch-chrome_browser_password__manager_password__reuse__manager__factory.cc b/devel/electron23/files/patch-chrome_browser_password__manager_password__reuse__manager__factory.cc new file mode 100644 index 000000000000..1b7221bf3c0f --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_password__manager_password__reuse__manager__factory.cc @@ -0,0 +1,11 @@ +--- chrome/browser/password_manager/password_reuse_manager_factory.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/password_manager/password_reuse_manager_factory.cc +@@ -101,7 +101,7 @@ KeyedService* PasswordReuseManagerFactory::BuildServic + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_CHROMEOS_LACROS) ++ BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + std::unique_ptr notifier = + std::make_unique( + IdentityManagerFactory::GetForProfile(profile)); diff --git a/devel/electron23/files/patch-chrome_browser_platform__util__linux.cc b/devel/electron23/files/patch-chrome_browser_platform__util__linux.cc new file mode 100644 index 000000000000..995007fc0e7a --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_platform__util__linux.cc @@ -0,0 +1,12 @@ +--- chrome/browser/platform_util_linux.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/platform_util_linux.cc +@@ -296,7 +296,9 @@ void RunCommand(const std::string& command, + + base::LaunchOptions options; + options.current_directory = working_directory; ++#if !defined(OS_BSD) + options.allow_new_privs = true; ++#endif + // xdg-open can fall back on mailcap which eventually might plumb through + // to a command that needs a terminal. Set the environment variable telling + // it that we definitely don't have a terminal available and that it should diff --git a/devel/electron23/files/patch-chrome_browser_policy_browser__signin__policy__handler.cc b/devel/electron23/files/patch-chrome_browser_policy_browser__signin__policy__handler.cc new file mode 100644 index 000000000000..c423fdd7f157 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_policy_browser__signin__policy__handler.cc @@ -0,0 +1,11 @@ +--- chrome/browser/policy/browser_signin_policy_handler.cc.orig 2022-10-24 13:33:33 UTC ++++ chrome/browser/policy/browser_signin_policy_handler.cc +@@ -45,7 +45,7 @@ void BrowserSigninPolicyHandler::ApplyPolicySettings(c + policies.GetValue(policy_name(), base::Value::Type::INTEGER); + switch (static_cast(value->GetInt())) { + case BrowserSigninMode::kForced: +-#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) ++#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_BSD) + prefs->SetValue(prefs::kForceBrowserSignin, base::Value(true)); + #endif + [[fallthrough]]; diff --git a/devel/electron23/files/patch-chrome_browser_policy_chrome__browser__cloud__management__controller__desktop.cc b/devel/electron23/files/patch-chrome_browser_policy_chrome__browser__cloud__management__controller__desktop.cc new file mode 100644 index 000000000000..e2dad755c53b --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_policy_chrome__browser__cloud__management__controller__desktop.cc @@ -0,0 +1,38 @@ +--- chrome/browser/policy/chrome_browser_cloud_management_controller_desktop.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/policy/chrome_browser_cloud_management_controller_desktop.cc +@@ -48,7 +48,7 @@ + #include "chrome/browser/policy/browser_dm_token_storage_mac.h" + #endif // BUILDFLAG(IS_MAC) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + #include "chrome/browser/policy/browser_dm_token_storage_linux.h" + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) + +@@ -57,7 +57,7 @@ + #include "chrome/install_static/install_util.h" + #endif // BUILDFLAG(IS_WIN) + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + #include "chrome/browser/enterprise/connectors/device_trust/device_trust_features.h" + #include "chrome/browser/enterprise/connectors/device_trust/key_management/browser/device_trust_key_manager_impl.h" + #include "chrome/browser/enterprise/connectors/device_trust/key_management/browser/key_rotation_launcher.h" +@@ -90,7 +90,7 @@ void ChromeBrowserCloudManagementControllerDesktop:: + + #if BUILDFLAG(IS_MAC) + storage_delegate = std::make_unique(); +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + storage_delegate = std::make_unique(); + #elif BUILDFLAG(IS_WIN) + storage_delegate = std::make_unique(); +@@ -245,7 +245,7 @@ ChromeBrowserCloudManagementControllerDesktop::CreateC + + std::unique_ptr + ChromeBrowserCloudManagementControllerDesktop::CreateDeviceTrustKeyManager() { +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + if (enterprise_connectors::IsDeviceTrustConnectorFeatureEnabled()) { + auto key_rotation_launcher = + enterprise_connectors::KeyRotationLauncher::Create( diff --git a/devel/electron23/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc b/devel/electron23/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc new file mode 100644 index 000000000000..67d46a48a17f --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc @@ -0,0 +1,165 @@ +--- chrome/browser/policy/configuration_policy_handler_list_factory.cc.orig 2023-02-01 18:43:11 UTC ++++ chrome/browser/policy/configuration_policy_handler_list_factory.cc +@@ -200,13 +200,13 @@ + #include "components/spellcheck/browser/pref_names.h" + #endif // BUILDFLAG(ENABLE_SPELLCHECK) + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + #include "chrome/browser/enterprise/idle/action.h" + #include "components/device_signals/core/browser/pref_names.h" + #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + #include "chrome/browser/web_applications/policy/web_app_settings_policy_handler.h" + #endif + +@@ -743,14 +743,14 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = + prefs::kManagedDefaultGeolocationSetting, + base::Value::Type::INTEGER }, + #if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) \ +- || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_MAC) ++ || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + { key::kRequireOnlineRevocationChecksForLocalAnchors, + prefs::kCertRevocationCheckingRequiredLocalAnchors, + base::Value::Type::BOOLEAN }, + #endif // #if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) + // || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_MAC) + #if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) \ +- || BUILDFLAG(IS_FUCHSIA) ++ || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + { key::kFullscreenAllowed, + prefs::kFullscreenAllowed, + base::Value::Type::BOOLEAN }, +@@ -1380,7 +1380,7 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = + base::Value::Type::BOOLEAN }, + #endif // BUILDFLAG(IS_CHROMEOS_ASH) + +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + { key::kGSSAPILibraryName, + prefs::kGSSAPILibraryName, + base::Value::Type::STRING }, +@@ -1450,18 +1450,18 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = + prefs::kTotalMemoryLimitMb, + base::Value::Type::INTEGER }, + #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + { key::kBackgroundModeEnabled, + prefs::kBackgroundModeEnabled, + base::Value::Type::BOOLEAN }, + #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + { key::kUnmanagedDeviceSignalsConsentFlowEnabled, + device_signals::prefs::kUnmanagedDeviceSignalsConsentFlowEnabled, + base::Value::Type::BOOLEAN }, + #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) \ +- || BUILDFLAG(IS_FUCHSIA) ++ || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + { key::kDefaultBrowserSettingEnabled, + prefs::kDefaultBrowserSettingEnabled, + base::Value::Type::BOOLEAN }, +@@ -1474,7 +1474,7 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = + #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) + // || BUILDFLAG(IS_FUCHSIA) + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) \ +- || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) ++ || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + { key::kAutoplayAllowed, + prefs::kAutoplayAllowed, + base::Value::Type::BOOLEAN }, +@@ -1581,7 +1581,7 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = + base::Value::Type::BOOLEAN }, + #endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + { key::kAlternativeBrowserPath, + browser_switcher::prefs::kAlternativeBrowserPath, + base::Value::Type::STRING }, +@@ -1668,7 +1668,7 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = + base::Value::Type::BOOLEAN }, + #endif // BUILDFLAG(IS_CHROMEOS) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + { key::kAuthNegotiateDelegateByKdcPolicy, + prefs::kAuthNegotiateDelegateByKdcPolicy, + base::Value::Type::BOOLEAN }, +@@ -1715,7 +1715,7 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = + #endif // BUILDFLAG(IS_CHROMEOS_ASH) + + #if BUILDFLAG(ENABLE_EXTENSIONS) && (BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) \ +- || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_FUCHSIA)) ++ || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD)) + { key::kChromeAppsEnabled, + extensions::pref_names::kChromeAppsEnabled, + base::Value::Type::BOOLEAN }, +@@ -1775,7 +1775,7 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = + { key::kPrefixedStorageInfoEnabled, + storage::kPrefixedStorageInfoEnabled, + base::Value::Type::BOOLEAN }, +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_BSD) + { key::kHighEfficiencyModeEnabled, + performance_manager::user_tuning::prefs::kHighEfficiencyModeEnabled, + base::Value::Type::BOOLEAN }, +@@ -2025,7 +2025,7 @@ std::unique_ptr BuildH + SimpleSchemaValidatingPolicyHandler::RECOMMENDED_PROHIBITED, + SimpleSchemaValidatingPolicyHandler::MANDATORY_ALLOWED)); + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + handlers->AddHandler( + std::make_unique()); + handlers->AddHandler( +@@ -2102,7 +2102,7 @@ std::unique_ptr BuildH + key::kBrowsingDataLifetime, browsing_data::prefs::kBrowsingDataLifetime, + chrome_schema)); + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) + handlers->AddHandler(std::make_unique()); + handlers->AddHandler(std::make_unique()); + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) +@@ -2137,7 +2137,7 @@ std::unique_ptr BuildH + std::vector> + signin_legacy_policies; + #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || \ +- BUILDFLAG(IS_LINUX) ++ BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + signin_legacy_policies.push_back(std::make_unique( + key::kForceBrowserSignin, prefs::kForceBrowserSignin, + base::Value::Type::BOOLEAN)); +@@ -2478,7 +2478,7 @@ std::unique_ptr BuildH + extensions::pref_names::kManifestV2Availability, /*min=*/0, /*max=*/3, + /*clamp=*/false)); + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ +- BUILDFLAG(IS_FUCHSIA) ++ BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_BSD) + handlers->AddHandler( + std::make_unique(chrome_schema)); + #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || +@@ -2491,7 +2491,7 @@ std::unique_ptr BuildH + #endif + + #if BUILDFLAG(ENABLE_SPELLCHECK) +-#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) ++#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) + handlers->AddHandler(std::make_unique()); + handlers->AddHandler( + std::make_unique( +@@ -2499,7 +2499,7 @@ std::unique_ptr BuildH + #endif // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) + #endif // BUILDFLAG(ENABLE_SPELLCHECK) + +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + handlers->AddHandler(std::make_unique( + key::kAllowSystemNotifications, prefs::kAllowSystemNotifications, + base::Value::Type::BOOLEAN)); diff --git a/devel/electron23/files/patch-chrome_browser_policy_device__management__service__configuration.cc b/devel/electron23/files/patch-chrome_browser_policy_device__management__service__configuration.cc new file mode 100644 index 000000000000..56bc422f9731 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_policy_device__management__service__configuration.cc @@ -0,0 +1,20 @@ +--- chrome/browser/policy/device_management_service_configuration.cc.orig 2022-02-28 16:54:41 UTC ++++ chrome/browser/policy/device_management_service_configuration.cc +@@ -21,7 +21,7 @@ + + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \ + ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && \ +- !BUILDFLAG(IS_ANDROID)) ++ !BUILDFLAG(IS_ANDROID)) || BUILDFLAG(IS_BSD) + #include "chrome/browser/enterprise/connectors/common.h" + #include "chrome/browser/enterprise/connectors/connectors_service.h" + #endif +@@ -100,7 +100,7 @@ DeviceManagementServiceConfiguration::GetReportingConn + content::BrowserContext* context) const { + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \ + ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && \ +- !BUILDFLAG(IS_ANDROID)) ++ !BUILDFLAG(IS_ANDROID)) || BUILDFLAG(IS_BSD) + auto* service = + enterprise_connectors::ConnectorsServiceFactory::GetForBrowserContext( + context); diff --git a/devel/electron23/files/patch-chrome_browser_prefs_browser__prefs.cc b/devel/electron23/files/patch-chrome_browser_prefs_browser__prefs.cc new file mode 100644 index 000000000000..b845e5606a58 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_prefs_browser__prefs.cc @@ -0,0 +1,69 @@ +--- chrome/browser/prefs/browser_prefs.cc.orig 2023-02-01 18:43:12 UTC ++++ chrome/browser/prefs/browser_prefs.cc +@@ -455,14 +455,14 @@ + #include "components/os_crypt/os_crypt.h" + #endif + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + #include "chrome/browser/web_applications/url_handler_prefs.h" + #include "components/device_signals/core/browser/pref_names.h" + #endif + + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \ ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) || \ + (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) + #include "chrome/browser/browser_switcher/browser_switcher_prefs.h" + #endif +@@ -495,7 +495,7 @@ + #include "chrome/browser/sessions/session_service_log.h" + #endif + +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + #include "ui/color/system_theme.h" + #endif + +@@ -1033,7 +1033,7 @@ void RegisterProfilePrefsForMigration( + registry->RegisterIntegerPref(kProfileAvatarTutorialShown, 0); + #endif + +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + // Deprecated 08/2022. + registry->RegisterBooleanPref(prefs::kUsesSystemThemeDeprecated, false); + #endif +@@ -1292,7 +1292,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) + #endif // BUILDFLAG(GOOGLE_CHROME_BRANDING) + #endif // BUILDFLAG(IS_WIN) + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + web_app::url_handler_prefs::RegisterLocalStatePrefs(registry); + #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) + +@@ -1627,11 +1627,11 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySync + safe_browsing::PostCleanupSettingsResetter::RegisterProfilePrefs(registry); + #endif + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + device_signals::RegisterProfilePrefs(registry); + #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + browser_switcher::BrowserSwitcherPrefs::RegisterProfilePrefs(registry); + #endif + +@@ -2015,7 +2015,7 @@ void MigrateObsoleteProfilePrefs(Profile* profile) { + profile_prefs->ClearPref(kProfileAvatarTutorialShown); + #endif + +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + // Added 08/2022. + if (profile_prefs->HasPrefPath(prefs::kUsesSystemThemeDeprecated)) { + auto migrated_theme = diff --git a/devel/electron23/files/patch-chrome_browser_prefs_pref__service__incognito__allowlist.cc b/devel/electron23/files/patch-chrome_browser_prefs_pref__service__incognito__allowlist.cc new file mode 100644 index 000000000000..ea151f20f8b9 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_prefs_pref__service__incognito__allowlist.cc @@ -0,0 +1,11 @@ +--- chrome/browser/prefs/pref_service_incognito_allowlist.cc.orig 2022-04-21 18:48:31 UTC ++++ chrome/browser/prefs/pref_service_incognito_allowlist.cc +@@ -138,7 +138,7 @@ const char* const kPersistentPrefNames[] = { + + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_BSD) + // Toggleing custom frames affects all open windows in the profile, hence + // should be written to the regular profile when changed in incognito mode. + prefs::kUseCustomChromeFrame, diff --git a/devel/electron23/files/patch-chrome_browser_printing_print__backend__service__manager.cc b/devel/electron23/files/patch-chrome_browser_printing_print__backend__service__manager.cc new file mode 100644 index 000000000000..4763619c1886 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_printing_print__backend__service__manager.cc @@ -0,0 +1,29 @@ +--- chrome/browser/printing/print_backend_service_manager.cc.orig 2023-02-01 18:43:12 UTC ++++ chrome/browser/printing/print_backend_service_manager.cc +@@ -513,7 +513,7 @@ absl::optional PrintBackendServiceManager::R + query_clients_.insert(client_id); + break; + case ClientType::kQueryWithUi: +-#if !BUILDFLAG(IS_LINUX) ++#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_BSD) + if (!query_with_ui_clients_.empty()) + return absl::nullopt; + #endif +@@ -751,7 +751,7 @@ PrintBackendServiceManager::DetermineIdleTimeoutUpdate + break; + + case ClientType::kQueryWithUi: +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + // No need to update if there were other query with UI clients. + if (query_with_ui_clients_.size() > 1) + return absl::nullopt; +@@ -808,7 +808,7 @@ PrintBackendServiceManager::DetermineIdleTimeoutUpdate + return kNoClientsRegisteredResetOnIdleTimeout; + + case ClientType::kQueryWithUi: +-#if BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + // No need to update if there were other query with UI clients. + if (!query_with_ui_clients_.empty()) + return absl::nullopt; diff --git a/devel/electron23/files/patch-chrome_browser_printing_print__job__worker.cc b/devel/electron23/files/patch-chrome_browser_printing_print__job__worker.cc new file mode 100644 index 000000000000..e555e0825932 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_printing_print__job__worker.cc @@ -0,0 +1,11 @@ +--- chrome/browser/printing/print_job_worker.cc.orig 2023-02-15 13:08:45 UTC ++++ chrome/browser/printing/print_job_worker.cc +@@ -205,7 +205,7 @@ void PrintJobWorker::SetSettings(base::Value::Dict new + crash_key = std::make_unique( + print_backend->GetPrinterDriverInfo(printer_name)); + +-#if BUILDFLAG(IS_LINUX) && BUILDFLAG(USE_CUPS) ++#if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) && BUILDFLAG(USE_CUPS) + PrinterBasicInfo basic_info; + if (print_backend->GetPrinterBasicInfo(printer_name, &basic_info) == + mojom::ResultCode::kSuccess) { diff --git a/devel/electron23/files/patch-chrome_browser_process__singleton__posix.cc b/devel/electron23/files/patch-chrome_browser_process__singleton__posix.cc new file mode 100644 index 000000000000..4b865dd4e088 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_process__singleton__posix.cc @@ -0,0 +1,11 @@ +--- chrome/browser/process_singleton_posix.cc.orig 2023-01-30 07:58:59 UTC ++++ chrome/browser/process_singleton_posix.cc +@@ -357,7 +357,7 @@ bool DisplayProfileInUseError(const base::FilePath& lo + if (g_disable_prompt) + return g_user_opted_unlock_in_use_profile; + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD) + std::u16string relaunch_button_text = + l10n_util::GetStringUTF16(IDS_PROFILE_IN_USE_LINUX_RELAUNCH); + return ShowProcessSingletonDialog(error, relaunch_button_text); diff --git a/devel/electron23/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc b/devel/electron23/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc new file mode 100644 index 000000000000..70b21e668171 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc @@ -0,0 +1,25 @@ +--- chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc.orig 2023-02-01 18:43:12 UTC ++++ chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +@@ -260,7 +260,7 @@ + #include "chrome/browser/ui/cocoa/screentime/screentime_features.h" + #endif + +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + #include "chrome/browser/enterprise/idle/idle_service_factory.h" + #endif + +@@ -444,11 +444,11 @@ void ChromeBrowserMainExtraPartsProfiles:: + #endif + // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch + // of lacros-chrome is complete. +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || \ ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) || \ + (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) + metrics::DesktopProfileSessionDurationsServiceFactory::GetInstance(); + #endif +-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD) + enterprise_idle::IdleServiceFactory::GetInstance(); + #endif + ModelTypeStoreServiceFactory::GetInstance(); diff --git a/devel/electron23/files/patch-chrome_browser_profiles_profile__impl.cc b/devel/electron23/files/patch-chrome_browser_profiles_profile__impl.cc new file mode 100644 index 000000000000..64770634e38b --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_profiles_profile__impl.cc @@ -0,0 +1,31 @@ +--- chrome/browser/profiles/profile_impl.cc.orig 2023-02-01 18:43:12 UTC ++++ chrome/browser/profiles/profile_impl.cc +@@ -257,6 +257,10 @@ + #include "chrome/browser/spellchecker/spellcheck_service.h" + #endif + ++#if BUILDFLAG(IS_OPENBSD) ++#include "sandbox/policy/openbsd/sandbox_openbsd.h" ++#endif ++ + using bookmarks::BookmarkModel; + using content::BrowserThread; + using content::DownloadManagerDelegate; +@@ -861,7 +865,17 @@ void ProfileImpl::DoFinalInit(CreateMode create_mode) + } + + base::FilePath ProfileImpl::last_selected_directory() { ++#if BUILDFLAG(IS_OPENBSD) ++ // If unveil(2) is used, force the file dialog directory to something we ++ // know is available. ++ auto* sandbox = sandbox::policy::SandboxLinux::GetInstance(); ++ if (sandbox->unveil_initialized()) ++ return GetPrefs()->GetFilePath(prefs::kDownloadDefaultDirectory); ++ else ++ return GetPrefs()->GetFilePath(prefs::kSelectFileLastDirectory); ++#else + return GetPrefs()->GetFilePath(prefs::kSelectFileLastDirectory); ++#endif + } + + void ProfileImpl::set_last_selected_directory(const base::FilePath& path) { diff --git a/devel/electron23/files/patch-chrome_browser_profiles_profiles__state.cc b/devel/electron23/files/patch-chrome_browser_profiles_profiles__state.cc new file mode 100644 index 000000000000..014e10c0cde4 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_profiles_profiles__state.cc @@ -0,0 +1,11 @@ +--- chrome/browser/profiles/profiles_state.cc.orig 2022-09-24 10:57:32 UTC ++++ chrome/browser/profiles/profiles_state.cc +@@ -181,7 +181,7 @@ bool IsGuestModeRequested(const base::CommandLine& com + PrefService* local_state, + bool show_warning) { + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) || \ +- BUILDFLAG(IS_MAC) ++ BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD) + DCHECK(local_state); + + // Check if guest mode enforcement commandline switch or policy are provided. diff --git a/devel/electron23/files/patch-chrome_browser_renderer__preferences__util.cc b/devel/electron23/files/patch-chrome_browser_renderer__preferences__util.cc new file mode 100644 index 000000000000..757006f3bbbf --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_renderer__preferences__util.cc @@ -0,0 +1,29 @@ +--- chrome/browser/renderer_preferences_util.cc.orig 2022-10-24 13:33:33 UTC ++++ chrome/browser/renderer_preferences_util.cc +@@ -37,7 +37,7 @@ + #include "ui/views/controls/textfield/textfield.h" + #endif + +-#if defined(USE_AURA) && BUILDFLAG(IS_LINUX) ++#if defined(USE_AURA) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) + #include "chrome/browser/themes/theme_service.h" + #include "chrome/browser/themes/theme_service_factory.h" + #include "ui/linux/linux_ui.h" +@@ -156,7 +156,7 @@ void UpdateFromSystemSettings(blink::RendererPreferenc + prefs->caret_blink_interval = views::Textfield::GetCaretBlinkInterval(); + #endif + +-#if defined(USE_AURA) && BUILDFLAG(IS_LINUX) ++#if defined(USE_AURA) && (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)) + auto* linux_ui_theme = ui::LinuxUiTheme::GetForProfile(profile); + if (linux_ui_theme) { + if (ThemeServiceFactory::GetForProfile(profile)->UsingSystemTheme()) { +@@ -179,7 +179,7 @@ void UpdateFromSystemSettings(blink::RendererPreferenc + #endif + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) || \ +- BUILDFLAG(IS_WIN) ++ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD) + content::UpdateFontRendererPreferencesFromSystemSettings(prefs); + #endif + diff --git a/devel/electron23/files/patch-chrome_browser_resources_sandbox__internals_sandbox__internals.ts b/devel/electron23/files/patch-chrome_browser_resources_sandbox__internals_sandbox__internals.ts new file mode 100644 index 000000000000..5b36ac3f8636 --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_resources_sandbox__internals_sandbox__internals.ts @@ -0,0 +1,29 @@ +--- chrome/browser/resources/sandbox_internals/sandbox_internals.ts.orig 2023-02-01 18:43:12 UTC ++++ chrome/browser/resources/sandbox_internals/sandbox_internals.ts +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. + +-// ++// + import './strings.m.js'; + + import {loadTimeData} from 'chrome://resources/js/load_time_data.js'; +@@ -121,7 +121,7 @@ function androidHandler() { + } + // + +-// ++// + + /** + * Adds a status row that reports either Yes or No. +@@ -182,7 +182,7 @@ document.addEventListener('DOMContentLoaded', () => { + // + androidHandler(); + // +- // ++ // + linuxHandler(); + // + }); diff --git a/devel/electron23/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.ts b/devel/electron23/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.ts new file mode 100644 index 000000000000..ba1539343b4b --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.ts @@ -0,0 +1,20 @@ +--- chrome/browser/resources/settings/appearance_page/appearance_browser_proxy.ts.orig 2023-02-01 18:43:12 UTC ++++ chrome/browser/resources/settings/appearance_page/appearance_browser_proxy.ts +@@ -16,7 +16,7 @@ export interface AppearanceBrowserProxy { + + useDefaultTheme(): void; + +- // ++ // + useGtkTheme(): void; + useQtTheme(): void; + // +@@ -41,7 +41,7 @@ export class AppearanceBrowserProxyImpl implements App + chrome.send('useDefaultTheme'); + } + +- // ++ // + useGtkTheme() { + chrome.send('useGtkTheme'); + } diff --git a/devel/electron23/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html b/devel/electron23/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html new file mode 100644 index 000000000000..e2564e50325d --- /dev/null +++ b/devel/electron23/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html @@ -0,0 +1,29 @@ +--- chrome/browser/resources/settings/appearance_page/appearance_page.html.orig 2022-10-24 13:33:33 UTC ++++ chrome/browser/resources/settings/appearance_page/appearance_page.html +@@ -27,7 +27,7 @@ + +- ++ + + +- ++ +