Makefile.gbuild | 12 - bin/update/config.py | 29 ---- bin/update/create_build_config.py | 10 - bin/update/create_full_mar.py | 19 +-- bin/update/create_full_mar_for_languages.py | 15 +- bin/update/create_partial_update.py | 29 ++-- bin/update/get_update_channel.py | 25 ---- bin/update/signing.py | 4 bin/update/upload_builds.py | 7 - config_host.mk.in | 8 + configure.ac | 123 ++++++++++++++++++-- distro-configs/Jenkins/LibreOfficeLinuxUpdater.conf | 8 + instsetoo_native/CustomTarget_setup.mk | 2 onlineupdate/CustomTarget_generated.mk | 18 ++ solenv/bin/modules/installer/scriptitems.pm | 20 --- 15 files changed, 186 insertions(+), 143 deletions(-)
New commits: commit 189d827b996438ae92ec85ba63a6ccc8da2b54b0 Author: Stephan Bergmann <[email protected]> AuthorDate: Tue Dec 12 14:25:52 2023 +0100 Commit: Stephan Bergmann <[email protected]> CommitDate: Tue Dec 12 20:43:57 2023 +0100 Split --with-update-config=... into many --with-online-update-mar-...=... ...and allow each of them to be left off, for debug purposes, even if that may render the resulting --enable-online-update-mar feature non-functional. This change tracked each item that was potentially read from the --with-update-config ini file, and turned each of them into a new --with-online-update-mar-... option. The only exception and remaining TODO is bin/update/upload_build_config.py (called from Makefile.gbuild). distro-configs/Jenkins/LibreOfficeLinuxUpdater.conf (which might well be dead) set --with-update-config=~/updater.ini with an ini file of unknown content. So that no items are silently missing if we ever resurrect that distro-config, I set all of the new options to =TODO there for now. Change-Id: I17a13e0d190a868436bac10c1b0a6675d8c704c0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160622 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <[email protected]> diff --git a/Makefile.gbuild b/Makefile.gbuild index 88279b16c7ff..77100c07be3e 100644 --- a/Makefile.gbuild +++ b/Makefile.gbuild @@ -41,9 +41,9 @@ create-update-info: rm -rf $(MAR_DIR) || true rm -rf $(UPDATE_DIR) || true mkdir -p $(MAR_DIR)/language - MAR=$(INSTDIR)/program/mar $(SRCDIR)/bin/update/create_full_mar.py "$(PRODUCTNAME)" "$(WORKDIR)" "$(MAR_NAME_PREFIX)" "$(UPDATE_CONFIG)" + MAR=$(INSTDIR)/program/mar $(SRCDIR)/bin/update/create_full_mar.py "$(PRODUCTNAME)" "$(WORKDIR)" "$(MAR_NAME_PREFIX)" "$(ONLINEUPDATE_MAR_CERTIFICATEPATH)" "$(ONLINEUPDATE_MAR_CERTIFICATENAME)" "$(ONLINEUPDATE_MAR_BASEURL)" $(if $(filter WNT,$(OS)),, \ - MAR=$(INSTDIR)/program/mar $(SRCDIR)/bin/update/create_full_mar_for_languages.py "$(PRODUCTNAME)" "$(WORKDIR)" "$(MAR_NAME_PREFIX)" "$(UPDATE_CONFIG)" \ + MAR=$(INSTDIR)/program/mar $(SRCDIR)/bin/update/create_full_mar_for_languages.py "$(PRODUCTNAME)" "$(WORKDIR)" "$(MAR_NAME_PREFIX)" "$(ONLINEUPDATE_MAR_CERTIFICATEPATH)" "$(ONLINEUPDATE_MAR_CERTIFICATENAME)" "$(ONLINEUPDATE_MAR_BASEURL)" \ ) upload-update-info: @@ -51,16 +51,16 @@ upload-update-info: $(eval PLATFORM := $(RTL_OS)_$(RTL_ARCH)) $(eval UPDATE_DIR := $(WORKDIR)/update-info) $(eval VERSION := $(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)$(LIBO_VERSION_SUFFIX)$(LIBO_VERSION_SUFFIX_SUFFIX)) - MAR=$(INSTDIR)/program/mar $(SRCDIR)/bin/update/create_build_config.py "$(PRODUCTNAME)" "$(VERSION)" "$(BUILDID)" "$(PLATFORM)" "$(UPDATE_DIR)" "$(UPDATE_CONFIG)" - MAR=$(INSTDIR)/program/mar $(SRCDIR)/bin/update/upload_builds.py "$(PRODUCTNAME)" "$(BUILDID)" "$(PLATFORM)" "$(UPDATE_DIR)" "$(UPDATE_CONFIG)" - MAR=$(INSTDIR)/program/mar $(SRCDIR)/bin/update/upload_build_config.py "$(UPDATE_DIR)" "$(UPDATE_CONFIG)" + MAR=$(INSTDIR)/program/mar $(SRCDIR)/bin/update/create_build_config.py "$(PRODUCTNAME)" "$(VERSION)" "$(BUILDID)" "$(PLATFORM)" "$(UPDATE_DIR)" "$(ONLINEUPDATE_MAR_CHANNEL)" + MAR=$(INSTDIR)/program/mar $(SRCDIR)/bin/update/upload_builds.py "$(PRODUCTNAME)" "$(BUILDID)" "$(PLATFORM)" "$(UPDATE_DIR)" "$(ONLINEUPDATE_MAR_UPLOADURL)" "$(ONLINEUPDATE_MAR_CHANNEL)" + MAR=$(INSTDIR)/program/mar $(SRCDIR)/bin/update/upload_build_config.py "$(UPDATE_DIR)" TODO create-partial-info: $(eval BUILDID := $(shell git -C $(SRCDIR) log -1 --format=%H)) $(eval VERSION := $(LIBO_VERSION_MAJOR).$(LIBO_VERSION_MINOR).$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)$(LIBO_VERSION_SUFFIX)$(LIBO_VERSION_SUFFIX_SUFFIX)) $(eval PLATFORM := $(RTL_OS)_$(RTL_ARCH)) $(eval MAR_NAME_PREFIX := $(PRODUCTNAME)_$(VERSION)_$(PLATFORM)_$(BUILDID)) - MBSDIFF=$(WORKDIR)/LinkTarget/Executable/mbsdiff MAR=$(INSTDIR)/program/mar $(SRCDIR)/bin/update/create_partial_update.py "$(WORKDIR)" "$(MAR_NAME_PREFIX)" "$(UPDATE_CONFIG)" "$(PLATFORM)" "$(BUILDID)" + MBSDIFF=$(WORKDIR)/LinkTarget/Executable/mbsdiff MAR=$(INSTDIR)/program/mar $(SRCDIR)/bin/update/create_partial_update.py "$(WORKDIR)" "$(MAR_NAME_PREFIX)" "$(ONLINEUPDATE_MAR_SERVERURL)" "$(ONLINEUPDATE_MAR_CHANNEL)" "$(ONLINEUPDATE_MAR_CERTIFICATEPATH)" "$(ONLINEUPDATE_MAR_CERTIFICATENAME)" "$(ONLINEUPDATE_MAR_BASEURL)" "$(PLATFORM)" "$(BUILDID)" # also possible to bypass the dependencies/the gbuild processing by just running # LD_LIBRARY_PATH=instdir/program make cmd cmd='ALL_LANGS="$(ALL_LANGS)" workdir/LinkTarget/Executable/pocheck' diff --git a/bin/update/config.py b/bin/update/config.py deleted file mode 100644 index 25857bde2e9a..000000000000 --- a/bin/update/config.py +++ /dev/null @@ -1,29 +0,0 @@ -import configparser -import os - - -class Config(object): - - def __init__(self): - self.certificate_path = None - self.certificate_name = None - self.channel = None - self.base_url = None - self.upload_url = None - self.server_url = None - - -def parse_config(config_file): - config = configparser.ConfigParser() - config.read(os.path.expanduser(config_file)) - - data = Config() - updater_data = config['Updater'] - data.base_url = updater_data['base-url'] - data.certificate_name = updater_data['certificate-name'] - data.certificate_path = updater_data['certificate-path'] - data.channel = updater_data['channel'] - data.upload_url = updater_data['upload-url'] - data.server_url = updater_data["ServerURL"] - - return data diff --git a/bin/update/create_build_config.py b/bin/update/create_build_config.py index a8eb605997e6..de39b645ce8e 100755 --- a/bin/update/create_build_config.py +++ b/bin/update/create_build_config.py @@ -4,8 +4,6 @@ import json import sys import os -from config import parse_config - from tools import replace_variables_in_string @@ -29,15 +27,13 @@ def update_all_url_entries(data, **kwargs): def main(argv): if len(argv) < 7: - print("Usage: create_build_config.py $PRODUCTNAME $VERSION $BUILDID $PLATFORM $TARGETDIR $UPDATE_CONFIG") + print("Usage: create_build_config.py $PRODUCTNAME $VERSION $BUILDID $PLATFORM $TARGETDIR $CHANNEL") sys.exit(1) - config = parse_config(argv[6]) - data = {'productName': argv[1], 'version': argv[2], 'buildNumber': argv[3], - 'updateChannel': config.channel, + 'updateChannel': argv[6], 'platform': argv[4] } @@ -53,7 +49,7 @@ def main(argv): extra_data = json.load(f) data.update(extra_data) - update_all_url_entries(data, channel=config.channel, platform=argv[4], buildid=argv[3], version=argv[2]) + update_all_url_entries(data, channel=argv[6], platform=argv[4], buildid=argv[3], version=argv[2]) with open(os.path.join(argv[5], "build_config.json"), "w") as f: json.dump(data, f, indent=4) diff --git a/bin/update/create_full_mar.py b/bin/update/create_full_mar.py index 58fd7fbef170..c0d315920ec7 100755 --- a/bin/update/create_full_mar.py +++ b/bin/update/create_full_mar.py @@ -7,7 +7,6 @@ import json import argparse from tools import uncompress_file_to_dir, get_file_info, make_complete_mar_name -from config import parse_config from signing import sign_mar_file from path import UpdaterPath, convert_to_unix, convert_to_native @@ -19,26 +18,24 @@ def main(): parser.add_argument('product_name') parser.add_argument('workdir') parser.add_argument('filename_prefix') - parser.add_argument('update_config') + parser.add_argument('certificate_path') + parser.add_argument('certificate_name') + parser.add_argument('base_url') args = parser.parse_args() - update_config = args.update_config + certificate_path = args.certificate_path + certificate_name = args.certificate_name + base_url = args.base_url filename_prefix = args.filename_prefix workdir = args.workdir product_name = args.product_name - if len(update_config) == 0: - print("missing update config") - sys.exit(1) - update_path = UpdaterPath(workdir) update_path.ensure_dir_exist() target_dir = update_path.get_update_dir() temp_dir = update_path.get_current_build_dir() - config = parse_config(update_config) - tar_dir = os.path.join(update_path.get_workdir(), "installation", product_name, "archive", "install", "en-US") tar_file = os.path.join(tar_dir, os.listdir(tar_dir)[0]) @@ -48,9 +45,9 @@ def main(): path = os.path.join(current_dir_path, 'make_full_update.sh') subprocess.call([path, convert_to_native(mar_file), convert_to_native(uncompress_dir)]) - sign_mar_file(target_dir, config, mar_file, filename_prefix) + sign_mar_file(target_dir, certificate_path, certificate_name, mar_file, filename_prefix) - file_info = {'complete': get_file_info(mar_file, config.base_url)} + file_info = {'complete': get_file_info(mar_file, base_url)} with open(os.path.join(target_dir, 'complete_info.json'), "w") as complete_info_file: json.dump(file_info, complete_info_file, indent=4) diff --git a/bin/update/create_full_mar_for_languages.py b/bin/update/create_full_mar_for_languages.py index 610bbc061003..37d52e77b3ac 100755 --- a/bin/update/create_full_mar_for_languages.py +++ b/bin/update/create_full_mar_for_languages.py @@ -7,7 +7,6 @@ import json from tools import uncompress_file_to_dir, get_file_info -from config import parse_config from path import UpdaterPath from signing import sign_mar_file @@ -27,12 +26,14 @@ def create_lang_infos(mar_file_name, language, url): def main(): - if len(sys.argv) < 5: + if len(sys.argv) < 7: print( - "Usage: create_full_mar_for_languages.py $PRODUCTNAME $WORKDIR $TARGETDIR $TEMPDIR $FILENAMEPREFIX $UPDATE_CONFIG") + "Usage: create_full_mar_for_languages.py $PRODUCTNAME $WORKDIR $TARGETDIR $TEMPDIR $FILENAMEPREFIX $CERTIFICATEPATH $CERTIFICATENAME $BASEURL") sys.exit(1) - update_config = sys.argv[4] + certificate_path = sys.argv[4] + certificate_name = sys.argv[5] + base_url = sys.argv[6] filename_prefix = sys.argv[3] workdir = sys.argv[2] product_name = sys.argv[1] @@ -41,8 +42,6 @@ def main(): target_dir = updater_path.get_update_dir() temp_dir = updater_path.get_language_dir() - config = parse_config(update_config) - language_pack_dir = os.path.join(workdir, "installation", product_name + "_languagepack", "archive", "install") language_packs = os.listdir(language_pack_dir) lang_infos = [] @@ -59,9 +58,9 @@ def main(): subprocess.call([os.path.join(current_dir_path, 'make_full_update.sh'), mar_file_name, directory]) - sign_mar_file(target_dir, config, mar_file_name, filename_prefix) + sign_mar_file(target_dir, certificate_path, certificate_name, mar_file_name, filename_prefix) - lang_infos.append(create_lang_infos(mar_file_name, language, config.base_url)) + lang_infos.append(create_lang_infos(mar_file_name, language, base_url)) with open(os.path.join(target_dir, "complete_lang_info.json"), "w") as language_info_file: json.dump({'languages': lang_infos}, language_info_file, indent=4) diff --git a/bin/update/create_partial_update.py b/bin/update/create_partial_update.py index 83ac3a35fae5..2730c4765f14 100755 --- a/bin/update/create_partial_update.py +++ b/bin/update/create_partial_update.py @@ -6,7 +6,6 @@ import sys import requests -from config import parse_config from path import UpdaterPath, mkdir_p, convert_to_unix, convert_to_native from signing import sign_mar_file from tools import get_file_info, get_hash @@ -54,9 +53,9 @@ def handle_language(lang_entries, filedir): return langs -def download_mar_for_update_channel_and_platform(config, platform, temp_dir): - base_url = config.server_url + "update/partial-targets/1/" - url = base_url + platform + "/" + config.channel +def download_mar_for_update_channel_and_platform(server_url, channel, platform, temp_dir): + base_url = server_url + "update/partial-targets/1/" + url = base_url + platform + "/" + channel r = requests.get(url) if r.status_code != 200: print(r.content) @@ -110,9 +109,13 @@ def main(): updater_path.ensure_dir_exist() mar_name_prefix = sys.argv[2] - update_config = sys.argv[3] - platform = sys.argv[4] - build_id = sys.argv[5] + server_url = sys.argv[3] + channel = sys.argv[4] + certificate_path = sys.argv[5] + certificate_name = sys.argv[6] + base_url = sys.argv[7] + platform = sys.argv[8] + build_id = sys.argv[9] current_build_path = updater_path.get_current_build_dir() mar_dir = updater_path.get_mar_dir() @@ -123,9 +126,7 @@ def main(): if sys.platform == "cygwin": current_build_path = add_single_dir(current_build_path) - config = parse_config(update_config) - - updates = download_mar_for_update_channel_and_platform(config, platform, temp_dir) + updates = download_mar_for_update_channel_and_platform(server_url, channel, platform, temp_dir) data = {"partials": []} @@ -134,9 +135,9 @@ def main(): mar_file = os.path.join(update_dir, file_name) subprocess.call([os.path.join(current_dir_path, 'make_incremental_update.sh'), convert_to_native(mar_file), convert_to_native(update["complete"]), convert_to_native(current_build_path)]) - sign_mar_file(update_dir, config, mar_file, mar_name_prefix) + sign_mar_file(update_dir, certificate_path, certificate_name, mar_file, mar_name_prefix) - partial_info = {"file": get_file_info(mar_file, config.base_url), "from": build, "to": build_id, + partial_info = {"file": get_file_info(mar_file, base_url), "from": build, "to": build_id, "languages": {}} # on Windows we don't use language packs @@ -153,10 +154,10 @@ def main(): subprocess.call( [os.path.join(current_dir_path, 'make_incremental_update.sh'), convert_to_native(lang_mar_file), convert_to_native(lang_info), convert_to_native(language_dir)]) - sign_mar_file(update_dir, config, lang_mar_file, mar_name_prefix) + sign_mar_file(update_dir, certificate_path, certificate_name, lang_mar_file, mar_name_prefix) # add the partial language info - partial_info["languages"][lang] = get_file_info(lang_mar_file, config.base_url) + partial_info["languages"][lang] = get_file_info(lang_mar_file, base_url) data["partials"].append(partial_info) diff --git a/bin/update/get_update_channel.py b/bin/update/get_update_channel.py deleted file mode 100755 index 4215f8054b10..000000000000 --- a/bin/update/get_update_channel.py +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/python3 -# -*- Mode: python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -# -# 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/. -# - -import sys -from config import parse_config - - -def main(): - if len(sys.argv) < 2: - sys.exit(1) - - update_config = sys.argv[1] - config = parse_config(update_config) - print(config.channel) - - -if __name__ == "__main__": - main() - -# vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/bin/update/signing.py b/bin/update/signing.py index 65b482fe31aa..e8546dc83b9e 100644 --- a/bin/update/signing.py +++ b/bin/update/signing.py @@ -5,11 +5,11 @@ import subprocess import path -def sign_mar_file(target_dir, config, mar_file, filename_prefix): +def sign_mar_file(target_dir, certificate_path, certificate_name, mar_file, filename_prefix): signed_mar_file = make_complete_mar_name(target_dir, filename_prefix + '_signed') mar_executable = os.environ.get('MAR', 'mar') subprocess.check_call([mar_executable, '-C', path.convert_to_native(target_dir), '-d', - path.convert_to_native(config.certificate_path), '-n', config.certificate_name, '-s', + path.convert_to_native(certificate_path), '-n', certificate_name, '-s', path.convert_to_native(mar_file), path.convert_to_native(signed_mar_file)]) os.rename(signed_mar_file, mar_file) diff --git a/bin/update/upload_builds.py b/bin/update/upload_builds.py index 1be1b2fe837e..97a2f284848a 100755 --- a/bin/update/upload_builds.py +++ b/bin/update/upload_builds.py @@ -4,7 +4,6 @@ import sys import os import subprocess -from config import parse_config from path import convert_to_unix from tools import replace_variables_in_string @@ -15,10 +14,10 @@ def main(): buildid = sys.argv[2] platform = sys.argv[3] update_dir = sys.argv[4] - update_config = sys.argv[5] + upload_url_arg = sys.argv[5] + channel = sys.argv[6] - config = parse_config(update_config) - upload_url = replace_variables_in_string(config.upload_url, channel=config.channel, buildid=buildid, + upload_url = replace_variables_in_string(upload_url_arg, channel=channel, buildid=buildid, platform=platform) target_url, target_dir = upload_url.split(':') diff --git a/config_host.mk.in b/config_host.mk.in index cc8f5506b6df..97a2b0bbbb40 100644 --- a/config_host.mk.in +++ b/config_host.mk.in @@ -510,6 +510,13 @@ export ODFGEN_LIBS=$(gb_SPACE)@ODFGEN_LIBS@ export ODFVALIDATOR=@ODFVALIDATOR@ export OFFICEOTRON=@OFFICEOTRON@ export BFFVALIDATOR=@BFFVALIDATOR@ +export ONLINEUPDATE_MAR_BASEURL=@ONLINEUPDATE_MAR_BASEURL@ +export ONLINEUPDATE_MAR_CERTIFICATEDER=@ONLINEUPDATE_MAR_CERTIFICATEDER@ +export ONLINEUPDATE_MAR_CERTIFICATENAME=@ONLINEUPDATE_MAR_CERTIFICATENAME@ +export ONLINEUPDATE_MAR_CERTIFICATEPATH=@ONLINEUPDATE_MAR_CERTIFICATEPATH@ +export ONLINEUPDATE_MAR_CHANNEL=@ONLINEUPDATE_MAR_CHANNEL@ +export ONLINEUPDATE_MAR_SERVERURL=@ONLINEUPDATE_MAR_SERVERURL@ +export ONLINEUPDATE_MAR_UPLOADURL=@ONLINEUPDATE_MAR_UPLOADURL@ export OOO_JUNIT_JAR=@OOO_JUNIT_JAR@ export OOO_VENDOR=@OOO_VENDOR@ export OPENSSL_CFLAGS=$(gb_SPACE)@OPENSSL_CFLAGS@ @@ -717,7 +724,6 @@ export UNIX_DLAPI_LIBS=@UNIX_DLAPI_LIBS@ export USE_HEADLESS_CODE=@USE_HEADLESS_CODE@ export USE_LD=@USE_LD@ export USE_LIBRARY_BIN_TAR=@USE_LIBRARY_BIN_TAR@ -export UPDATE_CONFIG=@UPDATE_CONFIG@ export UUIDGEN=@UUIDGEN@ export VALGRIND_CFLAGS=$(gb_SPACE)@VALGRIND_CFLAGS@ export VCL_PLUGIN_INFO=@VCL_PLUGIN_INFO@ diff --git a/configure.ac b/configure.ac index 455686cf20ce..80ec8eca5be3 100644 --- a/configure.ac +++ b/configure.ac @@ -1862,13 +1862,57 @@ libo_FUZZ_ARG_ENABLE(online-update, libo_FUZZ_ARG_ENABLE(online-update-mar, AS_HELP_STRING([--enable-online-update-mar], [Enable the experimental Mozilla-like online update service that will - check for new versions of LibreOffice. Disabled by default. Requires - --with-update-config to be set.]), + check for new versions of LibreOffice. Disabled by default.]), ,) -AC_ARG_WITH(update-config, - AS_HELP_STRING([--with-update-config=/tmp/update.ini], - [Path to the update config ini file])) +libo_FUZZ_ARG_WITH(online-update-mar-baseurl, + AS_HELP_STRING([--with-online-update-mar-baseurl=...], + [Set the base URL value for --enable-online-update-mar. + (Can be left off for debug purposes, even if that may render the feature + non-functional.)]), +,) + +libo_FUZZ_ARG_WITH(online-update-mar-certificateder, + AS_HELP_STRING([--with-online-update-mar-certificateder=...], + [Set the certificate DER value for --enable-online-update-mar. + (Can be left off for debug purposes, even if that may render the feature + non-functional.)]), +,) + +libo_FUZZ_ARG_WITH(online-update-mar-certificatename, + AS_HELP_STRING([--with-online-update-mar-certificatename=...], + [Set the certificate name value for --enable-online-update-mar. + (Can be left off for debug purposes, even if that may render the feature + non-functional.)]), +,) + +libo_FUZZ_ARG_WITH(online-update-mar-certificatepath, + AS_HELP_STRING([--with-online-update-mar-certificatepath=...], + [Set the certificate path value for --enable-online-update-mar. + (Can be left off for debug purposes, even if that may render the feature + non-functional.)]), +,) + +libo_FUZZ_ARG_WITH(online-update-mar-channel, + AS_HELP_STRING([--with-online-update-mar-channel=...], + [Set the channel value for --enable-online-update-mar. + (Can be left off for debug purposes, even if that may render the feature + non-functional.)]), +,) + +libo_FUZZ_ARG_WITH(online-update-mar-serverurl, + AS_HELP_STRING([--with-online-update-mar-serverurl=...], + [Set the server URL value for --enable-online-update-mar. + (Can be left off for debug purposes, even if that may render the feature + non-functional.)]), +,) + +libo_FUZZ_ARG_WITH(online-update-mar-uploadurl, + AS_HELP_STRING([--with-online-update-mar-uploadurl=...], + [Set the upload URL value for --enable-online-update-mar. + (Can be left off for debug purposes, even if that may render the feature + non-functional.)]), +,) libo_FUZZ_ARG_ENABLE(extension-update, AS_HELP_STRING([--disable-extension-update], @@ -13601,20 +13645,77 @@ dnl Test whether to enable mar online update service dnl =================================================================== AC_MSG_CHECKING([whether to enable mar online update]) ENABLE_ONLINE_UPDATE_MAR= -UPDATE_CONFIG= if test "$enable_online_update_mar" = yes; then AC_MSG_RESULT([yes]) ENABLE_ONLINE_UPDATE_MAR="TRUE" - if test "$with_update_config" = ""; then - AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config]) - fi - UPDATE_CONFIG="$with_update_config" AC_DEFINE(HAVE_FEATURE_UPDATE_MAR) else AC_MSG_RESULT([no]) fi AC_SUBST(ENABLE_ONLINE_UPDATE_MAR) -AC_SUBST(UPDATE_CONFIG) + +AC_MSG_CHECKING([for mar online update baseurl]) +ONLINEUPDATE_MAR_BASEURL=$with_online_update_mar_baseurl +if test -n "$ONLINEUPDATE_MAR_BASEURL"; then + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi +AC_SUBST(ONLINEUPDATE_MAR_BASEURL) + +AC_MSG_CHECKING([for mar online update certificateder]) +ONLINEUPDATE_MAR_CERTIFICATEDER=$with_online_update_mar_certificateder +if test -n "$ONLINEUPDATE_MAR_CERTIFICATEDER"; then + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi +AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATEDER) + +AC_MSG_CHECKING([for mar online update certificatename]) +ONLINEUPDATE_MAR_CERTIFICATENAME=$with_online_update_mar_certificatename +if test -n "$ONLINEUPDATE_MAR_CERTIFICATENAME"; then + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi +AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATENAME) + +AC_MSG_CHECKING([for mar online update certificatepath]) +ONLINEUPDATE_MAR_CERTIFICATEPATH=$with_online_update_mar_certificatepath +if test -n "$ONLINEUPDATE_MAR_CERTIFICATEPATH"; then + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi +AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATEPATH) + +AC_MSG_CHECKING([for mar online update channel]) +ONLINEUPDATE_MAR_CHANNEL=$with_online_update_mar_channel +if test -n "$ONLINEUPDATE_MAR_CHANNEL"; then + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi +AC_SUBST(ONLINEUPDATE_MAR_CHANNEL) + +AC_MSG_CHECKING([for mar online update serverurl]) +ONLINEUPDATE_MAR_SERVERURL=$with_online_update_mar_serverurl +if test -n "$ONLINEUPDATE_MAR_SERVERURL"; then + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi +AC_SUBST(ONLINEUPDATE_MAR_SERVERURL) + +AC_MSG_CHECKING([for mar online update uploadurl]) +ONLINEUPDATE_MAR_UPLOADURL=$with_online_update_mar_uploadurl +if test -n "$ONLINEUPDATE_MAR_UPLOADURL"; then + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi +AC_SUBST(ONLINEUPDATE_MAR_UPLOADURL) PRIVACY_POLICY_URL="$with_privacy_policy_url" diff --git a/distro-configs/Jenkins/LibreOfficeLinuxUpdater.conf b/distro-configs/Jenkins/LibreOfficeLinuxUpdater.conf index e2c510f509f8..d198cdb1b427 100644 --- a/distro-configs/Jenkins/LibreOfficeLinuxUpdater.conf +++ b/distro-configs/Jenkins/LibreOfficeLinuxUpdater.conf @@ -32,6 +32,12 @@ --disable-dconf --with-lang=de es fr ar zh-CN --with-package-format=archive ---with-update-config=~/updater.ini +--with-online-update-mar-baseurl=TODO +--with-online-update-mar-certificateder=TODO +--with-online-update-mar-certificatename=TODO +--with-online-update-mar-certificatepath=TODO +--with-online-update-mar-channel=TODO +--with-online-update-mar-serverurl=TODO +--with-online-update-mar-uploadurl=TODO --with-jdk-home=/etc/alternatives/java_sdk_17 --enable-odk diff --git a/instsetoo_native/CustomTarget_setup.mk b/instsetoo_native/CustomTarget_setup.mk index 92fb00b14299..2861155c8d31 100644 --- a/instsetoo_native/CustomTarget_setup.mk +++ b/instsetoo_native/CustomTarget_setup.mk @@ -182,7 +182,7 @@ define instsetoo_native_genversionini AllLanguages=$(if $(gb_WITH_LANG),$(gb_WITH_LANG),en-US) buildid=$(shell cd $(SRCDIR) && git log -1 --format=%H) ExtensionUpdateURL=https://updateexte.libreoffice.org/ExtensionUpdateService/check.Update -UpdateChannel=$(if $(ENABLE_ONLINE_UPDATE_MAR),$(shell cd $(SRCDIR) && bin/update/get_update_channel.py $(UPDATE_CONFIG))) +UpdateChannel=$(if $(ENABLE_ONLINE_UPDATE_MAR),$(ONLINEUPDATE_MAR_CHANNEL)) ReferenceOOoMajorMinor=4.1 UpdateID=$(PRODUCTNAME)_$(LIBO_VERSION_MAJOR)_en-US UpdateURL=$(if $(ENABLE_ONLINE_UPDATE),https://update.libreoffice.org/check.php$(if $(filter-out WNT,$(OS)),?pkgfmt=$(PKGFORMAT))) diff --git a/onlineupdate/CustomTarget_generated.mk b/onlineupdate/CustomTarget_generated.mk index 266b2db98a97..0673bfbcb832 100644 --- a/onlineupdate/CustomTarget_generated.mk +++ b/onlineupdate/CustomTarget_generated.mk @@ -11,19 +11,29 @@ $(eval $(call gb_CustomTarget_CustomTarget,onlineupdate/generated)) onlineupdate_INC := $(call gb_CustomTarget_get_workdir,onlineupdate/generated)/onlineupdate +# For debug purposes, ONLINEUPDATE_MAR_CERTIFICATEDER can be empty, but gen_cert_header.py always +# expects an existing certificate-der=... pathname, so as a hack fall back to the generated +# update.ini itself as the pathanme of the certfiicate DER file (though that will cause +# gen_cert_header.py to generate nonsense data, of course): +$(call gb_CustomTarget_get_workdir,onlineupdate/generated)/update.ini: | \ + $(call gb_CustomTarget_get_workdir,onlineupdate/generated)/.dir + printf '[Updater]\ncertificate-der=%s\n' '$(or $(ONLINEUPDATE_MAR_CERTIFICATEDER),$@)' > $@ + $(onlineupdate_INC)/primaryCert.h : \ $(SRCDIR)/onlineupdate/source/update/updater/gen_cert_header.py \ - $(call gb_ExternalExecutable_get_dependencies,python) + $(call gb_ExternalExecutable_get_dependencies,python) \ + $(call gb_CustomTarget_get_workdir,onlineupdate/generated)/update.ini $(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),build,,1) mkdir -p $(dir $@) - $(call gb_ExternalExecutable_get_command,python) $(SRCDIR)/onlineupdate/source/update/updater/gen_cert_header.py "primaryCertData" $(UPDATE_CONFIG) > $(onlineupdate_INC)/primaryCert.h #"$(UPDATE_CONFIG)" + $(call gb_ExternalExecutable_get_command,python) $(SRCDIR)/onlineupdate/source/update/updater/gen_cert_header.py "primaryCertData" $(call gb_CustomTarget_get_workdir,onlineupdate/generated)/update.ini > $(onlineupdate_INC)/primaryCert.h $(onlineupdate_INC)/secondaryCert.h : \ $(SRCDIR)/onlineupdate/source/update/updater/gen_cert_header.py \ - $(call gb_ExternalExecutable_get_dependencies,python) + $(call gb_ExternalExecutable_get_dependencies,python) \ + $(call gb_CustomTarget_get_workdir,onlineupdate/generated)/update.ini $(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),build,,1) mkdir -p $(dir $@) - $(call gb_ExternalExecutable_get_command,python) $(SRCDIR)/onlineupdate/source/update/updater/gen_cert_header.py "secondaryCertData" $(UPDATE_CONFIG) > $(onlineupdate_INC)/secondaryCert.h #"$(UPDATE_CONFIG)" + $(call gb_ExternalExecutable_get_command,python) $(SRCDIR)/onlineupdate/source/update/updater/gen_cert_header.py "secondaryCertData" $(call gb_CustomTarget_get_workdir,onlineupdate/generated)/update.ini > $(onlineupdate_INC)/secondaryCert.h $(call gb_CustomTarget_get_target,onlineupdate/generated) : \ $(onlineupdate_INC)/primaryCert.h \ diff --git a/solenv/bin/modules/installer/scriptitems.pm b/solenv/bin/modules/installer/scriptitems.pm index 54f3618d1078..df76cb6704c1 100644 --- a/solenv/bin/modules/installer/scriptitems.pm +++ b/solenv/bin/modules/installer/scriptitems.pm @@ -655,25 +655,7 @@ sub replace_setup_variables my $updateid = $productname . "_" . $libo_version_major . "_" . $$languagestringref; $updateid =~ s/ /_/g; - my $updatechannel = ""; - if ( $ENV{'UPDATE_CONFIG'} && $ENV{'UPDATE_CONFIG'} ne "") - { - open(CONFIG, glob($ENV{'UPDATE_CONFIG'})); - while (<CONFIG>) - { - chomp; - if (/^s*(\S+)=(\S+)$/) - { - my $key = $1; - my $val = $2; - if ($key eq "channel") - { - $updatechannel = $val; - } - } - } - close(CONFIG); - } + my $updatechannel = $ENV{'ONLINEUPDATE_MAR_CHANNEL'}; for ( my $i = 0; $i <= $#{$itemsarrayref}; $i++ ) {
