0
Fork 0
mirror of https://codeberg.org/librewolf/source.git synced 2024-12-22 21:53:31 -05:00
LibreWolf/scripts/librewolf-patches.py

159 lines
4.4 KiB
Python
Raw Normal View History

2021-11-19 12:41:54 -05:00
#!/usr/bin/env python3
2021-12-27 18:55:58 -05:00
#
# The script that patches the firefox source into the librewolf source.
#
2021-11-19 12:41:54 -05:00
import os
import sys
import optparse
import time
2021-12-27 18:55:58 -05:00
#
# general functions, skip these, they are not that interesting
#
2021-11-19 12:41:54 -05:00
2021-12-27 18:55:58 -05:00
start_time = time.time()
2021-11-19 12:41:54 -05:00
parser = optparse.OptionParser()
parser.add_option('-n', '--no-execute', dest='no_execute', default=False, action="store_true")
parser.add_option('-P', '--no-settings-pane', dest='settings_pane', default=True, action="store_false")
options, args = parser.parse_args()
def script_exit(statuscode):
if (time.time() - start_time) > 60:
# print elapsed time
elapsed = time.strftime("%H:%M:%S", time.gmtime(time.time() - start_time))
2021-11-20 05:17:38 -05:00
print("\n\aElapsed time: {elapsed}")
sys.stdout.flush()
2021-11-19 12:41:54 -05:00
sys.exit(statuscode)
def exec(cmd, exit_on_fail = True, do_print = True):
if cmd != '':
if do_print:
print(cmd)
2021-11-20 05:17:38 -05:00
sys.stdout.flush()
2021-11-19 12:41:54 -05:00
if not options.no_execute:
retval = os.system(cmd)
if retval != 0 and exit_on_fail:
print("fatal error: command '{}' failed".format(cmd))
2021-11-20 05:17:38 -05:00
sys.stdout.flush()
2021-11-19 12:41:54 -05:00
script_exit(1)
return retval
return None
def patch(patchfile):
cmd = "patch -p1 -i {}".format(patchfile)
print("\n*** -> {}".format(cmd))
2021-11-20 05:17:38 -05:00
sys.stdout.flush()
2021-11-19 12:41:54 -05:00
if not options.no_execute:
retval = os.system(cmd)
if retval != 0:
print("fatal error: patch '{}' failed".format(patchfile))
2021-11-20 05:17:38 -05:00
sys.stdout.flush()
2021-11-19 12:41:54 -05:00
script_exit(1)
def enter_srcdir(_dir = None):
if _dir == None:
dir = "librewolf-{}-{}".format(version, release)
2021-11-19 12:41:54 -05:00
else:
dir = _dir
print("cd {}".format(dir))
2021-11-20 05:17:38 -05:00
sys.stdout.flush()
2021-11-19 12:41:54 -05:00
if not options.no_execute:
try:
os.chdir(dir)
except:
print("fatal error: can't change to '{}' folder.".format(dir))
2021-11-20 05:17:38 -05:00
sys.stdout.flush()
2021-11-19 12:41:54 -05:00
script_exit(1)
def leave_srcdir():
print("cd ..")
2021-11-20 05:17:38 -05:00
sys.stdout.flush()
2021-11-19 12:41:54 -05:00
if not options.no_execute:
os.chdir("..")
2021-12-27 18:55:58 -05:00
#
# This is the only interesting function in this script
#
2021-11-19 12:41:54 -05:00
def librewolf_patches():
enter_srcdir()
2021-12-27 18:55:58 -05:00
2021-11-19 12:41:54 -05:00
# create the right mozconfig file..
exec('cp -v ../assets/mozconfig.new mozconfig')
2021-11-19 12:41:54 -05:00
# copy branding files..
2022-03-30 02:27:58 -05:00
exec("cp -r ../themes/browser .")
# copy the right search-config.json file
exec('cp -v ../assets/search-config.json services/settings/dumps/main/search-config.json')
2021-11-19 12:41:54 -05:00
# read lines of .txt file into 'patches'
with open('../assets/patches.txt'.format(version), "r") as f:
for line in f.readlines():
patch('../'+line)
2021-12-27 18:55:58 -05:00
2022-01-19 07:42:43 -05:00
# apply xmas.patch seperately because not all builders use this repo the same way, and
# we don't want to disturbe those workflows.
patch('../patches/xmas.patch')
2021-12-27 18:55:58 -05:00
2023-08-17 15:03:56 -05:00
2023-10-16 04:18:40 -05:00
# vs_pack.py issue... should be temporary
exec('cp -v ../patches/pack_vs.py build/vs/')
2021-12-27 18:55:58 -05:00
#
2023-08-17 15:03:56 -05:00
# Apply most recent `settings` repository files.
2021-12-27 18:55:58 -05:00
#
2023-08-17 15:03:56 -05:00
exec('mkdir -p lw')
enter_srcdir('lw')
exec('wget -q https://codeberg.org/librewolf/settings/raw/branch/master/librewolf.cfg')
exec('wget -q https://codeberg.org/librewolf/settings/raw/branch/master/distribution/policies.json')
exec('wget -q https://codeberg.org/librewolf/settings/raw/branch/master/defaults/pref/local-settings.js')
leave_srcdir();
2022-01-19 07:22:07 -05:00
# provide a script that fetches and bootstraps Nightly and some mozconfigs
exec('cp -v ../scripts/mozfetch.sh lw/')
2022-07-23 07:14:11 -05:00
exec('cp -v ../assets/mozconfig.new ../assets/mozconfig.new.without-bootstrap ../scripts/setup-wasi-linux.sh lw/')
# override the firefox version
for file in ["browser/config/version.txt", "browser/config/version_display.txt"]:
with open(file, "w") as f:
f.write("{}-{}".format(version,release))
2022-05-03 15:53:46 -05:00
# generate locales
exec("bash ../scripts/generate-locales.sh")
2021-12-27 18:55:58 -05:00
leave_srcdir()
2021-11-19 12:41:54 -05:00
#
2021-12-27 18:55:58 -05:00
# Main functionality in this script.. which is to call librewolf_patches()
2021-11-19 12:41:54 -05:00
#
if len(args) != 2:
sys.stderr.write('error: please specify version and release of librewolf source')
2021-11-19 12:41:54 -05:00
sys.exit(1)
version = args[0]
release = args[1]
if not os.path.exists('librewolf-{}-{}'.format(version, release) + '/configure.py'):
2021-11-19 12:41:54 -05:00
sys.stderr.write('error: folder doesn\'t look like a Firefox folder.')
sys.exit(1)
librewolf_patches()
sys.exit(0) # ensure 0 exit code