From ea46d473de2f0753fbb31c5b46ac5338fe5a01e2 Mon Sep 17 00:00:00 2001 From: askiiart Date: Sat, 8 Mar 2025 10:59:21 -0600 Subject: [PATCH 01/45] initial commit --- .drone.yml | 17 ++++++++++++++ README.md | 27 ++++++++++++++++++++++ allow_dark.patch | 58 ++++++++++++++++++++++++++++++++++++++++++++++++ compilation.sh | 50 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 152 insertions(+) create mode 100644 .drone.yml create mode 100644 README.md create mode 100644 allow_dark.patch create mode 100755 compilation.sh diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..aeaf20c --- /dev/null +++ b/.drone.yml @@ -0,0 +1,17 @@ +kind: pipeline +type: docker +name: default + +steps: + - name: Build librewolf-allow-dark + image: debian + commands: + - '/drone/src/compilation.sh' + volumes: + - name: program-archives + path: /compiled + +volumes: + - name: program-archives + host: + path: /mnt/user/files/repos/archives \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..cb6d6e0 --- /dev/null +++ b/README.md @@ -0,0 +1,27 @@ +# Librewolf-allow-dark build + +Librewolf with the privacy.override_rfp_for_color_scheme about:config option added, which (if enabled) let's you change the color scheme even if rfp is turned on + +- Builds librewolf-allow-dark and places it in `$COMPILED_DIR/librewolf-allow-dark/librewolf.tar.zst` +- Version file at `$COMPILED_DIR/librewolf-allow-dark/version` + +## Archive details + +TODO: **FIX THIS SECTION** + +``` +. +├── polycat +└── polycat.ttf +``` + +Recommended: + +| File | Location | Permissions | +| --------------- | -------------------------------------- | ----------- | +| `./polycat` | `/usr/bin/polycat` | 755 | +| `./polycat.ttf` | `/usr/share/fonts/polycat/polycat.ttf` | 644 | + +--- + +Based on the [librewolf-allow-dark](https://aur.archlinux.org/packages/librewolf-allow-dark) AUR package, directly copying `allow_dark.patch` from it. diff --git a/allow_dark.patch b/allow_dark.patch new file mode 100644 index 0000000..b56ca53 --- /dev/null +++ b/allow_dark.patch @@ -0,0 +1,58 @@ +diff -ru a/browser/components/preferences/main.js b/browser/components/preferences/main.js +--- a/browser/components/preferences/main.js ++++ b/browser/components/preferences/main.js +@@ -4287,6 +4287,7 @@ + FORCED_COLORS_QUERY.addEventListener("change", this); + Services.prefs.addObserver(PREF_USE_SYSTEM_COLORS, this); + Services.prefs.addObserver("privacy.resistFingerprinting", this); ++ Services.prefs.addObserver("privacy.override_rfp_for_color_scheme", this); + Services.obs.addObserver(this, "look-and-feel-changed"); + this._update(); + }, +@@ -4324,6 +4325,7 @@ + destroy() { + Services.prefs.removeObserver(PREF_USE_SYSTEM_COLORS, this); + Services.prefs.removeObserver("privacy.resistFingerprinting", this); ++ Services.prefs.removeObserver("privacy.override_rfp_for_color_scheme", this); + Services.obs.removeObserver(this, "look-and-feel-changed"); + FORCED_COLORS_QUERY.removeEventListener("change", this); + }, +@@ -4365,7 +4367,8 @@ + this.warning.hidden = !forcingColorsAndNoColorSchemeSupport; + + document.getElementById("web-appearance-rfp-warning")?.remove(); +- if (Services.prefs.getBoolPref("privacy.resistFingerprinting")) { ++ if (Services.prefs.getBoolPref("privacy.resistFingerprinting") && ++ !Services.prefs.getBoolPref("privacy.override_rfp_for_color_scheme")) { + document.getElementById("web-appearance-chooser").style.opacity = 0.3; + document.getElementById("web-appearance-chooser").style.pointerEvents = "none"; + const infoBox = document.createElement("div"); +diff -ru a/dom/base/Document.cpp b/dom/base/Document.cpp +--- a/dom/base/Document.cpp ++++ b/dom/base/Document.cpp +@@ -19620,7 +19620,8 @@ + + ColorScheme Document::PreferredColorScheme(IgnoreRFP aIgnoreRFP) const { + if (ShouldResistFingerprinting(RFPTarget::CSSPrefersColorScheme) && +- aIgnoreRFP == IgnoreRFP::No) { ++ aIgnoreRFP == IgnoreRFP::No && ++ !StaticPrefs::privacy_override_rfp_for_color_scheme()) { + return ColorScheme::Light; + } + +diff -ru a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml +--- a/modules/libpref/init/StaticPrefList.yaml ++++ b/modules/libpref/init/StaticPrefList.yaml +@@ -15246,6 +15246,12 @@ + value: false + mirror: always + ++# Allows overriding RFP for only the dark/light pref ++- name: privacy.override_rfp_for_color_scheme ++ type: bool ++ value: false ++ mirror: always ++ + # Enforce tracking protection in all modes. + - name: privacy.trackingprotection.enabled + type: bool \ No newline at end of file diff --git a/compilation.sh b/compilation.sh new file mode 100755 index 0000000..8f25ee2 --- /dev/null +++ b/compilation.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash +set -euo pipefail + +program_name="librewolf-allow-dark" +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) + +# prep +workdir=$(mktemp -d) +built_dir=${COMPILED_DIR:-/compiled}/$program_name +mkdir -p $built_dir +apt update && apt install curl jq -y + +# check whether it's up-to-date +version_file=$built_dir/version +touch $version_file +version=$(curl 'https://gitlab.com/api/v4/projects/32320088/packages?sort=desc' | jq '.[0].version' -r) +if grep -q $version $version_file; then + echo "already up to date, exiting" + exit +fi + +# get source and build +cd $workdir +curl "https://gitlab.com/api/v4/projects/32320088/packages/generic/librewolf-source/$version/librewolf-$version.source.tar.gz" -LO +tar -xzf librewolf-136.0-2.source.tar.gz +cd ./librewolf-$version/ +# get build deps +apt install python3 python3-pip wget patch -y +# apply allow dark patch +patch -p1 -i $SCRIPT_DIR/allow_dark.patch +export MOZ_BUILD_DATE="$(date -u${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH} +%Y%m%d%H%M%S)" +# not entirely sure what this does, but it's what librewolf-allow-dark does +export MOZ_NOSPAM=1 +# build +./mach --no-interactive bootstrap --application-choice=browser +./lw/setup-wasi-linux.sh +./mach build +./mach package + + +# build .tar.zst archive +cd $workdir +tar -xvf ./librewolf-$version/obj-x86_64-pc-linux-gnu/dist/librewolf-$version.en-US.linux-x86_64.tar.xz +cd ./librewolf/ +apt install zstd -y +mkdir -p $built_dir +tar --zstd -cf $built_dir/$program_name.tar.zst . +echo $version >$version_file + +echo "$program_name updated to $version" From 021b8ae71f2bc5dab91a858ce250d4ce25eebb31 Mon Sep 17 00:00:00 2001 From: askiiart Date: Sat, 8 Mar 2025 16:32:37 -0600 Subject: [PATCH 02/45] update readme, add license --- LICENSE | 373 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 72 +++++++++-- 2 files changed, 437 insertions(+), 8 deletions(-) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a612ad9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,373 @@ +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/README.md b/README.md index cb6d6e0..ad8b36e 100644 --- a/README.md +++ b/README.md @@ -10,17 +10,73 @@ Librewolf with the privacy.override_rfp_for_color_scheme about:config option add TODO: **FIX THIS SECTION** ``` -. -├── polycat -└── polycat.ttf +├── application.ini +├── browser +│ ├── chrome +│ │ └── icons +│ │ └── default +│ │ ├── default128.png +│ │ ├── default16.png +│ │ ├── default32.png +│ │ ├── default48.png +│ │ └── default64.png +│ ├── features +│ │ ├── formautofill@mozilla.org.xpi +│ │ ├── pictureinpicture@mozilla.org.xpi +│ │ ├── screenshots@mozilla.org.xpi +│ │ └── webcompat@mozilla.org.xpi +│ └── omni.ja +├── defaults +│ └── pref +│ └── channel-prefs.js +├── dependentlibs.list +├── distribution +│ └── policies.json +├── fonts +│ └── TwemojiMozilla.ttf +├── glxtest +├── gmp-clearkey +│ └── 0.1 +│ ├── libclearkey.so +│ └── manifest.json +├── libfreeblpriv3.so +├── libgkcodecs.so +├── libipcclientcerts.so +├── liblgpllibs.so +├── libmozavcodec.so +├── libmozavutil.so +├── libmozgtk.so +├── libmozsandbox.so +├── libmozsqlite3.so +├── libmozwayland.so +├── libnspr4.so +├── libnss3.so +├── libnssckbi.so +├── libnssutil3.so +├── libplc4.so +├── libplds4.so +├── librewolf +├── librewolf-bin +├── librewolf.cfg +├── libsmime3.so +├── libsoftokn3.so +├── libssl3.so +├── libxul.so +├── omni.ja +├── platform.ini +└── vaapitest ``` -Recommended: +Recommended locations: -| File | Location | Permissions | -| --------------- | -------------------------------------- | ----------- | -| `./polycat` | `/usr/bin/polycat` | 755 | -| `./polycat.ttf` | `/usr/share/fonts/polycat/polycat.ttf` | 644 | +``` +TODO: add these +``` + +For packaging info, see: + +- [Librewolf source](https://gitlab.com/librewolf-community/browser) +- [bsys6 (build system 6)](https://codeberg.org/librewolf/bsys6) --- From 919b84edbf6dcbc136c534684e6e82a7b08977f2 Mon Sep 17 00:00:00 2001 From: askiiart Date: Sat, 8 Mar 2025 16:51:01 -0600 Subject: [PATCH 03/45] remove unused files --- compilation.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/compilation.sh b/compilation.sh index 8f25ee2..248d115 100755 --- a/compilation.sh +++ b/compilation.sh @@ -13,6 +13,7 @@ apt update && apt install curl jq -y # check whether it's up-to-date version_file=$built_dir/version touch $version_file +# also available via gitlab.com/librewolf-community/browser/source/-/raw/main/{version,release} version=$(curl 'https://gitlab.com/api/v4/projects/32320088/packages?sort=desc' | jq '.[0].version' -r) if grep -q $version $version_file; then echo "already up to date, exiting" @@ -44,6 +45,9 @@ tar -xvf ./librewolf-$version/obj-x86_64-pc-linux-gnu/dist/librewolf-$version.en cd ./librewolf/ apt install zstd -y mkdir -p $built_dir +rm ./pingsender +rm ./precomplete +rm ./removed-files tar --zstd -cf $built_dir/$program_name.tar.zst . echo $version >$version_file From d887e434c1c105bf4b35f1579561101acaa343c0 Mon Sep 17 00:00:00 2001 From: askiiart Date: Sat, 8 Mar 2025 17:53:21 -0600 Subject: [PATCH 04/45] add .desktop file, update readme --- README.md | 2 +- compilation.sh | 2 +- librewolf.desktop | 27 +++++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 librewolf.desktop diff --git a/README.md b/README.md index ad8b36e..0370f55 100644 --- a/README.md +++ b/README.md @@ -80,4 +80,4 @@ For packaging info, see: --- -Based on the [librewolf-allow-dark](https://aur.archlinux.org/packages/librewolf-allow-dark) AUR package, directly copying `allow_dark.patch` from it. +Based on the [librewolf-allow-dark](https://aur.archlinux.org/packages/librewolf-allow-dark) AUR package, directly copying `allow_dark.patch` from it. `librewolf.desktop` is copied from [bsys6](https://codeberg.org/librewolf/bsys6). diff --git a/compilation.sh b/compilation.sh index 248d115..e53a455 100755 --- a/compilation.sh +++ b/compilation.sh @@ -38,7 +38,6 @@ export MOZ_NOSPAM=1 ./mach build ./mach package - # build .tar.zst archive cd $workdir tar -xvf ./librewolf-$version/obj-x86_64-pc-linux-gnu/dist/librewolf-$version.en-US.linux-x86_64.tar.xz @@ -48,6 +47,7 @@ mkdir -p $built_dir rm ./pingsender rm ./precomplete rm ./removed-files +cp $SCRIPT_DIR/librewolf.desktop ./librewolf.desktop tar --zstd -cf $built_dir/$program_name.tar.zst . echo $version >$version_file diff --git a/librewolf.desktop b/librewolf.desktop new file mode 100644 index 0000000..e6bf0f7 --- /dev/null +++ b/librewolf.desktop @@ -0,0 +1,27 @@ +[Desktop Entry] +Type=Application +Name=LibreWolf +GenericName=Web Browser +StartupNotify=true +Terminal=false +MimeType=application/json;application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https; +Comment=Browse the World Wide Web +Categories=Network;WebBrowser;Security; +StartupWMClass=librewolf-default +Exec=MYDIR/librewolf %u +Icon=librewolf + +Actions=new-window;new-private-window;safe-mode;preferences; + +[Desktop Action new-window] +Name=New Window +Exec=MYDIR/librewolf +[Desktop Action new-private-window] +Name=New Private Window +Exec=MYDIR/librewolf --private-window %u +[Desktop Action safe-mode] +Name=Start in Safe Mode +Exec=MYDIR/librewolf --safe-mode +[Desktop Action preferences] +Name=Show Preferences +Exec=MYDIR/librewolf --preferences From c1166e461083705a3193e0e1c695abd9e7d4c97d Mon Sep 17 00:00:00 2001 From: askiiart Date: Tue, 11 Mar 2025 12:15:29 -0500 Subject: [PATCH 05/45] initial commit - *should* all be working --- .drone.yml | 22 ++++++++++ README.md | 3 ++ librewolf-allow-dark.spec | 86 +++++++++++++++++++++++++++++++++++++++ run.sh | 43 ++++++++++++++++++++ 4 files changed, 154 insertions(+) create mode 100644 .drone.yml create mode 100644 README.md create mode 100644 librewolf-allow-dark.spec create mode 100644 run.sh diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..5cf44ce --- /dev/null +++ b/.drone.yml @@ -0,0 +1,22 @@ +kind: pipeline +type: docker +name: default + +steps: + - name: Build librewolf-allow-dark fedora package + image: fedora + commands: + - '/drone/src/run.sh' + volumes: + - name: program-archives + path: /compiled + - name: fedora-repo + path: /repo + +volumes: + - name: program-archives + host: + path: /mnt/user/files/repos/archives/ + - name: fedora-repo + host: + path: /mnt/user/files/repos/fedora/x86_64/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..bc02f9a --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# librewolf-allow-dark (fedora) + +I have nothing to put here for now? Uhhhhh TODO: check what I should put here once the forge is back up. diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec new file mode 100644 index 0000000..c28386f --- /dev/null +++ b/librewolf-allow-dark.spec @@ -0,0 +1,86 @@ +Name: librewolf-allow-dark +Version: __VERSION__ +Release: %autorelease +Summary: Librewolf, with the privacy.override_rfp_for_color_scheme option added +License: MPL-2.0 +URL: https://git.askiiart.net/pkg-repo/librewolf-allow-dark + +%description +Librewolf with the privacy.override_rfp_for_color_scheme about:config option added, which (if enabled) let\'s you change the color scheme even if rfp is turned on + +%prep +%setup -q + +%install +program_name="librewolf-allow-dark" +mkdir ./$program_name/ +cd ./$program_name/ +tar --zstd -xf ${COMPILED_DIR:-/compiled}/$program_name/$program_name.tar.zst +result_dir=%{_topdir}/result/ +mkdir $result_dir +mkdir -p $result_dir/%{_datadir}/librewolf +mkdir -p $result_dir/%{_bindir} +mkdir -p $result_dir/%{_datadir}/applications + +mv ./librewolf $result_dir/%{_bindir}/librewolf +resolutions=(16 32 64 128) +for res in $resolutions; do + mkdir -p $result_dir/%{_datadir}/icons/hicolor/${res}x${res}/apps + cp ./browser/chrome/icons/default/default${res}.png $result_dir/%{_datadir}/icons/hicolor/${res}x${res}/apps/librewolf.png +done +mv ./* $result_dir/%{_datadir}/librewolf/ + + + +%files +%{_bindir}/librewolf +%{_datadir}/applications/librewolf.desktop +%{_datadir}/icons/hicolor/16x16/apps/librewolf.png +%{_datadir}/icons/hicolor/32x32/apps/librewolf.png +%{_datadir}/icons/hicolor/64x64/apps/librewolf.png +%{_datadir}/icons/hicolor/128x128/apps/librewolf.png +%{_datadir}/librewolf/application.ini +%{_datadir}/librewolf/browser/chrome/icons/default/default128.png +%{_datadir}/librewolf/browser/chrome/icons/default/default16.png +%{_datadir}/librewolf/browser/chrome/icons/default/default32.png +%{_datadir}/librewolf/browser/chrome/icons/default/default48.png +%{_datadir}/librewolf/browser/chrome/icons/default/default64.png +%{_datadir}/librewolf/browser/features/formautofill@mozilla.org.xpi +%{_datadir}/librewolf/browser/features/pictureinpicture@mozilla.org.xpi +%{_datadir}/librewolf/browser/features/screenshots@mozilla.org.xpi +%{_datadir}/librewolf/browser/features/webcompat@mozilla.org.xpi +%{_datadir}/librewolf/browser/omni.ja +%{_datadir}/librewolf/defaults/pref/channel-prefs.js +%{_datadir}/librewolf/dependentlibs.list +%{_datadir}/librewolf/distribution/policies.json +%{_datadir}/librewolf/fonts/TwemojiMozilla.ttf +%{_datadir}/librewolf/glxtest +%{_datadir}/librewolf/gmp-clearkey/0.1/libclearkey.so +%{_datadir}/librewolf/gmp-clearkey/0.1/manifest.json +%{_datadir}/librewolf/libfreeblpriv3.so +%{_datadir}/librewolf/libipcclientcerts.so +%{_datadir}/librewolf/liblgpllibs.so +%{_datadir}/librewolf/libmozavcodec.so +%{_datadir}/librewolf/libmozavutil.so +%{_datadir}/librewolf/libmozgtk.so +%{_datadir}/librewolf/libmozsandbox.so +%{_datadir}/librewolf/libmozsqlite3.so +%{_datadir}/librewolf/libmozwayland.so +%{_datadir}/librewolf/libnspr4.so +%{_datadir}/librewolf/libnss3.so +%{_datadir}/librewolf/libnssckbi.so +%{_datadir}/librewolf/libnssutil3.so +%{_datadir}/librewolf/libplc4.so +%{_datadir}/librewolf/libplds4.so +%{_datadir}/librewolf/librewolf +%{_datadir}/librewolf/librewolf-bin +%{_datadir}/librewolf/librewolf.cfg +%{_datadir}/librewolf/librewolf.ico +%{_datadir}/librewolf/libsmime3.so +%{_datadir}/librewolf/libsoftokn3.so +%{_datadir}/librewolf/libssl3.so +%{_datadir}/librewolf/libxul.so +%{_datadir}/librewolf/omni.ja +%{_datadir}/librewolf/platform.ini +%{_datadir}/librewolf/vaapitest +%{_datadir}/librewolf/libgkcodecs.so diff --git a/run.sh b/run.sh new file mode 100644 index 0000000..d55c29d --- /dev/null +++ b/run.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +set -euxo pipefail + +program_name="librewolf-allow-dark" + +built_dir=${COMPILED_DIR:-/compiled}/$program_name +version=$(cat $built_dir/version) +repo_dir=${REPO_DIR:-/repo} + +# skip if already up-to-date +# TODO: use the repo instead and check the version with dnf +# yeah this is bad; see also the librewolf-allow-dark-aaaaaa thing below +touch $repo_dir/$program_name-tmp +if $(ls $repo_dir/$program_name-* | grep -q "$version"); then + rm $repo_dir/$program_name-tmp + echo "package is already up to date, exiting" + exit +fi +rm $repo_dir/$program_name-tmp + +# prep +dnf install fedora-packager rpmdevtools createrepo_c -y +rpmdev-setuptree + +sed -i "s/Version:.*/Version: $version/g" $program_name.spec + +# build package and move to the repo +rpmbuild -bb $program_name.spec +mv ~/rpmbuild/RPMS/x86_64/$program_name-$version-* $repo_dir/ + +# remove old versions +cd $repo_dir +# this is the easiest way to make sure it doesn't just fail because no librewolf-allow-dark-* exists +# (which only happens on first run) +touch $program_name-0.rpm +rm $(ls $program_name-*.rpm | sort --version-sort | sed '$d') +rm $program_name-0.rpm || true + +# update repo +createrepo_c . + +cd $repo_dir/ +echo "package is at $repo_dir/$(ls $program_name-*.rpm)" From 3c276cb82e53c0dea2c6a80300ce348597fb3b5c Mon Sep 17 00:00:00 2001 From: askiiart Date: Tue, 11 Mar 2025 20:31:48 -0500 Subject: [PATCH 06/45] fix perms --- run.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 run.sh diff --git a/run.sh b/run.sh old mode 100644 new mode 100755 From e5621b9cd9ce50b6a120f9456147792a1c257c09 Mon Sep 17 00:00:00 2001 From: askiiart Date: Tue, 11 Mar 2025 20:37:44 -0500 Subject: [PATCH 07/45] fix version to remove `-` --- README.md | 4 +++- run.sh | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index bc02f9a..d51c54b 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ # librewolf-allow-dark (fedora) -I have nothing to put here for now? Uhhhhh TODO: check what I should put here once the forge is back up. +Note that the version cannot contain `-`, so it's replaced with `.` here (e.g. `136.0-2` -> `136.0.2`) + +TODO: Add automatic `%files` generation diff --git a/run.sh b/run.sh index d55c29d..4c629a2 100755 --- a/run.sh +++ b/run.sh @@ -5,6 +5,7 @@ program_name="librewolf-allow-dark" built_dir=${COMPILED_DIR:-/compiled}/$program_name version=$(cat $built_dir/version) +version=$(echo $version | sed 's/-/./g') repo_dir=${REPO_DIR:-/repo} # skip if already up-to-date From 655bd2cae725f04042b5fc8138a5ddf225301bb3 Mon Sep 17 00:00:00 2001 From: askiiart Date: Tue, 11 Mar 2025 20:54:43 -0500 Subject: [PATCH 08/45] debug --- librewolf-allow-dark.spec | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index c28386f..741fe5e 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -12,10 +12,15 @@ Librewolf with the privacy.override_rfp_for_color_scheme about:config option add %setup -q %install +echo 1 program_name="librewolf-allow-dark" +echo 2 mkdir ./$program_name/ +echo 3 cd ./$program_name/ +echo 4 tar --zstd -xf ${COMPILED_DIR:-/compiled}/$program_name/$program_name.tar.zst +echo 5 result_dir=%{_topdir}/result/ mkdir $result_dir mkdir -p $result_dir/%{_datadir}/librewolf From 27b3ddc6d9d79758626d9957880583caa6d42587 Mon Sep 17 00:00:00 2001 From: askiiart Date: Tue, 11 Mar 2025 21:00:12 -0500 Subject: [PATCH 09/45] disable `%setup -q`, whatever that actually does --- librewolf-allow-dark.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index 741fe5e..265fbb1 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -9,7 +9,7 @@ URL: https://git.askiiart.net/pkg-repo/librewolf-allow-dark Librewolf with the privacy.override_rfp_for_color_scheme about:config option added, which (if enabled) let\'s you change the color scheme even if rfp is turned on %prep -%setup -q +#%setup -q %install echo 1 From 6b2b845f664e4ff91516a8a2c713fc86e6acd908 Mon Sep 17 00:00:00 2001 From: askiiart Date: Tue, 11 Mar 2025 21:47:15 -0500 Subject: [PATCH 10/45] just disabling stuff idek anymore --- librewolf-allow-dark.spec | 146 +++++++++++++++++++------------------- 1 file changed, 73 insertions(+), 73 deletions(-) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index 265fbb1..ff2496c 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -1,6 +1,6 @@ Name: librewolf-allow-dark Version: __VERSION__ -Release: %autorelease +Release: 1 Summary: Librewolf, with the privacy.override_rfp_for_color_scheme option added License: MPL-2.0 URL: https://git.askiiart.net/pkg-repo/librewolf-allow-dark @@ -14,78 +14,78 @@ Librewolf with the privacy.override_rfp_for_color_scheme about:config option add %install echo 1 program_name="librewolf-allow-dark" -echo 2 -mkdir ./$program_name/ -echo 3 -cd ./$program_name/ -echo 4 -tar --zstd -xf ${COMPILED_DIR:-/compiled}/$program_name/$program_name.tar.zst -echo 5 -result_dir=%{_topdir}/result/ -mkdir $result_dir -mkdir -p $result_dir/%{_datadir}/librewolf -mkdir -p $result_dir/%{_bindir} -mkdir -p $result_dir/%{_datadir}/applications - -mv ./librewolf $result_dir/%{_bindir}/librewolf -resolutions=(16 32 64 128) -for res in $resolutions; do - mkdir -p $result_dir/%{_datadir}/icons/hicolor/${res}x${res}/apps - cp ./browser/chrome/icons/default/default${res}.png $result_dir/%{_datadir}/icons/hicolor/${res}x${res}/apps/librewolf.png -done -mv ./* $result_dir/%{_datadir}/librewolf/ +#echo 2 +#mkdir ./$program_name/ +#echo 3 +#cd ./$program_name/ +#echo 4 +#tar --zstd -xf ${COMPILED_DIR:-/compiled}/$program_name/$program_name.tar.zst +#echo 5 +#result_dir=%{_topdir}/result/ +#mkdir $result_dir +#mkdir -p $result_dir/%{_datadir}/librewolf +#mkdir -p $result_dir/%{_bindir} +#mkdir -p $result_dir/%{_datadir}/applications +# +#mv ./librewolf $result_dir/%{_bindir}/librewolf +#resolutions=(16 32 64 128) +#for res in $resolutions; do +# mkdir -p $result_dir/%{_datadir}/icons/hicolor/${res}x${res}/apps +# cp ./browser/chrome/icons/default/default${res}.png $result_dir/%{_datadir}/icons/hicolor/${res}x${res}/apps/librewolf.png +#done +#mv ./* $result_dir/%{_datadir}/librewolf/ -%files -%{_bindir}/librewolf -%{_datadir}/applications/librewolf.desktop -%{_datadir}/icons/hicolor/16x16/apps/librewolf.png -%{_datadir}/icons/hicolor/32x32/apps/librewolf.png -%{_datadir}/icons/hicolor/64x64/apps/librewolf.png -%{_datadir}/icons/hicolor/128x128/apps/librewolf.png -%{_datadir}/librewolf/application.ini -%{_datadir}/librewolf/browser/chrome/icons/default/default128.png -%{_datadir}/librewolf/browser/chrome/icons/default/default16.png -%{_datadir}/librewolf/browser/chrome/icons/default/default32.png -%{_datadir}/librewolf/browser/chrome/icons/default/default48.png -%{_datadir}/librewolf/browser/chrome/icons/default/default64.png -%{_datadir}/librewolf/browser/features/formautofill@mozilla.org.xpi -%{_datadir}/librewolf/browser/features/pictureinpicture@mozilla.org.xpi -%{_datadir}/librewolf/browser/features/screenshots@mozilla.org.xpi -%{_datadir}/librewolf/browser/features/webcompat@mozilla.org.xpi -%{_datadir}/librewolf/browser/omni.ja -%{_datadir}/librewolf/defaults/pref/channel-prefs.js -%{_datadir}/librewolf/dependentlibs.list -%{_datadir}/librewolf/distribution/policies.json -%{_datadir}/librewolf/fonts/TwemojiMozilla.ttf -%{_datadir}/librewolf/glxtest -%{_datadir}/librewolf/gmp-clearkey/0.1/libclearkey.so -%{_datadir}/librewolf/gmp-clearkey/0.1/manifest.json -%{_datadir}/librewolf/libfreeblpriv3.so -%{_datadir}/librewolf/libipcclientcerts.so -%{_datadir}/librewolf/liblgpllibs.so -%{_datadir}/librewolf/libmozavcodec.so -%{_datadir}/librewolf/libmozavutil.so -%{_datadir}/librewolf/libmozgtk.so -%{_datadir}/librewolf/libmozsandbox.so -%{_datadir}/librewolf/libmozsqlite3.so -%{_datadir}/librewolf/libmozwayland.so -%{_datadir}/librewolf/libnspr4.so -%{_datadir}/librewolf/libnss3.so -%{_datadir}/librewolf/libnssckbi.so -%{_datadir}/librewolf/libnssutil3.so -%{_datadir}/librewolf/libplc4.so -%{_datadir}/librewolf/libplds4.so -%{_datadir}/librewolf/librewolf -%{_datadir}/librewolf/librewolf-bin -%{_datadir}/librewolf/librewolf.cfg -%{_datadir}/librewolf/librewolf.ico -%{_datadir}/librewolf/libsmime3.so -%{_datadir}/librewolf/libsoftokn3.so -%{_datadir}/librewolf/libssl3.so -%{_datadir}/librewolf/libxul.so -%{_datadir}/librewolf/omni.ja -%{_datadir}/librewolf/platform.ini -%{_datadir}/librewolf/vaapitest -%{_datadir}/librewolf/libgkcodecs.so +#%files +#%{_bindir}/librewolf +#%{_datadir}/applications/librewolf.desktop +#%{_datadir}/icons/hicolor/16x16/apps/librewolf.png +#%{_datadir}/icons/hicolor/32x32/apps/librewolf.png +#%{_datadir}/icons/hicolor/64x64/apps/librewolf.png +#%{_datadir}/icons/hicolor/128x128/apps/librewolf.png +#%{_datadir}/librewolf/application.ini +#%{_datadir}/librewolf/browser/chrome/icons/default/default128.png +#%{_datadir}/librewolf/browser/chrome/icons/default/default16.png +#%{_datadir}/librewolf/browser/chrome/icons/default/default32.png +#%{_datadir}/librewolf/browser/chrome/icons/default/default48.png +#%{_datadir}/librewolf/browser/chrome/icons/default/default64.png +#%{_datadir}/librewolf/browser/features/formautofill@mozilla.org.xpi +#%{_datadir}/librewolf/browser/features/pictureinpicture@mozilla.org.xpi +#%{_datadir}/librewolf/browser/features/screenshots@mozilla.org.xpi +#%{_datadir}/librewolf/browser/features/webcompat@mozilla.org.xpi +#%{_datadir}/librewolf/browser/omni.ja +#%{_datadir}/librewolf/defaults/pref/channel-prefs.js +#%{_datadir}/librewolf/dependentlibs.list +#%{_datadir}/librewolf/distribution/policies.json +#%{_datadir}/librewolf/fonts/TwemojiMozilla.ttf +#%{_datadir}/librewolf/glxtest +#%{_datadir}/librewolf/gmp-clearkey/0.1/libclearkey.so +#%{_datadir}/librewolf/gmp-clearkey/0.1/manifest.json +#%{_datadir}/librewolf/libfreeblpriv3.so +#%{_datadir}/librewolf/libipcclientcerts.so +#%{_datadir}/librewolf/liblgpllibs.so +#%{_datadir}/librewolf/libmozavcodec.so +#%{_datadir}/librewolf/libmozavutil.so +#%{_datadir}/librewolf/libmozgtk.so +#%{_datadir}/librewolf/libmozsandbox.so +#%{_datadir}/librewolf/libmozsqlite3.so +#%{_datadir}/librewolf/libmozwayland.so +#%{_datadir}/librewolf/libnspr4.so +#%{_datadir}/librewolf/libnss3.so +#%{_datadir}/librewolf/libnssckbi.so +#%{_datadir}/librewolf/libnssutil3.so +#%{_datadir}/librewolf/libplc4.so +#%{_datadir}/librewolf/libplds4.so +#%{_datadir}/librewolf/librewolf +#%{_datadir}/librewolf/librewolf-bin +#%{_datadir}/librewolf/librewolf.cfg +#%{_datadir}/librewolf/librewolf.ico +#%{_datadir}/librewolf/libsmime3.so +#%{_datadir}/librewolf/libsoftokn3.so +#%{_datadir}/librewolf/libssl3.so +#%{_datadir}/librewolf/libxul.so +#%{_datadir}/librewolf/omni.ja +#%{_datadir}/librewolf/platform.ini +#%{_datadir}/librewolf/vaapitest +#%{_datadir}/librewolf/libgkcodecs.so From cd2625cbc41f4e587a7f0a3bce60dd5322618e18 Mon Sep 17 00:00:00 2001 From: askiiart Date: Tue, 11 Mar 2025 21:49:15 -0500 Subject: [PATCH 11/45] remove (escaped) apostrophe --- librewolf-allow-dark.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index ff2496c..5366e2a 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -6,7 +6,7 @@ License: MPL-2.0 URL: https://git.askiiart.net/pkg-repo/librewolf-allow-dark %description -Librewolf with the privacy.override_rfp_for_color_scheme about:config option added, which (if enabled) let\'s you change the color scheme even if rfp is turned on +Librewolf with the privacy.override_rfp_for_color_scheme about:config option added, which (if enabled) lets you change the color scheme even if rfp is turned on %prep #%setup -q From c6cf9cdd7f2abbe4c53c48e5f6b7589ca4bc0cec Mon Sep 17 00:00:00 2001 From: askiiart Date: Tue, 11 Mar 2025 21:51:03 -0500 Subject: [PATCH 12/45] remove the parentheses? maybe??? --- run.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/run.sh b/run.sh index 4c629a2..b118cdf 100755 --- a/run.sh +++ b/run.sh @@ -5,14 +5,14 @@ program_name="librewolf-allow-dark" built_dir=${COMPILED_DIR:-/compiled}/$program_name version=$(cat $built_dir/version) -version=$(echo $version | sed 's/-/./g') +version_no_dash=$(echo $version | sed 's/-/./g') repo_dir=${REPO_DIR:-/repo} # skip if already up-to-date # TODO: use the repo instead and check the version with dnf # yeah this is bad; see also the librewolf-allow-dark-aaaaaa thing below touch $repo_dir/$program_name-tmp -if $(ls $repo_dir/$program_name-* | grep -q "$version"); then +if $(ls $repo_dir/$program_name-* | grep -q "$version_no_dash"); then rm $repo_dir/$program_name-tmp echo "package is already up to date, exiting" exit @@ -23,11 +23,11 @@ rm $repo_dir/$program_name-tmp dnf install fedora-packager rpmdevtools createrepo_c -y rpmdev-setuptree -sed -i "s/Version:.*/Version: $version/g" $program_name.spec +sed -i "s/Version:.*/Version: $version_no_dash/g" $program_name.spec # build package and move to the repo rpmbuild -bb $program_name.spec -mv ~/rpmbuild/RPMS/x86_64/$program_name-$version-* $repo_dir/ +mv ~/rpmbuild/RPMS/x86_64/$program_name-$version_no_dash-* $repo_dir/ # remove old versions cd $repo_dir @@ -40,5 +40,5 @@ rm $program_name-0.rpm || true # update repo createrepo_c . -cd $repo_dir/ +cd $repo_dir echo "package is at $repo_dir/$(ls $program_name-*.rpm)" From 459267042279d6b24839f91a44c497c86625988c Mon Sep 17 00:00:00 2001 From: askiiart Date: Tue, 11 Mar 2025 21:56:32 -0500 Subject: [PATCH 13/45] add changelog i think that should fix it --- librewolf-allow-dark.spec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index 5366e2a..4bfbc23 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -4,9 +4,10 @@ Release: 1 Summary: Librewolf, with the privacy.override_rfp_for_color_scheme option added License: MPL-2.0 URL: https://git.askiiart.net/pkg-repo/librewolf-allow-dark +BuildRequires: tar zstd %description -Librewolf with the privacy.override_rfp_for_color_scheme about:config option added, which (if enabled) lets you change the color scheme even if rfp is turned on +Librewolf with the privacy.override_rfp_for_color_scheme about:config option added, which if enabled lets you change the color scheme even if rfp is turned on %prep #%setup -q @@ -89,3 +90,7 @@ program_name="librewolf-allow-dark" #%{_datadir}/librewolf/platform.ini #%{_datadir}/librewolf/vaapitest #%{_datadir}/librewolf/libgkcodecs.so + +%changelog +* Tue Mar 11 2025 askiiart +- Initial version From 123ed474d7ab2b1547985f282c2655048874dda5 Mon Sep 17 00:00:00 2001 From: askiiart Date: Wed, 12 Mar 2025 14:40:33 +0000 Subject: [PATCH 14/45] try this idk --- librewolf-allow-dark.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index 4bfbc23..3ea47e8 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -9,7 +9,7 @@ BuildRequires: tar zstd %description Librewolf with the privacy.override_rfp_for_color_scheme about:config option added, which if enabled lets you change the color scheme even if rfp is turned on -%prep +#%prep #%setup -q %install From e5feb6ac54d5681d4256e21bc11454d37062a84f Mon Sep 17 00:00:00 2001 From: askiiart Date: Wed, 12 Mar 2025 14:44:40 +0000 Subject: [PATCH 15/45] remove debugging stuff ig --- librewolf-allow-dark.spec | 142 ++++++++++++++++++-------------------- 1 file changed, 68 insertions(+), 74 deletions(-) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index 3ea47e8..d03c05e 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -13,83 +13,77 @@ Librewolf with the privacy.override_rfp_for_color_scheme about:config option add #%setup -q %install -echo 1 program_name="librewolf-allow-dark" -#echo 2 -#mkdir ./$program_name/ -#echo 3 -#cd ./$program_name/ -#echo 4 -#tar --zstd -xf ${COMPILED_DIR:-/compiled}/$program_name/$program_name.tar.zst -#echo 5 -#result_dir=%{_topdir}/result/ -#mkdir $result_dir -#mkdir -p $result_dir/%{_datadir}/librewolf -#mkdir -p $result_dir/%{_bindir} -#mkdir -p $result_dir/%{_datadir}/applications -# -#mv ./librewolf $result_dir/%{_bindir}/librewolf -#resolutions=(16 32 64 128) -#for res in $resolutions; do -# mkdir -p $result_dir/%{_datadir}/icons/hicolor/${res}x${res}/apps -# cp ./browser/chrome/icons/default/default${res}.png $result_dir/%{_datadir}/icons/hicolor/${res}x${res}/apps/librewolf.png -#done -#mv ./* $result_dir/%{_datadir}/librewolf/ +mkdir ./$program_name/ +cd ./$program_name/ +tar --zstd -xf ${COMPILED_DIR:-/compiled}/$program_name/$program_name.tar.zst +result_dir=%{_topdir}/result/ +mkdir $result_dir +mkdir -p $result_dir/%{_datadir}/librewolf +mkdir -p $result_dir/%{_bindir} +mkdir -p $result_dir/%{_datadir}/applications + +mv ./librewolf $result_dir/%{_bindir}/librewolf +resolutions=(16 32 64 128) +for res in $resolutions; do + mkdir -p $result_dir/%{_datadir}/icons/hicolor/${res}x${res}/apps + cp ./browser/chrome/icons/default/default${res}.png $result_dir/%{_datadir}/icons/hicolor/${res}x${res}/apps/librewolf.png +done +mv ./* $result_dir/%{_datadir}/librewolf/ - -#%files -#%{_bindir}/librewolf -#%{_datadir}/applications/librewolf.desktop -#%{_datadir}/icons/hicolor/16x16/apps/librewolf.png -#%{_datadir}/icons/hicolor/32x32/apps/librewolf.png -#%{_datadir}/icons/hicolor/64x64/apps/librewolf.png -#%{_datadir}/icons/hicolor/128x128/apps/librewolf.png -#%{_datadir}/librewolf/application.ini -#%{_datadir}/librewolf/browser/chrome/icons/default/default128.png -#%{_datadir}/librewolf/browser/chrome/icons/default/default16.png -#%{_datadir}/librewolf/browser/chrome/icons/default/default32.png -#%{_datadir}/librewolf/browser/chrome/icons/default/default48.png -#%{_datadir}/librewolf/browser/chrome/icons/default/default64.png -#%{_datadir}/librewolf/browser/features/formautofill@mozilla.org.xpi -#%{_datadir}/librewolf/browser/features/pictureinpicture@mozilla.org.xpi -#%{_datadir}/librewolf/browser/features/screenshots@mozilla.org.xpi -#%{_datadir}/librewolf/browser/features/webcompat@mozilla.org.xpi -#%{_datadir}/librewolf/browser/omni.ja -#%{_datadir}/librewolf/defaults/pref/channel-prefs.js -#%{_datadir}/librewolf/dependentlibs.list -#%{_datadir}/librewolf/distribution/policies.json -#%{_datadir}/librewolf/fonts/TwemojiMozilla.ttf -#%{_datadir}/librewolf/glxtest -#%{_datadir}/librewolf/gmp-clearkey/0.1/libclearkey.so -#%{_datadir}/librewolf/gmp-clearkey/0.1/manifest.json -#%{_datadir}/librewolf/libfreeblpriv3.so -#%{_datadir}/librewolf/libipcclientcerts.so -#%{_datadir}/librewolf/liblgpllibs.so -#%{_datadir}/librewolf/libmozavcodec.so -#%{_datadir}/librewolf/libmozavutil.so -#%{_datadir}/librewolf/libmozgtk.so -#%{_datadir}/librewolf/libmozsandbox.so -#%{_datadir}/librewolf/libmozsqlite3.so -#%{_datadir}/librewolf/libmozwayland.so -#%{_datadir}/librewolf/libnspr4.so -#%{_datadir}/librewolf/libnss3.so -#%{_datadir}/librewolf/libnssckbi.so -#%{_datadir}/librewolf/libnssutil3.so -#%{_datadir}/librewolf/libplc4.so -#%{_datadir}/librewolf/libplds4.so -#%{_datadir}/librewolf/librewolf -#%{_datadir}/librewolf/librewolf-bin -#%{_datadir}/librewolf/librewolf.cfg -#%{_datadir}/librewolf/librewolf.ico -#%{_datadir}/librewolf/libsmime3.so -#%{_datadir}/librewolf/libsoftokn3.so -#%{_datadir}/librewolf/libssl3.so -#%{_datadir}/librewolf/libxul.so -#%{_datadir}/librewolf/omni.ja -#%{_datadir}/librewolf/platform.ini -#%{_datadir}/librewolf/vaapitest -#%{_datadir}/librewolf/libgkcodecs.so +%files +%{_bindir}/librewolf +%{_datadir}/applications/librewolf.desktop +%{_datadir}/icons/hicolor/16x16/apps/librewolf.png +%{_datadir}/icons/hicolor/32x32/apps/librewolf.png +%{_datadir}/icons/hicolor/64x64/apps/librewolf.png +%{_datadir}/icons/hicolor/128x128/apps/librewolf.png +%{_datadir}/librewolf/application.ini +%{_datadir}/librewolf/browser/chrome/icons/default/default128.png +%{_datadir}/librewolf/browser/chrome/icons/default/default16.png +%{_datadir}/librewolf/browser/chrome/icons/default/default32.png +%{_datadir}/librewolf/browser/chrome/icons/default/default48.png +%{_datadir}/librewolf/browser/chrome/icons/default/default64.png +%{_datadir}/librewolf/browser/features/formautofill@mozilla.org.xpi +%{_datadir}/librewolf/browser/features/pictureinpicture@mozilla.org.xpi +%{_datadir}/librewolf/browser/features/screenshots@mozilla.org.xpi +%{_datadir}/librewolf/browser/features/webcompat@mozilla.org.xpi +%{_datadir}/librewolf/browser/omni.ja +%{_datadir}/librewolf/defaults/pref/channel-prefs.js +%{_datadir}/librewolf/dependentlibs.list +%{_datadir}/librewolf/distribution/policies.json +%{_datadir}/librewolf/fonts/TwemojiMozilla.ttf +%{_datadir}/librewolf/glxtest +%{_datadir}/librewolf/gmp-clearkey/0.1/libclearkey.so +%{_datadir}/librewolf/gmp-clearkey/0.1/manifest.json +%{_datadir}/librewolf/libfreeblpriv3.so +%{_datadir}/librewolf/libipcclientcerts.so +%{_datadir}/librewolf/liblgpllibs.so +%{_datadir}/librewolf/libmozavcodec.so +%{_datadir}/librewolf/libmozavutil.so +%{_datadir}/librewolf/libmozgtk.so +%{_datadir}/librewolf/libmozsandbox.so +%{_datadir}/librewolf/libmozsqlite3.so +%{_datadir}/librewolf/libmozwayland.so +%{_datadir}/librewolf/libnspr4.so +%{_datadir}/librewolf/libnss3.so +%{_datadir}/librewolf/libnssckbi.so +%{_datadir}/librewolf/libnssutil3.so +%{_datadir}/librewolf/libplc4.so +%{_datadir}/librewolf/libplds4.so +%{_datadir}/librewolf/librewolf +%{_datadir}/librewolf/librewolf-bin +%{_datadir}/librewolf/librewolf.cfg +%{_datadir}/librewolf/librewolf.ico +%{_datadir}/librewolf/libsmime3.so +%{_datadir}/librewolf/libsoftokn3.so +%{_datadir}/librewolf/libssl3.so +%{_datadir}/librewolf/libxul.so +%{_datadir}/librewolf/omni.ja +%{_datadir}/librewolf/platform.ini +%{_datadir}/librewolf/vaapitest +%{_datadir}/librewolf/libgkcodecs.so %changelog * Tue Mar 11 2025 askiiart From 04e619add3d3dd35e67d314b14b2da2c4d81f1c4 Mon Sep 17 00:00:00 2001 From: askiiart Date: Wed, 12 Mar 2025 14:50:26 +0000 Subject: [PATCH 16/45] un-result dir it, just cp to the spot directly --- librewolf-allow-dark.spec | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index d03c05e..d8ec62b 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -17,19 +17,17 @@ program_name="librewolf-allow-dark" mkdir ./$program_name/ cd ./$program_name/ tar --zstd -xf ${COMPILED_DIR:-/compiled}/$program_name/$program_name.tar.zst -result_dir=%{_topdir}/result/ -mkdir $result_dir -mkdir -p $result_dir/%{_datadir}/librewolf -mkdir -p $result_dir/%{_bindir} -mkdir -p $result_dir/%{_datadir}/applications +mkdir -p %{_datadir}/librewolf +mkdir -p %{_bindir} +mkdir -p %{_datadir}/applications -mv ./librewolf $result_dir/%{_bindir}/librewolf +mv ./librewolf %{_bindir}/librewolf resolutions=(16 32 64 128) for res in $resolutions; do - mkdir -p $result_dir/%{_datadir}/icons/hicolor/${res}x${res}/apps - cp ./browser/chrome/icons/default/default${res}.png $result_dir/%{_datadir}/icons/hicolor/${res}x${res}/apps/librewolf.png + mkdir -p %{_datadir}/icons/hicolor/${res}x${res}/apps + cp ./browser/chrome/icons/default/default${res}.png %{_datadir}/icons/hicolor/${res}x${res}/apps/librewolf.png done -mv ./* $result_dir/%{_datadir}/librewolf/ +mv ./* %{_datadir}/librewolf/ %files From a2909027409bad359cb4a36ad25807c27248cf86 Mon Sep 17 00:00:00 2001 From: askiiart Date: Wed, 12 Mar 2025 14:53:20 +0000 Subject: [PATCH 17/45] copy to buildroot ig? --- librewolf-allow-dark.spec | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index d8ec62b..175071d 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -17,17 +17,17 @@ program_name="librewolf-allow-dark" mkdir ./$program_name/ cd ./$program_name/ tar --zstd -xf ${COMPILED_DIR:-/compiled}/$program_name/$program_name.tar.zst -mkdir -p %{_datadir}/librewolf -mkdir -p %{_bindir} -mkdir -p %{_datadir}/applications +mkdir -p %{_buildrootdir}/%{_datadir}/librewolf +mkdir -p %{_buildrootdir}/%{_bindir} +mkdir -p %{_buildrootdir}/%{_datadir}/applications -mv ./librewolf %{_bindir}/librewolf +mv ./librewolf %{_buildrootdir}/%{_bindir}/librewolf resolutions=(16 32 64 128) for res in $resolutions; do - mkdir -p %{_datadir}/icons/hicolor/${res}x${res}/apps - cp ./browser/chrome/icons/default/default${res}.png %{_datadir}/icons/hicolor/${res}x${res}/apps/librewolf.png + mkdir -p %{_buildrootdir}/%{_datadir}/icons/hicolor/${res}x${res}/apps + cp ./browser/chrome/icons/default/default${res}.png %{_buildrootdir}/%{_datadir}/icons/hicolor/${res}x${res}/apps/librewolf.png done -mv ./* %{_datadir}/librewolf/ +mv ./* %{_buildrootdir}/%{_datadir}/librewolf/ %files From 5aecd88afab93788359db163a268c934fd5ebc3c Mon Sep 17 00:00:00 2001 From: askiiart Date: Wed, 12 Mar 2025 14:57:17 +0000 Subject: [PATCH 18/45] trying to get it in the buildroot --- librewolf-allow-dark.spec | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index 175071d..f0b4281 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -17,17 +17,17 @@ program_name="librewolf-allow-dark" mkdir ./$program_name/ cd ./$program_name/ tar --zstd -xf ${COMPILED_DIR:-/compiled}/$program_name/$program_name.tar.zst -mkdir -p %{_buildrootdir}/%{_datadir}/librewolf -mkdir -p %{_buildrootdir}/%{_bindir} -mkdir -p %{_buildrootdir}/%{_datadir}/applications +mkdir -p %{_buildrootdir}/BUILDROOT/%{_datadir}/librewolf +mkdir -p %{_buildrootdir}/BUILDROOT/%{_bindir} +mkdir -p %{_buildrootdir}/BUILDROOT/%{_datadir}/applications -mv ./librewolf %{_buildrootdir}/%{_bindir}/librewolf +mv ./librewolf %{_buildrootdir}/BUILDROOT/%{_bindir}/librewolf resolutions=(16 32 64 128) for res in $resolutions; do - mkdir -p %{_buildrootdir}/%{_datadir}/icons/hicolor/${res}x${res}/apps - cp ./browser/chrome/icons/default/default${res}.png %{_buildrootdir}/%{_datadir}/icons/hicolor/${res}x${res}/apps/librewolf.png + mkdir -p %{_buildrootdir}/BUILDROOT/%{_datadir}/icons/hicolor/${res}x${res}/apps + cp ./browser/chrome/icons/default/default${res}.png %{_buildrootdir}/BUILDROOT/%{_datadir}/icons/hicolor/${res}x${res}/apps/librewolf.png done -mv ./* %{_buildrootdir}/%{_datadir}/librewolf/ +mv ./* %{_buildrootdir}/BUILDROOT/%{_datadir}/librewolf/ %files From edda56f8f6a39f29c4021f652bd3969bd1579229 Mon Sep 17 00:00:00 2001 From: askiiart Date: Wed, 12 Mar 2025 14:58:25 +0000 Subject: [PATCH 19/45] this should work actually im dum --- librewolf-allow-dark.spec | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index f0b4281..e0d8de2 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -17,17 +17,17 @@ program_name="librewolf-allow-dark" mkdir ./$program_name/ cd ./$program_name/ tar --zstd -xf ${COMPILED_DIR:-/compiled}/$program_name/$program_name.tar.zst -mkdir -p %{_buildrootdir}/BUILDROOT/%{_datadir}/librewolf -mkdir -p %{_buildrootdir}/BUILDROOT/%{_bindir} -mkdir -p %{_buildrootdir}/BUILDROOT/%{_datadir}/applications +mkdir -p %{buildroot}%{_datadir}/librewolf +mkdir -p %{buildroot}%{_bindir} +mkdir -p %{buildroot}%{_datadir}/applications -mv ./librewolf %{_buildrootdir}/BUILDROOT/%{_bindir}/librewolf +mv ./librewolf %{buildroot}%{_bindir}/librewolf resolutions=(16 32 64 128) for res in $resolutions; do - mkdir -p %{_buildrootdir}/BUILDROOT/%{_datadir}/icons/hicolor/${res}x${res}/apps - cp ./browser/chrome/icons/default/default${res}.png %{_buildrootdir}/BUILDROOT/%{_datadir}/icons/hicolor/${res}x${res}/apps/librewolf.png + mkdir -p %{buildroot}%{_datadir}/icons/hicolor/${res}x${res}/apps + cp ./browser/chrome/icons/default/default${res}.png %{buildroot}%{_datadir}/icons/hicolor/${res}x${res}/apps/librewolf.png done -mv ./* %{_buildrootdir}/BUILDROOT/%{_datadir}/librewolf/ +mv ./* %{buildroot}%{_datadir}/librewolf/ %files From 0ebad6023a45079ae278c9729b521383baf09f2d Mon Sep 17 00:00:00 2001 From: askiiart Date: Wed, 12 Mar 2025 10:06:47 -0500 Subject: [PATCH 20/45] testttttttttt --- librewolf-allow-dark.spec | 5 +++++ librewolf.desktop | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 librewolf.desktop diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index e0d8de2..af4cfe5 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -5,6 +5,7 @@ Summary: Librewolf, with the privacy.override_rfp_for_color_scheme option License: MPL-2.0 URL: https://git.askiiart.net/pkg-repo/librewolf-allow-dark BuildRequires: tar zstd +Source0: librewolf.desktop %description Librewolf with the privacy.override_rfp_for_color_scheme about:config option added, which if enabled lets you change the color scheme even if rfp is turned on @@ -22,6 +23,10 @@ mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}%{_datadir}/applications mv ./librewolf %{buildroot}%{_bindir}/librewolf +mv %{_topdir}/librewolf.desktop + +find / -name "librewolf.desktop" + resolutions=(16 32 64 128) for res in $resolutions; do mkdir -p %{buildroot}%{_datadir}/icons/hicolor/${res}x${res}/apps diff --git a/librewolf.desktop b/librewolf.desktop new file mode 100644 index 0000000..e6bf0f7 --- /dev/null +++ b/librewolf.desktop @@ -0,0 +1,27 @@ +[Desktop Entry] +Type=Application +Name=LibreWolf +GenericName=Web Browser +StartupNotify=true +Terminal=false +MimeType=application/json;application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https; +Comment=Browse the World Wide Web +Categories=Network;WebBrowser;Security; +StartupWMClass=librewolf-default +Exec=MYDIR/librewolf %u +Icon=librewolf + +Actions=new-window;new-private-window;safe-mode;preferences; + +[Desktop Action new-window] +Name=New Window +Exec=MYDIR/librewolf +[Desktop Action new-private-window] +Name=New Private Window +Exec=MYDIR/librewolf --private-window %u +[Desktop Action safe-mode] +Name=Start in Safe Mode +Exec=MYDIR/librewolf --safe-mode +[Desktop Action preferences] +Name=Show Preferences +Exec=MYDIR/librewolf --preferences From 4ebbcf3d3d39e0862816dbace4a9f20bc05856f2 Mon Sep 17 00:00:00 2001 From: askiiart Date: Wed, 12 Mar 2025 10:09:21 -0500 Subject: [PATCH 21/45] forgor the other arg --- librewolf-allow-dark.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index af4cfe5..68b61c3 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -23,7 +23,7 @@ mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}%{_datadir}/applications mv ./librewolf %{buildroot}%{_bindir}/librewolf -mv %{_topdir}/librewolf.desktop +mv %{_topdir}/librewolf.desktop %{buildroot}%{_datadir}/applications/ find / -name "librewolf.desktop" From b56128f51c6305d0c5e367b7c612f4df1345f938 Mon Sep 17 00:00:00 2001 From: askiiart Date: Wed, 12 Mar 2025 10:11:44 -0500 Subject: [PATCH 22/45] detrtoit: become smoirt --- librewolf-allow-dark.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index 68b61c3..a9efb4c 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -23,9 +23,9 @@ mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}%{_datadir}/applications mv ./librewolf %{buildroot}%{_bindir}/librewolf +find / -name "librewolf.desktop" mv %{_topdir}/librewolf.desktop %{buildroot}%{_datadir}/applications/ -find / -name "librewolf.desktop" resolutions=(16 32 64 128) for res in $resolutions; do From da60ae283bb59d4d79e93c24a9723493293f82b3 Mon Sep 17 00:00:00 2001 From: askiiart Date: Wed, 12 Mar 2025 10:15:45 -0500 Subject: [PATCH 23/45] does this chagen anything --- librewolf-allow-dark.spec | 1 - 1 file changed, 1 deletion(-) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index a9efb4c..8cb2bd3 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -5,7 +5,6 @@ Summary: Librewolf, with the privacy.override_rfp_for_color_scheme option License: MPL-2.0 URL: https://git.askiiart.net/pkg-repo/librewolf-allow-dark BuildRequires: tar zstd -Source0: librewolf.desktop %description Librewolf with the privacy.override_rfp_for_color_scheme about:config option added, which if enabled lets you change the color scheme even if rfp is turned on From 24c9ad1546fea073c9726139b8e5f5b953452128 Mon Sep 17 00:00:00 2001 From: askiiart Date: Wed, 12 Mar 2025 10:19:40 -0500 Subject: [PATCH 24/45] this should work? maybe???? --- librewolf-allow-dark.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index 8cb2bd3..bd4aa6f 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -22,8 +22,8 @@ mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}%{_datadir}/applications mv ./librewolf %{buildroot}%{_bindir}/librewolf -find / -name "librewolf.desktop" -mv %{_topdir}/librewolf.desktop %{buildroot}%{_datadir}/applications/ +find %{_topdir} -name "librewolf.desktop" +mv %{_builddir}/%{name}-%{version}-build/%{name}/librewolf.desktop %{buildroot}%{_datadir}/applications/ resolutions=(16 32 64 128) From a844942018053d8368eb465c8abb66f0c4098f83 Mon Sep 17 00:00:00 2001 From: askiiart Date: Wed, 12 Mar 2025 10:22:39 -0500 Subject: [PATCH 25/45] DOES THIS WORK also the desktop file should be in the archive but it's not fsr? --- librewolf-allow-dark.spec | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index bd4aa6f..97001b6 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -9,8 +9,8 @@ BuildRequires: tar zstd %description Librewolf with the privacy.override_rfp_for_color_scheme about:config option added, which if enabled lets you change the color scheme even if rfp is turned on -#%prep -#%setup -q +%prep +%setup -q %install program_name="librewolf-allow-dark" @@ -23,7 +23,7 @@ mkdir -p %{buildroot}%{_datadir}/applications mv ./librewolf %{buildroot}%{_bindir}/librewolf find %{_topdir} -name "librewolf.desktop" -mv %{_builddir}/%{name}-%{version}-build/%{name}/librewolf.desktop %{buildroot}%{_datadir}/applications/ +mv %{_builddir}/%{name}/librewolf.desktop %{buildroot}%{_datadir}/applications/ resolutions=(16 32 64 128) From 470e66f0fc721b4599788b2c838b97d98b6ebfb9 Mon Sep 17 00:00:00 2001 From: askiiart Date: Wed, 12 Mar 2025 10:27:01 -0500 Subject: [PATCH 26/45] is desktop missing --- librewolf-allow-dark.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index 97001b6..cea675e 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -22,7 +22,7 @@ mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}%{_datadir}/applications mv ./librewolf %{buildroot}%{_bindir}/librewolf -find %{_topdir} -name "librewolf.desktop" +find / -name "librewolf.desktop" mv %{_builddir}/%{name}/librewolf.desktop %{buildroot}%{_datadir}/applications/ From 0dd2f6e07e431e1cb7e55b4f4f1c9d085e3eadbe Mon Sep 17 00:00:00 2001 From: askiiart Date: Wed, 12 Mar 2025 10:28:53 -0500 Subject: [PATCH 27/45] what if i comment this out --- librewolf-allow-dark.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index cea675e..ddf2532 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -9,7 +9,7 @@ BuildRequires: tar zstd %description Librewolf with the privacy.override_rfp_for_color_scheme about:config option added, which if enabled lets you change the color scheme even if rfp is turned on -%prep +#%prep %setup -q %install From 0c35638061e124ec7c047d85bf73f8906f3dfb59 Mon Sep 17 00:00:00 2001 From: askiiart Date: Wed, 12 Mar 2025 10:36:37 -0500 Subject: [PATCH 28/45] idk what this does but google says to do it --- librewolf-allow-dark.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index ddf2532..7952187 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -27,7 +27,7 @@ mv %{_builddir}/%{name}/librewolf.desktop %{buildroot}%{_datadir}/applications/ resolutions=(16 32 64 128) -for res in $resolutions; do +for res in "${resolutions[@]}"; do mkdir -p %{buildroot}%{_datadir}/icons/hicolor/${res}x${res}/apps cp ./browser/chrome/icons/default/default${res}.png %{buildroot}%{_datadir}/icons/hicolor/${res}x${res}/apps/librewolf.png done From 7c86542de5e8b6ab722c034146d22782138803b7 Mon Sep 17 00:00:00 2001 From: askiiart Date: Wed, 12 Mar 2025 10:44:12 -0500 Subject: [PATCH 29/45] remove .desktop file cuz literally no point and i'm dum --- librewolf-allow-dark.spec | 6 +++--- librewolf.desktop | 27 --------------------------- 2 files changed, 3 insertions(+), 30 deletions(-) delete mode 100644 librewolf.desktop diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index 7952187..0fbf8a7 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -21,9 +21,9 @@ mkdir -p %{buildroot}%{_datadir}/librewolf mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}%{_datadir}/applications -mv ./librewolf %{buildroot}%{_bindir}/librewolf -find / -name "librewolf.desktop" -mv %{_builddir}/%{name}/librewolf.desktop %{buildroot}%{_datadir}/applications/ +mv ./librewolf %{buildroot}%{_datadir}/librewolf/ +ln -s %{buildroot}%{_datadir}/librewolf/librewolf %{buildroot}%{_bindir}/librewolf +mv ./librewolf.desktop %{buildroot}%{_datadir}/applications/ resolutions=(16 32 64 128) diff --git a/librewolf.desktop b/librewolf.desktop deleted file mode 100644 index e6bf0f7..0000000 --- a/librewolf.desktop +++ /dev/null @@ -1,27 +0,0 @@ -[Desktop Entry] -Type=Application -Name=LibreWolf -GenericName=Web Browser -StartupNotify=true -Terminal=false -MimeType=application/json;application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https; -Comment=Browse the World Wide Web -Categories=Network;WebBrowser;Security; -StartupWMClass=librewolf-default -Exec=MYDIR/librewolf %u -Icon=librewolf - -Actions=new-window;new-private-window;safe-mode;preferences; - -[Desktop Action new-window] -Name=New Window -Exec=MYDIR/librewolf -[Desktop Action new-private-window] -Name=New Private Window -Exec=MYDIR/librewolf --private-window %u -[Desktop Action safe-mode] -Name=Start in Safe Mode -Exec=MYDIR/librewolf --safe-mode -[Desktop Action preferences] -Name=Show Preferences -Exec=MYDIR/librewolf --preferences From f903b2ba1688229690d9f5d93cfc2b661dc6d331 Mon Sep 17 00:00:00 2001 From: askiiart Date: Wed, 12 Mar 2025 21:34:35 -0500 Subject: [PATCH 30/45] get librewolf.desktop from the repo directly --- compilation.sh | 2 +- librewolf.desktop | 27 --------------------------- 2 files changed, 1 insertion(+), 28 deletions(-) delete mode 100644 librewolf.desktop diff --git a/compilation.sh b/compilation.sh index e53a455..3619ffa 100755 --- a/compilation.sh +++ b/compilation.sh @@ -47,7 +47,7 @@ mkdir -p $built_dir rm ./pingsender rm ./precomplete rm ./removed-files -cp $SCRIPT_DIR/librewolf.desktop ./librewolf.desktop +curl -LO https://codeberg.org/librewolf/bsys6/raw/branch/master/assets/linux.librewolf.desktop.in -o librewolf.desktop tar --zstd -cf $built_dir/$program_name.tar.zst . echo $version >$version_file diff --git a/librewolf.desktop b/librewolf.desktop deleted file mode 100644 index e6bf0f7..0000000 --- a/librewolf.desktop +++ /dev/null @@ -1,27 +0,0 @@ -[Desktop Entry] -Type=Application -Name=LibreWolf -GenericName=Web Browser -StartupNotify=true -Terminal=false -MimeType=application/json;application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https; -Comment=Browse the World Wide Web -Categories=Network;WebBrowser;Security; -StartupWMClass=librewolf-default -Exec=MYDIR/librewolf %u -Icon=librewolf - -Actions=new-window;new-private-window;safe-mode;preferences; - -[Desktop Action new-window] -Name=New Window -Exec=MYDIR/librewolf -[Desktop Action new-private-window] -Name=New Private Window -Exec=MYDIR/librewolf --private-window %u -[Desktop Action safe-mode] -Name=Start in Safe Mode -Exec=MYDIR/librewolf --safe-mode -[Desktop Action preferences] -Name=Show Preferences -Exec=MYDIR/librewolf --preferences From 38fb83a2c03cdb50a44ef7141bada055e8276cb2 Mon Sep 17 00:00:00 2001 From: askiiart Date: Wed, 12 Mar 2025 22:54:13 -0500 Subject: [PATCH 31/45] i can't curl right lol also add ico file --- compilation.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/compilation.sh b/compilation.sh index 3619ffa..87c688b 100755 --- a/compilation.sh +++ b/compilation.sh @@ -47,7 +47,8 @@ mkdir -p $built_dir rm ./pingsender rm ./precomplete rm ./removed-files -curl -LO https://codeberg.org/librewolf/bsys6/raw/branch/master/assets/linux.librewolf.desktop.in -o librewolf.desktop +curl -L https://codeberg.org/librewolf/bsys6/raw/branch/master/assets/linux.librewolf.desktop.in -o librewolf.desktop +curl -LO https://codeberg.org/librewolf/bsys6/raw/branch/master/assets/librewolf.ico tar --zstd -cf $built_dir/$program_name.tar.zst . echo $version >$version_file From 1358673da5f91eb6883a64657f706ee919295551 Mon Sep 17 00:00:00 2001 From: askiiart Date: Wed, 12 Mar 2025 22:56:49 -0500 Subject: [PATCH 32/45] update readme --- README.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 0370f55..91cba5f 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ Librewolf with the privacy.override_rfp_for_color_scheme about:config option add TODO: **FIX THIS SECTION** ``` +. ├── application.ini ├── browser │ ├── chrome @@ -58,6 +59,8 @@ TODO: **FIX THIS SECTION** ├── librewolf ├── librewolf-bin ├── librewolf.cfg +├── librewolf.desktop +├── librewolf.ico ├── libsmime3.so ├── libsoftokn3.so ├── libssl3.so @@ -67,11 +70,7 @@ TODO: **FIX THIS SECTION** └── vaapitest ``` -Recommended locations: - -``` -TODO: add these -``` +For recommended locations, see spec file in fedora branch For packaging info, see: @@ -80,4 +79,4 @@ For packaging info, see: --- -Based on the [librewolf-allow-dark](https://aur.archlinux.org/packages/librewolf-allow-dark) AUR package, directly copying `allow_dark.patch` from it. `librewolf.desktop` is copied from [bsys6](https://codeberg.org/librewolf/bsys6). +Based on the [librewolf-allow-dark](https://aur.archlinux.org/packages/librewolf-allow-dark) AUR package, directly copying `allow_dark.patch` from it. `librewolf.desktop` and `librewolf.ico` are grabbed from [bsys6](https://codeberg.org/librewolf/bsys6). From 204093d023d090013456cb76b078fec1e1135b88 Mon Sep 17 00:00:00 2001 From: askiiart Date: Wed, 12 Mar 2025 23:02:43 -0500 Subject: [PATCH 33/45] i hardcoded the version lol --- compilation.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compilation.sh b/compilation.sh index 87c688b..6ebd9d3 100755 --- a/compilation.sh +++ b/compilation.sh @@ -23,7 +23,7 @@ fi # get source and build cd $workdir curl "https://gitlab.com/api/v4/projects/32320088/packages/generic/librewolf-source/$version/librewolf-$version.source.tar.gz" -LO -tar -xzf librewolf-136.0-2.source.tar.gz +tar -xzf librewolf-$version.source.tar.gz cd ./librewolf-$version/ # get build deps apt install python3 python3-pip wget patch -y From 4f951657d5a786bf7bf30f490d3ef86b236b719d Mon Sep 17 00:00:00 2001 From: askiiart Date: Thu, 13 Mar 2025 09:21:52 -0500 Subject: [PATCH 34/45] relative symlink instead --- librewolf-allow-dark.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index 0fbf8a7..fa6f989 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -22,7 +22,7 @@ mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}%{_datadir}/applications mv ./librewolf %{buildroot}%{_datadir}/librewolf/ -ln -s %{buildroot}%{_datadir}/librewolf/librewolf %{buildroot}%{_bindir}/librewolf +ln -sr %{buildroot}%{_datadir}/librewolf/librewolf %{buildroot}%{_bindir}/librewolf mv ./librewolf.desktop %{buildroot}%{_datadir}/applications/ From 75a0e9850bae4de8ffb4b512b3b8351633de1a9f Mon Sep 17 00:00:00 2001 From: askiiart Date: Thu, 13 Mar 2025 09:32:04 -0500 Subject: [PATCH 35/45] fix placeholder dir in librewolf.desktop --- librewolf-allow-dark.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index fa6f989..e3666b3 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -23,6 +23,7 @@ mkdir -p %{buildroot}%{_datadir}/applications mv ./librewolf %{buildroot}%{_datadir}/librewolf/ ln -sr %{buildroot}%{_datadir}/librewolf/librewolf %{buildroot}%{_bindir}/librewolf +sed -i 's/MYDIR/%{_bindir}/g' ./librewolf.desktop mv ./librewolf.desktop %{buildroot}%{_datadir}/applications/ From d3f07c71aaea5f8fb6464ffc698fb636959ecef3 Mon Sep 17 00:00:00 2001 From: askiiart Date: Thu, 13 Mar 2025 09:36:05 -0500 Subject: [PATCH 36/45] escape bindir for sed --- librewolf-allow-dark.spec | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index e3666b3..de6b392 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -23,7 +23,8 @@ mkdir -p %{buildroot}%{_datadir}/applications mv ./librewolf %{buildroot}%{_datadir}/librewolf/ ln -sr %{buildroot}%{_datadir}/librewolf/librewolf %{buildroot}%{_bindir}/librewolf -sed -i 's/MYDIR/%{_bindir}/g' ./librewolf.desktop +escaped_bindir=$(echo "%{_bindir}" | sed 's/\//\\\//g') +sed -i "s/MYDIR/$escaped_bindir/g" ./librewolf.desktop mv ./librewolf.desktop %{buildroot}%{_datadir}/applications/ From caa866a067bca407dde247a78844371a253ea679 Mon Sep 17 00:00:00 2001 From: askiiart Date: Sun, 16 Mar 2025 00:19:02 -0500 Subject: [PATCH 37/45] bocchi the firefox --- README.md | 6 +++++- bocchi-the-firefox.png | Bin 0 -> 89516 bytes compilation.sh | 11 +++++++++-- 3 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 bocchi-the-firefox.png diff --git a/README.md b/README.md index 91cba5f..d1c5282 100644 --- a/README.md +++ b/README.md @@ -79,4 +79,8 @@ For packaging info, see: --- -Based on the [librewolf-allow-dark](https://aur.archlinux.org/packages/librewolf-allow-dark) AUR package, directly copying `allow_dark.patch` from it. `librewolf.desktop` and `librewolf.ico` are grabbed from [bsys6](https://codeberg.org/librewolf/bsys6). +- Based on the [librewolf-allow-dark](https://aur.archlinux.org/packages/librewolf-allow-dark) AUR package, directly copying `allow_dark.patch` from it. +- `librewolf.desktop` and `librewolf.ico` are grabbed from [bsys6](https://codeberg.org/librewolf/bsys6). +- Bocchi the Firefox was created by Dr Blobfish - [here](https://im-in.space/@drblobfish/114167110488757878). + - The original image wasn't square, so it was modified by adding 8 pixels of transparency on the left and right sides using `convert bocchi-the-firefox.png -gravity center -background transparent -extent 516x516 bocchi-the-firefox.png` + - It's then converted and resized to match all the original Librewolf images. diff --git a/bocchi-the-firefox.png b/bocchi-the-firefox.png new file mode 100644 index 0000000000000000000000000000000000000000..bb1c0a07f79e44331bf1b513965282af956ce82f GIT binary patch literal 89516 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
X20=i6na>f`w}Z6<2n62&2^R!} zq6k9ngiIo%&@E;krncM$O=ObY1~k)6kaD`?pdf1k%!D4AP&o;+AV_Z@C)=Q^YcY!z zh=5z3$dJJdaS)o%kV_oQ9iuv@>W^gA8sp$A=rJFI>!5a9h2_%cIFDp#g94X)U{xo) z^qL6!W*NW!@h+m&AzK#!K4c;$3&m0(1nb& z0tgs%hr2&rzNJ9NW?N;QL`GvyV?3(x!;wg#CQ43pG23DM(nq?8xmc02eSQ05#X)sJR?{D%+C|En&+l{;ZKffI zRhE>D$DG;0DRZtnw)iQiKMo9c!=a?EwE+>r;2^jRAh%4ukXAFcsh;{0+{yEVm!ZeJ zL-j}iW$L7gimL(yikcBj|6G2RK)oiFeCaUXVYmUF6(AWR_uss-W%}VH;So^5xBO%2 znYnJ7irBaVG_g>)`~r}drBJWtQ|p1UH0l+-aSF0XlY$5}A*l8!4QnKj=oo&1<@;le zptRfxIe1g1kp3m6j6i|K}sc`rt04Qym8@Sqhm+v7OI8PU8;Tya#ids%I%N(O5(aXlxIl~ifHLFFi7UQ-R;>($ zO4@N5(B5x=SM)w`j^UQ-q%oel4TeTDb6v|qle8(){XvXrUg+(8p;8%Z0Ox}QWl2b^ z3(O|bk+A@{AkViLD6WV~Hblb3q4k|5lVK$&HrQ0K5)2_DbsaSALtcL})&V>6z_T_4 z>V4bg68D`T{NFDN7h9lgWf!m*U<5x#>%zg0akP=~u5*sBno@Vcb1&?g8?R#qsWFX` zp6jxg$+`#9GM+!j{z`$i1H%y>wao%`S$eqaVJfI?mGf8GjVuBc+ycRN68hLD=&!5q zaA->_76N+A*=tD(V_PwJFf%Ec{@=G0*k#9Wz8_CI;+BLmADojU2$=1qjDDe4=W1Np z-i%14{HEB0?1@F=KzZekJetN|$NiYjAWi$Nc)@Cyc|ov_2?2mXq^ zD%HP``qwv2`{9S7ANizo8(5R5cdT*?b6pStk}SuoF#8vf8t;r^*SiZPLztTTi9{MY zm<>Aw)HcTKv~Lp!DFqlslTGNZn~vSkWr@mLqIx|Z8e~kU>!7q;1{8RpwjwAHMELpV z$9VK9_1y(U3ZFuMBX$|se?@@7xd#~~A%_|S6uBA_1I!C9?s`hT1`?*~g#bp}aEES&=^IdHLP|JR84Nw~$rQg-GsDC2?9id>q zsp=zBvO1xRYcg$*2(0oI2t_8Ox;IgwER{AhjFq5Tx9V8{sA4-qjZ8tGMgC$vY0MEM6OL1GtI*^}h zAoG{b*DTqX{3$dq*jxbX4t>Ic-3DNdlCf z@nJH*gKmnDD)qD-6|?C0|C2qqbs`~6HdMbfB__>u*FTZFIZ@u-R4ZG1OzM`cvd2M# zE9N)SVs3(#_yn~_vgo>nISQ(C3NAZ?@RDm8fB)6c_;_!A$to@PM#>L0m%QOADHO-+ zI{Rq(GL-S`i+b2MM<{NVYmGym2${5`c>y`=x)2v2!#8lgaOh0-sP%yez(4}CW%r&Z zTv&(m>IB>d0eXRTvVQj}zS8ffA@Xpx1_(NkUy;rfqF(xfL`7Z>g5d6lA^kqgu^k~H z)mVLcCIZBK54;tn+YYBFngCAS0ya}u1GF?RIlwMZ5b0zt?A4q_He|Kkvf7V;()7uB zue57h$b_UuG$`F7~&9pY7Bu|1{mW41wU{D@cyqc`hLRrDie5_VQITv zjf~7&4{)-7fpac=v#R`eUojIH|LlR_IMjKV)OBrT&sGp(9ymbqyW0N#;9TK(G3-1A z_9)qPD584zk*m3j4i_iV3vPNiLLi`rMdE!`?>evF?Z~y4-VMS^h9KxThcZq?i(lZE z-5D~eZUdU@rb^l({uvKKGVB7{a$xUhsKN=A*`Lx7Lg(TssAJ+JF;U3W>sUR>eXuR_ zqyi)UG-&Fl`zTai^|r(%Xpo5?7#! zyP&CypcNNFz-KH6jHEu8Sat z3y@x$Q#YepT!g#`en)ImJ4JO|0Xf9L0(U^Zz1}KG-j}xc0XcV)N?&Ylex&*jos||z zg(R8i7RL;ooJs#*z$wTD4x!uku3NEO6`A~KgX+F`n(IPzteoP)>`|a5URJ0;fd+?P z;N>o-WYZ)`QfJ~~4H#VFAX{VU6Q`KXpYDH#TV+;*j$bna91u_{MI+PzeAQ6ot$>Fi zq7HThD6rn|DxiRz1%go|PreY1lz*w>&LbMO@Rt{9PzD;Jc*6kzey#!k??qS6g@?a1 z`GCzIsPHQjfn;%tq-382bMHmEl!zdb{Z|cVDMxv#2!%{`UIH-4W0~jk0nh>n$h6ir zKOoRo=YYf~ul)6&TdC7aUs`h+AX#jF5um5Jt^$u!&?IZ&u6G-RjJ_2->SZVAdcfvD zo9~DSg50f;4ahcOhOD$9_L0cRFJustl9gMP^vFx|tJ|GliGla1~K^@L+oqXAuUbeo# zRFe9 zgAYBILI(R&rtPFpYA*1{Cui6~XNG+aJRne7yyEpZ_X|Lvq1**%8xXJ%UmzKW`2z5j zg3mDs0Eg{FHXnyvXUP@hY&F1DPQx*`EmxXrK@-Hs=ZM#trPIPb=pV6cG_xN>)_) z=d764xJ^Dmo$_@+LE*_9PymGYKCtG5GxiD)M@i9~=5wju)enzMiq);@O)LkHau6&N zYUA54o5O*Htc5nb4RmGJT>gDXpDgIU>!JJg%NxEymeUYwJC}%PABYL)WN&7qAfUle zHcMI*E=L{l{$cyvDj?`|=?ijTt@ItmUm>!9kh_|6M^(>jadp{48*u?j@dMtI+Xz?cdmeE(w?g7*>T zoo5Sj-7$#Rq4YT$6;*g*Re6Tt8{`ua&52A_M6V8osR8bfFd`J_XJKr5=_)|LI`q}6 zZhY-GhV6U1E`uvCygR<-n~#9#tkTGWypTkAz+s2D4Mvm7xXOi#mtkVAgLp%xuV=dB zpc)HrQzLC1(AfsA4L0(V7c<3Of7b3ubWPft)FwQ0WG12du?1cU-lyXV)>D?H61ap%o^XIm)l5 zlBd}&Nc*}$r8{a6P*!LpKtRdgv~eG;0s=7>K=wwfKZ+h_w%nv`@B>N?gQc8IK){SI0QB9N z)xYJBp1KY4qo>WNO1{5R?>gqV>Qj_x(_E z`I$XD{`|T8i&eS5CI-sb%pYun@tlj271$OA2Yz`n%HDS=c$Mr|Rm#zTfjT(3O@2U$ z&F<^hz5Sv;&AYdzR(ktk^Xe1&+ zcczQM)*#JNXwb3E6;R7{PQ#F-<>Y4z@YrTxML0}SrE}V%)YtLJgW9UWif>?FS2ZeO z20|p)PVJXjISomwRt=VHKvEYxR0IY7N>JS=tU44@%xr@y%3QPjaT*aQ zK*4Njk4X+F_{gn&+5BaxgxdYlC+~C8e>kNJ zZ-9#%E|bVo>P~VZyUDQS&EXrA@Ig$|#x1EPCu89={}&9zEg^zYOxF$F0>J`I+=_Jo zqW}cmeY2mFOM@*C&-#jgd)x*)%}NlG;mCymKrKGQi-ORd z>0z)n086RQaq8ojDQOIxq%}5gJ!?Jc=u^G&Cuc&GY>^XTD-G6L>KbsNl)Sa|7+H0+ z21zXs%IKinTNW`=^C8kLqbUVFG86VF4Wywo8iU}hp!6+TqiBecihL^omdj9xPNIQCwfg>k2MX-vCCqj9Q_*h73T=ZyvV62h znV8neuV4=5lr3$n;HTw3ZL{Aa0R&R;CxoQ8WWYdWw?V*qP($x!i|#bHL79oZ*3Ija z)De)9A=nBf)Wkvc&N-36^{$^5n_Za2*4k!bDM;J07wAx{ecS)9ULtAz=F(EMI!;}t z$(2&zV32|42`K-f0w82r2DBoE@%t;wg)XD=HRz{C>anq{3uzbijVJn0O!a{_x8x>((avAmHyL$lp^ zEOz&+AqzhG;V*DHTV)#APDddDsk@-BLw56p@ng?C#nhy5nOZE=I+F5|e6y366D-(v z796;IgKYim%0KTKiDfcp#KvSocEG?e{D8tjBxMKhYO~)X0R-Lk`OnI^%|1Xgd2WN^ zXaj^@2|));&8K)mtOV^@66%2m(Gg&2TV#aeTdzMh;cLw-%wn)Lz+kIynfYO?L6#y* z@*0_CG1<8Tv`L>~WgSSk3Z!@l1dvSbOXW*Y$~RrGvR;jlWx7mU8l<8s^eWwUb=W)y zX|`HPA4hxTO|T6bDepl!NTgA-2>@WjeNgx0C~=!JVhEW?`2~9N^YXdc?iXikIGBCf z*;4$<0>CV-;^xXa6TM#ja}Y2xGgh}GK6c9q{PpLK;#&`Iczm{iUpwgPW~^?+Slx8@ zieo8r;_<_lz|zHX>A^8bPA4~_Dw_Ag zw&-)2o5J>1S_EU$X11*3CZJGB6U(q&+tWB1Se@gg6)XG{ns4#XkGb*n5473u(YOq5 zICnkz`nPT(!qY298x-wr;9C|Z$VD(-36TqfMedQy@A5TWg!v z#wKhjOl5wzZ2jy_31r71t2U&rm*`Vz<~;^L()jzOqYoVxpIW)glqqO@`BE!Cr935D zxfzrzg3LxFWRVm730j9h+5}5Lzx@gvs^2BCK9F&z=-E~3iC6I~^lp`g4w0s%PDz$( z(;PL~rWaQ{3uUoz_$T&6Ys?Et7m_8cAqIkRVlBeEK640v^VuWV8c16kxRblSAHc~L z6?n${iCj2+anF@n3{Wx;Y(u(}yzWSju@$X3e*cj4I)op8<^f|ycbRtP|D`t;)Tq^@ zZ<(l^iy0*7=JqI7_I7!fZy@|a$v=Up26dX4w+#${^*-{>p|UzvfB-vH=r7vt`bYo) z01%0fg5=YKV8G#8d#;3976Jsd{!VcljD%cRrM?cCvtQ3@S@`N+tJCdZe$PBMRyV-0 zvD?U&mEkxsIzg=06Rx)9x-p~L5UU|bQIPX9&c+Tc}WE;w{+0=dc zV+O@mH3~K6U!34?SrIH2aw(8=SAp`XY~B+z9`U0@M*#%VFKgXy=kMC?|HuG=Abd~) zzYtvMt4TX|Zv!CLvQYQI-F4)`kd?qw$YoXnrA!))K|L!0GlMz;^ZORDwXuo*dS9NpoJSl&{P=5Wp$y*7V9y7r_-1wT+w(n(RfB;uM`U|-Ao?{?BP=_aw zi9m2%2@Tu^Ey!e%3tOsBftM*`C8%@#;<7}*+`=3>oenlv*1@r~HaRrOhtdxkFlffS z<(GH9YZ9crWv=2C7{Z~o7}n%Mbq&plSC*6XyPG!EnvO`3_R{WJ{&kyFWwvT|T>wxS z9qnh!b89%;zH-Vu(9sqaxKQo@&2LaH6_YVill?Tu!kCl=)Y!|^nnBK#MpiV#+NQ)` ze&Qhh`m=|zImpl{^*C|x#q>Vqc?-1v)f}FoS#%Za)#qxJSqn-|R5PoOPV8@Ew{)q;mY|6}n7R0h=G+&tR( zx-e~V$%&zWKq?aWgHhbq2wesg$G6`75fHtiYQ{ou{StO1tNqSiwqA zq5cqeR@+LTq&M3`r?(dyOKTWx4P2$}*qJS&z7WY|!ECl|*6p*_$Igz6ibSVP@v7(M z`SLR+>aa*y_=0=|#rm9z)X>=smBP~Q4)1>0SQFIhTSqRi;UthQr(m!h6@fItlX5Q@ z{(%|;V?LF-f2tjsW^q(jB6V9*wddfc5#PPLc%VA&7I3!W$2g+O1 zxz-cgc52rrBJAld2Hgc!lz)jUeqvk&ksM$v-pH&keM|h4FJ8pAU%k&}2^8N*rR@tF zSPM5TKyMLsZF9W~7|6Yz-D#~T^LIM*CA2?+<5C#O!mwJoOoT%%qM$cKp?&~geeAEi z?u+f;;V3Nx$+P%=BD_Mc^h3D@YDFMe6DV@@`>rD#HdNlaT0NjJN-Kd9Ap{mr-HX9y zAL~o2ka3cb7%;fc7UpDEMH1<@%c=I$lcHYP+i4FKPr|lQa_alH2zKf@P$`MEd7lhv z&*CK5iWrs>)js}|?B|0JpP#@MPk}uUqOwMs&7!Q7gk-r8QjUdoA*j{7;$kR-q2Dv9 zy+tl~F|dQ}TnUo#$*(Wr4?ge!4lZrwyfo?W=J-vWWDvp3c~$b*g9P?=_MwAL*j<2f z>M5>5 zSYcIHLd74dO)EiDx521G5O<=LKuK?|hkY}rU}I?=TkD&8CCm0pP9{Yl$FWw{* z&>0Si+-vK-6X0+POkdNyU8yLvG+q*yqfAm>rKALBuu1l~8$bj{8YeIR`)-Bh8eKivf9Cj(_ zXB%*$3T(?EXEw9S-nGsM8qRf8Ds2IY@^-2LfxzL_%?|(H;d>dDkpcp`=Awt=Tkrl? z5IwGT+TsvU$hZ~!p(}W@cb%1>ft`u{N?x34DfIpy7*7oMfHXYMAtFqySCmcT}7MGm#rI;?dPU{`8{<@qwET8xo~E z3#Zlq3j{a>F@`_~b7B^=G>eYtWM49E;bHVKz(7Wjhyf4;1ZKnxdZK3yMpi%8au*<| zLnlI*8Eb>33}eji>y_us<7H1g5LAR^Ov)fwC>Wd4H+?hCWVa;Y`}Yk{F`nK$mx2wF z?H+j7@Q_c@Z%7pZ!6=^_ELMU#prn4gz1bd4J^KK*);6(rd=+u5He!km2}y+!DsV__0E2EW z%~haz39KUtU;_VAYXZXtnR=&3f=PVD#ura8D|M*$R3wE+V~y8>w#sDK*jet!yz40JEP-0}k}_W?Q*3E(Na#o{KG0PMF)v z^p}9t7!{OJ=O@VS@X!hn02mM~e`l0^A2}cpzQmnN@qMS{B1C#3j#$BL* z1`t@Cv35V`6*AkCp!LkkG)94wd;}!Od8|1F7o<52(jf&JvjR+%g-&?H`Z8=y?)C;t zh8U^(W&>sOj_FO5tg$2jv1EMwYsc}2AG#06R-?@C5qt`~<@${1VL{9%p@9hV1{^Cw zj#9Imtpfn6@&t0HjBxRh%Ru(AA=d&VLfZuc{N%TtjSJ714RkK(6Yy@N4oRZo{IC&c zTm=qLX3l^E_4q0xuF>~4;uBeyLV%lK&_LRTxv*g-*yl$K0DO@;DN%iXK+#DCK6>3d z-tg5?_I>1lfUdsq%kkIm{uYQXE+P%qPi0*4OINiV)WilmBT>=LE=xpMJY^5&_s(JM z_!>5rHc}I}r4Vc~oPPgOQk}GXo9QvFsA0PSq;AZ~9;g5V1FUu#w6KG+P`Gtc&=GU8 zHV!w3N7-GR>IAo_y(EyyS)h8Ed+;y3XTt)Or1?j!?wl0W=>#zi03Pv+4?4jsj&h zu-;)EehW+Gr%xT()&z2%C#Sy_5k*DLa`oM~TNfr5kTkUh_#X-QZ=>$}7+eMb1pPfE z|4dygK(2eiCl{6|^^?I$P^f-)n3X_@=yb97^nF-7uooN4YgjwBhB%5m1rCQisK+BS zgWA?8wVkqRA&GJ@3u;S)#NHl(4iIICfVDu9Yb{_aAppnHSRmL$OeluGiW-1t6|nOz z=q;T!1<0gDw_33z$_F0gohR zlz)h4Pz(}K6(}HI`B#3c^Y{i;WXM-}Em}s*gN#|;hgU$V|8L zfI@DC>armn{GiivTLFumbLFiMiOTn=a1V+hAtqtuZ^!N50kHid@3sn9K z1WyLa+;x5L*!xD^|FHl9A?Q7l>1Xo6KmaH>XwY*n00l~@MA46tbI?SlR)XwtA%MkG z_F!TE9;`2|VeQx|2K_;*IF*TBdP#RU5UcFvRkz9`T{YX!Lc$G5w}0acnkAN`eB06dS0k6MmIPCB{dlyN|%HV+qPBSQ-*cjmN zzHkWd`Rv0<*Ay4SZQdC%m&8R_pm{8a`LwF#xX9B`4iOQhAi*u`JsVBj1;_yoURTHY z`uDky^?0qI1fxU1&wuZuaq8Z#eK^}&Z`^Z#hHQyuH@+Dg!@OfSGg^=|Xt7ty#*)P$ zmx6i?$)gZBHWRXP9;jxMlEU%bQzl=@s6};2O3^kDP{Z^;=*AmIj&jChA-McepT+I> zJPg9wW<^^=r9QaT`Ry;wg(*JY^C6%|6zStzu(& z-Q*7->)FY;6OiUIFwT8@H4bL8caX*UOBO($&Dk&l6CR<>610_+Iwnl+1NcBig9Oj# zp4KNe5f0Xt4{6dRVI@*h?gVq+YK)iG26*pHhwwL_e*}?D7<89x=^=NuufERG4EBlz z2oiz!#$WBHtG@u?u+JBR1Z03hBX>cSdUd3%p^{gCnXw$5$W2eI)ZY(1=Nvro(tYJO z5dsMaBZDdigVNjIF#BS#PTy^T-XJ(oiOJJ8ynPBx*3f`U!DJXQZQCF~r2@D463m(X zkVYY)pHOmErwjuGQd!#Q;ZH|@M`Hp6L?q+e?)?WqzPj>O#~~tNsC+K;uR<;?tTLf8 z$*cKc%T{k=W^M*E=N`Z*XYa@Q(gq%W;5d53Ad*gAezubqDIdIU){yp$nbnP4Q0abI zm-qMvnNTTv4}sKWAQjWmvR-H)lLE|41HC2wkw^O;VqM*hKJnQ~}+bv4~}{G`z)t z&Kr>DQn2%V_$~#j6OJd32rOcZLdw>2icnbknAD*1=CLRia_rFIReljbaLZdgDYA11uN5wv zz1Pr-Z=D@8>1;jTz^2?Nyw~#%%;GKIcL_QfpqX=j!gTu1 zHOf|RH}5{{wSkm9|JvXD9KQC=V*r3N_RZo&Pdp3PU9bnI%?k*v^;1Qw6ma@orV3Uq zvK>!@KC+H~zU3%B ze#=qBnPlpeGfDcU&7|!f^{|f?&7EJgClG^a5W5gfMe0I zumeT8WqJa?`|7K3$=M5`Cj1YTS?V=U=F5YdpiOBaTkIA&1T6_1gk^r&tTop!3(NB0 zCp0ub!qnS5r4K2a-RCe~-PNtYJJSpZs1f|V$Nb9cU(>utb+0!@iEqF6w;|;ljAG{` z0gR*Uy<>63a=|;wD*C_zB^NwY8o+G>1;t8}i^>*)f&!&mvkz5{=ig&Jzybhw-oJ!b z|JtV!$MzZ}nMfXY>3%%-n$vK}ne$laa`IfI)0ML3>x{@&E&;MZ1hUVUwNatRS4j2% z_h>T4bD*|;CRYI(qND;9p06GP5WwRH&Eb1jO~(3$@a^~AAZ2`$Qs`!- zZ>6?fdjr{?0XgNr28Qb+KP8rZ$pr`Qmoq)Ef>YRJl%h+s!~j z+rl^&oj{-a-ceUx`=UqV`<`}oK{GYfN{MTw{7gWWW8m->V7poz4nYw(2$Sr>P9>Lb z5Q+q0Z?4y_GsP|FGBy^riic9X}*k&LjVAD<)gk7 z-*(R(AY3sVxiE073AwNZe!-MWFg(Gq-hJj>FFF20FT50=`RXCudH+&jzizvK1-IS5 z;xL~tJ8usjd(l2za`pnw**}BDZU;SLa1 z$cjV&bp`qoSXv+8;L-qhJ-mwB?pwue_b+R!2ZsQJ^9`9P*WP=;SLz)I>=SdCMNezc zF!7I^c7RDC6z10{=LnR)x5I*p)o2xc+0Pue&E+qB+F5w{)6a3Cd}jCq9m#uVDgvuo z9E$ZQvuLt68*)Q@$%2)n%c`pOy@$3gHt&vcx50`$aHA9~7lh&jg{<~t;EPB}ZC*!0 zi2pkJUb`}O49$1k`&JptUo15LH?)`GOSMaJ|{WSVf zT&u;rk~3X_3(sD}MQ1JIto<`MWwD2S^Ia^?b}&EF!AytH5y@lIO~V?Q0qP_if=DL! zH;|0YL5%gj#M)Mj<&6jjk8a`KBWt+#;Y}P{*>r=%sHj&Khap&|{Fz)3bJ#=kMJgjl zA-2aAC|9`E-mP*%;rL};ZeS@6k;6^jo_6)A_~jqG932r_T?37ln{8`9X5gNUBya|B z5)TEhY0a}?t3hBL=34&s7d6}1maEX#+4kk-9I(;dY#*)6l6}s$E-(-O=7&igI{XFEcBB`TS zc8pMsvs9yMzGA38Wm3)KZQOTq{Dn`w0N?%0M}td$Vz&NxAw zVB8!6B^}ToOYl={NLiY>5X#qTXD$pJE6QAGN!Sx@RjSD)Xey)T5)4;%ylvFaO;CLN z^{>1J-+X9Ahawtj(-P3C?V-vjrAn0waty$+{i0l)sE*J5$56TV#z0rx!Xp6h@2KZfjtb%ul_ zfc4ml_a`g4fJX&%?DymlX6@*FFK{M3W<@Ws**n7zH6)9R12XOlo68_EzI_Z-zXt6w zSYraeeQY=2$=EFf007>27l>ACTLByfwEwvX9+#NeT9_|Jlajcqv|%Nv^FZfW3F@^G zJlbLo@@_}q#vgqgPTe<)1@x>{agJ15;8$Mb*S7>z87tQRW>@O&6}u4FPjfg6d$1R? zfjtYeEAYIYS6k(Cu+4D0ZW~3b^lBsNmMdPx7h4IMisU4sAVwUf-!gE)Y4iB4AG;R& z7rSP4A2tPehrNRouq5OFL<;>!)&8&+Y1$uI!G7to-&hUo`yiq7Y>>4ju`v8X)(KtA#vuxrFr~Re%veY;Bu0~^P(NvG{*=UVTk{tGpU1rY4R?(61`1?b00CWj z%1beguz>U$IwFg5_nX;xV+Mxa+kt%6=3dKl8vm{_AU= zi0&-mbS&U>EMk#o(BbsaudKD}xdPgKips93W~juZI)g4w!932OJy^typ2o8-fow~~ zAS2%uPy`S{u7+x+fB#xxlYae?FLp6BaTBnVI2IpA#8Iv*;!$VL_nW&hff^tA3x&j^A|aVf^y%{wwC_T83T`bTHIxv3eDp3L_3!!jSWI|@f5qScG%pL{im%8NK zJ^25>>N=dVrxz$v4EVs|HuEb~?s@U)0fX;bPm5(!7TY7o&Nn?U!Dcfq4#fx11&V(Q zJKRyZD)erHvl1I(_y~h)({a*^ND?*&EvQoF-+t^nUjH-0H`H9V4G;i8eEU5&L-J#r zgd3J-FRU1X2#>*SjaOZdeG3&RTU7u;ut<%kvTD(zeej8aMGY|a0pvWB04(#rQT?HJIg_ixAdXC< z`B@R&UwAMlv4v)UpbiMIWh*8OqM@I&6I)VT`s81I?a^Ty8b-E-RH#G<`eVuX?{X`-U4vVF;lMoBQN({}S~zTk=H;n>m^{_=0`LC;g59SAI7 z1}ckuL=t_DFrWk=M9h`9c&gsd3KPFot49Je+{FxaF^f*Ecn{lGUrhe1LMXJ`vU|9j z356kL#5fu+VT=2@wH|xvDR{?^T#JR-iXmzKSbG2=4^OetoQ30;b1OmNl|i~GR~p_& zYPSue@NFKU`Dv|kI@_lO4g$9cJGX&zlj*bOZJA6K*s$*~77?m)3Y!7|U*Z-h3k>?z z?FIwbZa{#Z{Bub9H4rUSSN0XafWHf3BSl{m3A7;1lzpa^!bvb|-s8Z@ddh$J42E^b zqdDMs#S1RROjqD9{_1Xsg5_ox0$nn`UM3(yjEG}I#E4VsScJHy|F9SY2m(4R(1kz; z0zK-WhmNrTwDL&$3f*=sWS3{VCqrQs%SG{+nQx4v@p1teU_ARVXW-|5;A+fvhxpMl znlo%BC^o!MUbTE#jX*M`1^WAHuxZu&+@W0%Z4i(J5pEZK5M-0a3$h|AYC`%wmIao* z%I|6Q--`jrAtMZkaNqv!p0Vv{SR~sD2*N8>+z*F|1R-&$HJU-Hcah4)#!3~pb(6uD^@SxPC zkUo26O-C+_us1(a7=;h@!lu7hgwl4m~}i}M})uRpsBJfz8wQkO#~Zxvtcir;1? zPe?ek(l2ra6uSXJFI^ZUpb}6(4p=Cz(}eF3k{B_L$Yn%`g6BIO!s}mpIllX;=Z3Fj zG4_)WEk5s6HGUaMalpW)OcVbYg`Ri-%!=LIQ<@=@Tm{|OrN9=DP|uz7JZ1@Cf(UV! zTXO?cm1xM62LycS`rh$(w$`B`Wg?~`dHcPeWGSDSPa4eIyP$}OI7B*QAPmiX9^<~>F1W10a|IS3utj!rJPfqs9A3d&`Y2!*306S{5pd4MCloSOyj()0G46Mc}nNW3sJlBV1IbbvWDz|~Mgm7xnH9$Zkhs?CBemn;pq)7<8 z5eZlmlB|fvYBQesI%XQ`DPzK)Kkn_50|u~dnF@Wm;!*Db;ch=uVXdS@0JP0YCn_rP z$A)Qe1*dDzF{932*eqF5#j-=L=0kd zovkPn0SJgF7NFm+w~5Wgog%|D_VLwk6;R+xDg+Kwdz(SRGEPSo941}w49mnG3#7xbpn=<|Db$~Z~-xc^T zKXff-XGU*qrBMR~$>8P4!UF7F)r=#v0R~W%Vx4%9^c3uX1E_SwNwz{o0B1_VYslK@ zh*P71WvB3*5iU58ozY_fJ6j<$5D&AV5#v`Lf8$R*G}<25mx%xb0DxHh5eVy5z(6I- zfl{jKn357gP1{z2QOmGa0xBw7Y9+{TyZWormX%=m<7b{ShhP5L$KhE|KeKZ0r&3k& zlyKc$3=^rkOJP|%`MqTvmCIO?YkH$1n;~<-nTz5NmtA*aUzyp<4XFoysgBqCNG z=$%S1)L%zQFsy%kR3t-nqk9)^!KRk42M<5dg2>7o1FO^YzJ0y3?q76z@ z7u$e>Wfs!ykcb0R1O?4f8Y2f3a8A{o9Cc9d8Vum>hnDd_{?{FN@ZcJzGHFsoC~V&5 zCi*xkSA*oiQ}*=mv#-1w&$zCd1!*UN16~>c$NElWfFb@Vi>voWTj#R(MvmF12ppKi zN9j2W9E7tXdfy_$sq3Kj6^rT+fQ!!EhhP2q$K!d=Ji9@gQyHyP48S+#>w{w=2i6=)S{~?eP$qjr8e|Z0$_23e_d1%( ziVD#8#d`Rd-QAHLFaXQttFt23a48TW>Z0;k7P$ecifmYy2-rJMpB(eATT3P)?9dh= zJHIL^er4hStDm}2=EamgFX^L$UVObQy@DT@aUd-~cl?HuVBMwlYnkz&d zjD=uW|M)mahW7C|W_;+A58~bba4$ACBTQxI$U1N0IMxw+iH1(wH;W&B;iY)d(=JF? zpRN?=F&d9js&$pJK1B?EaKkE>L-x~5f6Ggtdt-qE-HIQjP}D_h7efUObnBkgfc+>1 zpx=$K!Q*q|ZN&mn&0vPPp2YmDc5$pd>P@ek*kmUYX(2%J^S^_Mp08K_TyJaStd)Q@ zs;pxraAen535wV2g=ZUE3F>Z>JZe5c;Rxnf3e53Nhw#GZo{y(K;SBuEd+)=?K6?;x zJedsgsU#9Z;yABj-P^KwrYrFB=U#{(`i@I5KikQzALIb&litKIB7jgd{gn2}6M1Y) zXA*SH_C`g!mH{se&`v>Yr5RRb%{W+A125kMc~%3mR%&imLbh&)v=yU|@ueGQCd4(P zkUPYf>m?&g%wWPqr$e1s3jq=?r?qM&V5^=NC6gJF3A7SmTfz_nM|O>+pq>RG zZ*(4fWDW2BhkNmbn~#i~D>9Y(vdWt{!E2D#Z`bV*zUwLH<3D`Yr8r~%Y~!}eX-AXy zJn&`=eptCnyw$e{4vKOFD7S$kqnYiB-8bD>5%R!+D`cHy4!aa20m~Sl+inmO`ZWlJ z1Yplhj80c^B?tt_N5Axy_vr!(}TE{?v6) zxi8g^ZyzWCfNy+j34iy2`|+<|J2nLd6Chh0;W$>&XXDoCbO_(^r1S6}zVlL??e9M@ z!NghO=ai9zwlo{|cZUO@i`ke^t!QBm89;>u} zn-M|QNO&>Vk(leslmV$CEC`R6ocui!oJzYkyh*CUfK|DSXcLE?nx9+>F~yx@j& z@$bIl5}bGXLU|+O00%8xr*^+i^ns;8X{Q~a5O66}1qW09^R!8vKqK$tGE;_ zP60_Q%hguGGOG-CKNhuiH{44DbSMP^sdXR$1$6s`|K$x=4c+Mx$>ak9X5u^U`#eke zq@k?@oCgvbSP3eWt@Hy-td#&Qfr4U%Iaz#y2G^+A-r9PEkALnFeCXp3;gQ1|m`c0C zV65;amaz_*{_f|Wv4EF7=h1l4Q!fbaJCJRo%7xlf*0oz2_S($gLtEgj*o_3pfCG1J zo=G5NfrBEK0<^!su1i7Dk259)bx{mNgmu~MJ*qp53}7P?m4C1~8DmaJ3k1M`f{ysu zh5zLZ&l~QC9Gy&Tlz|c=V!rdfUtp#W=_mr^=OrL(`^`+m0lbI<9l;Q~GP|aMLcLw5 ztXGq{F({absDtvW4^?}ZYcz{IsGnn@%DKgbE?)Hf^YFsworka8ejK0p{2_et=EK

@I4xxOgta}0J`i^|0Hj}=MzkL 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 From 8a225ec3d51bac5471132795e760761b2db43ce2 Mon Sep 17 00:00:00 2001 From: askiiart Date: Mon, 17 Mar 2025 10:55:41 -0500 Subject: [PATCH 38/45] i forgot the 48x48 logo lol --- compilation.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compilation.sh b/compilation.sh index 432e551..941b4ad 100755 --- a/compilation.sh +++ b/compilation.sh @@ -51,7 +51,7 @@ curl -L https://codeberg.org/librewolf/bsys6/raw/branch/master/assets/linux.libr convert $SCRIPT_DIR/bocchi-the-firefox.png -resize 256x256 ./librewolf.ico cd ./browser/chrome/icons/default/ rm ./* -resolutions=(16 32 64 128) +resolutions=(16 32 48 64 128) for res in "${resolutions[@]}"; do convert $SCRIPT_DIR/bocchi-the-firefox.png -resize ${res}x${res} ./default${res}.png done From 1bef8b2f1f73d47369642753a5f3fa97717e88e1 Mon Sep 17 00:00:00 2001 From: askiiart Date: Fri, 16 May 2025 23:43:23 -0500 Subject: [PATCH 39/45] remove no-longer-existent files --- librewolf-allow-dark.spec | 6 ------ 1 file changed, 6 deletions(-) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index de6b392..e110ab7 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -49,10 +49,6 @@ mv ./* %{buildroot}%{_datadir}/librewolf/ %{_datadir}/librewolf/browser/chrome/icons/default/default32.png %{_datadir}/librewolf/browser/chrome/icons/default/default48.png %{_datadir}/librewolf/browser/chrome/icons/default/default64.png -%{_datadir}/librewolf/browser/features/formautofill@mozilla.org.xpi -%{_datadir}/librewolf/browser/features/pictureinpicture@mozilla.org.xpi -%{_datadir}/librewolf/browser/features/screenshots@mozilla.org.xpi -%{_datadir}/librewolf/browser/features/webcompat@mozilla.org.xpi %{_datadir}/librewolf/browser/omni.ja %{_datadir}/librewolf/defaults/pref/channel-prefs.js %{_datadir}/librewolf/dependentlibs.list @@ -62,7 +58,6 @@ mv ./* %{buildroot}%{_datadir}/librewolf/ %{_datadir}/librewolf/gmp-clearkey/0.1/libclearkey.so %{_datadir}/librewolf/gmp-clearkey/0.1/manifest.json %{_datadir}/librewolf/libfreeblpriv3.so -%{_datadir}/librewolf/libipcclientcerts.so %{_datadir}/librewolf/liblgpllibs.so %{_datadir}/librewolf/libmozavcodec.so %{_datadir}/librewolf/libmozavutil.so @@ -72,7 +67,6 @@ mv ./* %{buildroot}%{_datadir}/librewolf/ %{_datadir}/librewolf/libmozwayland.so %{_datadir}/librewolf/libnspr4.so %{_datadir}/librewolf/libnss3.so -%{_datadir}/librewolf/libnssckbi.so %{_datadir}/librewolf/libnssutil3.so %{_datadir}/librewolf/libplc4.so %{_datadir}/librewolf/libplds4.so From 0d3ff69ce105082268d24ca5f7c609697cb9b98c Mon Sep 17 00:00:00 2001 From: askiiart Date: Fri, 5 Sep 2025 20:04:16 -0500 Subject: [PATCH 40/45] Disable rpath checking --- librewolf-allow-dark.spec | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index e110ab7..6fc10a6 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -9,6 +9,12 @@ BuildRequires: tar zstd %description Librewolf with the privacy.override_rfp_for_color_scheme about:config option added, which if enabled lets you change the color scheme even if rfp is turned on +# disable rpath checking +# see https://stackoverflow.com/a/73807744 +# (the problem: https://drone.askiiart.net/pkg-repo/librewolf-allow-dark/4502/1/2) +# (see also: https://fedoraproject.org/wiki/Changes/Broken_RPATH_will_fail_rpmbuild) +%global __brp_check_rpaths %{nil} + #%prep %setup -q From 580ab4bf81898f9ff43f1500052c0dc4664ad78f Mon Sep 17 00:00:00 2001 From: askiiart Date: Fri, 5 Sep 2025 20:10:18 -0500 Subject: [PATCH 41/45] Apparently it goes at the top --- librewolf-allow-dark.spec | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index 6fc10a6..087a3ea 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -1,3 +1,9 @@ +%global __brp_check_rpaths %{nil} +# ^ disable rpath checking +# see https://stackoverflow.com/a/73807744 +# (the problem: https://drone.askiiart.net/pkg-repo/librewolf-allow-dark/4502/1/2) +# (see also: https://fedoraproject.org/wiki/Changes/Broken_RPATH_will_fail_rpmbuild) + Name: librewolf-allow-dark Version: __VERSION__ Release: 1 @@ -9,11 +15,6 @@ BuildRequires: tar zstd %description Librewolf with the privacy.override_rfp_for_color_scheme about:config option added, which if enabled lets you change the color scheme even if rfp is turned on -# disable rpath checking -# see https://stackoverflow.com/a/73807744 -# (the problem: https://drone.askiiart.net/pkg-repo/librewolf-allow-dark/4502/1/2) -# (see also: https://fedoraproject.org/wiki/Changes/Broken_RPATH_will_fail_rpmbuild) -%global __brp_check_rpaths %{nil} #%prep %setup -q From 6ec1eade17906df2cfe347e0fc6ef6d3ce7e9ad5 Mon Sep 17 00:00:00 2001 From: askiiart Date: Sun, 7 Sep 2025 13:02:55 -0500 Subject: [PATCH 42/45] hopefully this fixes the rpath thing --- librewolf-allow-dark.spec | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index 087a3ea..7ae0af1 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -1,16 +1,10 @@ -%global __brp_check_rpaths %{nil} -# ^ disable rpath checking -# see https://stackoverflow.com/a/73807744 -# (the problem: https://drone.askiiart.net/pkg-repo/librewolf-allow-dark/4502/1/2) -# (see also: https://fedoraproject.org/wiki/Changes/Broken_RPATH_will_fail_rpmbuild) - Name: librewolf-allow-dark Version: __VERSION__ Release: 1 Summary: Librewolf, with the privacy.override_rfp_for_color_scheme option added License: MPL-2.0 URL: https://git.askiiart.net/pkg-repo/librewolf-allow-dark -BuildRequires: tar zstd +BuildRequires: tar zstd patchelf %description Librewolf with the privacy.override_rfp_for_color_scheme about:config option added, which if enabled lets you change the color scheme even if rfp is turned on @@ -40,6 +34,9 @@ for res in "${resolutions[@]}"; do mkdir -p %{buildroot}%{_datadir}/icons/hicolor/${res}x${res}/apps cp ./browser/chrome/icons/default/default${res}.png %{buildroot}%{_datadir}/icons/hicolor/${res}x${res}/apps/librewolf.png done +# Remove the broken RPATH... hopefully it's only a problem for this file +patchelf --remove-rpath /usr/share/librewolf/libonnxruntime.so +# move the stuff to /usr/share/librewolf mv ./* %{buildroot}%{_datadir}/librewolf/ From 960701a62401227dbeed1b87889e6d99500304fa Mon Sep 17 00:00:00 2001 From: askiiart Date: Sun, 7 Sep 2025 13:56:24 -0500 Subject: [PATCH 43/45] oops forgot to install patchelf --- run.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run.sh b/run.sh index b118cdf..3384b6c 100755 --- a/run.sh +++ b/run.sh @@ -20,7 +20,7 @@ fi rm $repo_dir/$program_name-tmp # prep -dnf install fedora-packager rpmdevtools createrepo_c -y +dnf install fedora-packager rpmdevtools createrepo_c patchelf -y rpmdev-setuptree sed -i "s/Version:.*/Version: $version_no_dash/g" $program_name.spec From 7cbceed8e5eb2785873b910ff01aa2dced03fa76 Mon Sep 17 00:00:00 2001 From: askiiart Date: Sun, 7 Sep 2025 13:59:26 -0500 Subject: [PATCH 44/45] i may be dum (fix path) --- librewolf-allow-dark.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index 7ae0af1..951011c 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -35,7 +35,7 @@ for res in "${resolutions[@]}"; do cp ./browser/chrome/icons/default/default${res}.png %{buildroot}%{_datadir}/icons/hicolor/${res}x${res}/apps/librewolf.png done # Remove the broken RPATH... hopefully it's only a problem for this file -patchelf --remove-rpath /usr/share/librewolf/libonnxruntime.so +patchelf --remove-rpath ./libonnxruntime.so # move the stuff to /usr/share/librewolf mv ./* %{buildroot}%{_datadir}/librewolf/ From a69a412e92c3a587da2f3aa6c6bf5b3483fb2b41 Mon Sep 17 00:00:00 2001 From: askiiart Date: Sun, 7 Sep 2025 14:12:46 -0500 Subject: [PATCH 45/45] hmmmm it wasn't in %files --- librewolf-allow-dark.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/librewolf-allow-dark.spec b/librewolf-allow-dark.spec index 951011c..7a283a2 100644 --- a/librewolf-allow-dark.spec +++ b/librewolf-allow-dark.spec @@ -86,6 +86,7 @@ mv ./* %{buildroot}%{_datadir}/librewolf/ %{_datadir}/librewolf/platform.ini %{_datadir}/librewolf/vaapitest %{_datadir}/librewolf/libgkcodecs.so +%{_datadir}/librewolf/libonnxruntime.so %changelog * Tue Mar 11 2025 askiiart