Makefile.fetch | 1 RepositoryExternal.mk | 33 ++ config_host.mk.in | 3 configure.ac | 24 + download.lst | 1 external/Module_external.mk | 1 onlineupdate/Executable_updater.mk | 21 - onlineupdate/README | 4 onlineupdate/source/libmar/sign/moz.build | 24 - onlineupdate/source/libmar/src/moz.build | 30 - onlineupdate/source/libmar/tool/moz.build | 58 --- onlineupdate/source/libmar/verify/moz.build | 32 -- onlineupdate/source/update/common/moz.build | 29 - onlineupdate/source/update/src/moz.build | 30 - onlineupdate/source/update/updater/automounter_gonk.cxx | 251 ---------------- onlineupdate/source/update/updater/automounter_gonk.h | 48 --- onlineupdate/source/update/updater/moz.build | 13 onlineupdate/source/update/updater/updater.cxx | 2 18 files changed, 67 insertions(+), 538 deletions(-)
New commits: commit 025952f52767fb3508a6725468fe4b1e6ce4c9b1 Author: Jan Holesovsky <ke...@collabora.com> Date: Fri Jul 3 13:46:38 2015 +0200 online update: Make the 'updater' build & link at least on Linux. Works with the non-system bzip2; the --with-system case might still need some love - but then again, distros want to have the online update switched off anyway... Change-Id: I26a27aec07a8f1aac22a4d14a38fb5b833550ea7 diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk index 0592dea..a556c3d 100644 --- a/RepositoryExternal.mk +++ b/RepositoryExternal.mk @@ -4131,16 +4131,19 @@ $(call gb_LinkTarget_set_include,$(1),\ $(call gb_LinkTarget_add_libs,$(1),$(BZIP2_LIBS)) endef + gb_ExternalProject__use_bzip2 := else # !SYSTEM_BZIP2 define gb_LinkTarget__use_bzip2 -$(call gb_LinkTarget_use_external_project,$(1),bzip2) $(call gb_LinkTarget_set_include,$(1),\ -I$(call gb_UnpackedTarball_get_dir,bzip2) \ $$(INCLUDE) \ ) +$(call gb_LinkTarget_add_libs,$(1),\ + -L$(call gb_UnpackedTarball_get_dir,bzip2) -lbz2 \ +) endef define gb_ExternalProject__use_bzip2 diff --git a/onlineupdate/Executable_updater.mk b/onlineupdate/Executable_updater.mk index 30713c4..a4c4f95 100644 --- a/onlineupdate/Executable_updater.mk +++ b/onlineupdate/Executable_updater.mk @@ -26,22 +26,6 @@ $(eval $(call gb_Executable_add_libs,updater,\ -lICE \ )) -ifeq ($(OS),MACOSX) -$(eval $(call gb_Executable_set_include,updater,\ - -lgtk \ -)) -$(eval $(call gb_Exectuable_add_libs,updater,\ - -lpthread \ -)) -else ifeq ($(OS),LINUX) -$(eval $(call gb_Executable_set_include,updater,\ - -lgtk \ -)) -$(eval $(call gb_Exectuable_add_libs,updater,\ - -lpthread \ -)) -endif - $(eval $(call gb_Executable_add_cxxflags,updater,\ $$(GTK3_CFLAGS) \ )) diff --git a/onlineupdate/source/update/updater/updater.cxx b/onlineupdate/source/update/updater/updater.cxx index 8de9cc1..998a310 100644 --- a/onlineupdate/source/update/updater/updater.cxx +++ b/onlineupdate/source/update/updater/updater.cxx @@ -143,7 +143,7 @@ static bool sUseHardLinks = true; // declare it here to avoid including that entire header file. #define BZ2_CRC32TABLE_UNDECLARED -#if MOZ_IS_GCC +#if defined(HAVE_GCC_VISIBILITY_FEATURE) extern "C" __attribute__((visibility("default"))) unsigned int BZ2_crc32Table[256]; #undef BZ2_CRC32TABLE_UNDECLARED #elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) commit 7eb863d6b6258f31343d4b0b82038afe5e036bc0 Author: Nathan Yee <ny.nathan....@gmail.com> Date: Fri Jul 3 11:58:27 2015 +0200 online update: Add the bzip2 external. Change-Id: Id7547390c49c0bcf672eb1a9863fc236518bfa49 diff --git a/Makefile.fetch b/Makefile.fetch index 390d3d0..87c8b8a 100644 --- a/Makefile.fetch +++ b/Makefile.fetch @@ -112,6 +112,7 @@ $(WORKDIR)/download: $(BUILDDIR)/config_host.mk $(SRCDIR)/download.lst $(SRCDIR) $(call fetch_Optional,APR,APR_UTIL_TARBALL) \ $(call fetch_Optional,BOOST,BOOST_TARBALL) \ $(call fetch_Optional,BSH,BSH_TARBALL) \ + $(call fetch_Optional,BZIP2,BZIP2_TARBALL) \ $(call fetch_Optional,CAIRO,CAIRO_TARBALL) \ $(call fetch_Optional,CAIRO,PIXMAN_TARBALL) \ $(call fetch_Optional,CDR,CDR_TARBALL) \ diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk index 3ea67b8..0592dea 100644 --- a/RepositoryExternal.mk +++ b/RepositoryExternal.mk @@ -4120,4 +4120,34 @@ endef endif +ifneq ($(ENABLE_ONLINE_UPDATE_MAR),) +ifneq ($(SYSTEM_BZIP2),) + +define gb_LinkTarget__use_bzip2 +$(call gb_LinkTarget_set_include,$(1),\ + $(BZIP2_CFLAGS) \ + $$(INCLUDE) \ +) +$(call gb_LinkTarget_add_libs,$(1),$(BZIP2_LIBS)) + +endef +gb_ExternalProject__use_bzip2 := + +else # !SYSTEM_BZIP2 + +define gb_LinkTarget__use_bzip2 +$(call gb_LinkTarget_use_external_project,$(1),bzip2) +$(call gb_LinkTarget_set_include,$(1),\ + -I$(call gb_UnpackedTarball_get_dir,bzip2) \ + $$(INCLUDE) \ +) +endef + +define gb_ExternalProject__use_bzip2 +$(call gb_ExternalProject_use_external_project,$(1),bzip2) +endef + +endif +endif + # vim: set noet sw=4 ts=4: diff --git a/config_host.mk.in b/config_host.mk.in index 17c2306..1d0702b 100644 --- a/config_host.mk.in +++ b/config_host.mk.in @@ -48,6 +48,8 @@ export BUILD_TYPE=@BUILD_TYPE@ export BUILD_UNOWINREG=@BUILD_UNOWINREG@ export BUILD_VER_STRING=@BUILD_VER_STRING@ export BUILD_X64=@BUILD_X64@ +export BZIP2_CFLAGS=$(gb_SPACE)@BZIP2_CFLAGS@ +export BZIP2_LIBS=$(gb_SPACE)@BZIP2_LIBS@ export CAIRO_CFLAGS=$(gb_SPACE)@CAIRO_CFLAGS@ export CAIRO_LIBS=$(gb_SPACE)@CAIRO_LIBS@ export CC=@CC@ @@ -518,6 +520,7 @@ export SYSTEM_APACHE_COMMONS=@SYSTEM_APACHE_COMMONS@ export SYSTEM_APR=@SYSTEM_APR@ export SYSTEM_BOOST=@SYSTEM_BOOST@ export SYSTEM_BSH=@SYSTEM_BSH@ +export SYSTEM_BZIP2=@SYSTEM_BZIP2@ export SYSTEM_CAIRO=@SYSTEM_CAIRO@ export SYSTEM_CLUCENE=@SYSTEM_CLUCENE@ export SYSTEM_COLLADA2GLTF=@SYSTEM_COLLADA2GLTF@ diff --git a/configure.ac b/configure.ac index 06b2d5e..0325a2f 100644 --- a/configure.ac +++ b/configure.ac @@ -1574,6 +1574,11 @@ AC_ARG_WITH(system-libs, [Use libraries already on system -- enables all --with-system-* flags.]), ,) +AC_ARG_WITH(system-bzip2, + AS_HELP_STRING([--with-system-bzip2], + [Use bzip2 already on system. Used only when --enable-online-update=mar]),, + [with_system_bzip2="$with_system_libs"]) + AC_ARG_WITH(system-headers, AS_HELP_STRING([--with-system-headers], [Use headers already on system -- enables all --with-system-* flags for @@ -11807,6 +11812,25 @@ AC_SUBST(ENABLE_ONLINE_UPDATE) AC_SUBST(ENABLE_ONLINE_UPDATE_MAR) dnl =================================================================== +dnl Test whether we need bzip2 +dnl =================================================================== +SYSTEM_BZIP2= +if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then + AC_MSG_CHECKING([whether to use system bzip2]) + if test "$with_system_bzip2" = yes; then + SYSTEM_BZIP2=TRUE + AC_MSG_RESULT([yes]) + PKG_CHECK_MODULES(BZIP2, bzip2) + else + AC_MSG_RESULT([no]) + BUILD_TYPE="$BUILD_TYPE BZIP2" + fi +fi +AC_SUBST(SYSTEM_BZIP2) +AC_SUBST(BZIP2_CFLAGS) +AC_SUBST(BZIP2_LIBS) + +dnl =================================================================== dnl Test whether to enable extension update dnl =================================================================== AC_MSG_CHECKING([whether to enable extension update]) diff --git a/download.lst b/download.lst index 54ed35b..bf5a5d8 100644 --- a/download.lst +++ b/download.lst @@ -17,6 +17,7 @@ export APR_UTIL_MD5SUM := 71a11d037240b292f824ba1eb537b4e3 export APR_UTIL_TARBALL := apr-util-1.5.3.tar.gz export BOOST_TARBALL := d6eef4b4cacb2183f2bf265a5a03a354-boost_1_55_0.tar.bz2 export BSH_TARBALL := ec1941a74d3ef513c4ce57a9092b74e1-bsh-2.0b5-src.zip +export BZIP2_TARBALL := 00b516f4704d4a7cb50a1d97e6e8e15b-bzip2-1.0.6.tar.gz export CAIRO_TARBALL := f101a9e88b783337b20b2e26dfd26d5f-cairo-1.10.2.tar.gz export CDR_MD5SUM := b33fd0be3befdd1b37777e08ce058bd9 export CDR_TARBALL := libcdr-0.1.1.tar.bz2 diff --git a/external/Module_external.mk b/external/Module_external.mk index 8b4fb6c..51900d5 100644 --- a/external/Module_external.mk +++ b/external/Module_external.mk @@ -25,6 +25,7 @@ $(eval $(call gb_Module_add_moduledirs,external,\ $(call gb_Helper_optional,APR,apr) \ $(call gb_Helper_optional,BOOST,boost) \ $(call gb_Helper_optional,BSH,beanshell) \ + $(call gb_Helper_optional,BZIP2,bzip2) \ $(call gb_Helper_optional,CAIRO,cairo) \ $(call gb_Helper_optional,CDR,libcdr) \ $(call gb_Helper_optional,CLUCENE,clucene) \ diff --git a/onlineupdate/Executable_updater.mk b/onlineupdate/Executable_updater.mk index f8537be..30713c4 100644 --- a/onlineupdate/Executable_updater.mk +++ b/onlineupdate/Executable_updater.mk @@ -50,12 +50,9 @@ $(eval $(call gb_Executable_add_libs,updater,\ $(GTK3_LIBS) \ )) -$(eval $(call gb_Executable_use_libraries,updater,\ - libreofficekitgtk \ -)) - $(eval $(call gb_Executable_use_externals,updater,\ gtk \ + bzip2 \ )) $(eval $(call gb_Executable_add_exception_objects,updater,\ commit ba1d870abf1b12fd4ac4ba353d39d20bc9bb3a0e Author: Nathan Yee <ny.nathan....@gmail.com> Date: Fri Jul 3 11:09:48 2015 +0200 online update: Remove unneeded files. Change-Id: Id69448d893f7492e7321c6c6f84d6cccc9024220 diff --git a/onlineupdate/README b/onlineupdate/README index 74012d4..539e04c 100644 --- a/onlineupdate/README +++ b/onlineupdate/README @@ -3,5 +3,5 @@ Online update implementation based on Mozilla's MAR format + update mechanism Parts of this code are copied from the mozilla repository, and adapted to LibreOffice needs: -firefox/modules/libmar -> online-update/source/libmar -firefox/toolkit/mozapps/update -> online-update/source/update +firefox/modules/libmar -> onlineupdate/source/libmar +firefox/toolkit/mozapps/update -> onlineupdate/source/update diff --git a/onlineupdate/source/libmar/sign/moz.build b/onlineupdate/source/libmar/sign/moz.build deleted file mode 100644 index d7b8d1f..0000000 --- a/onlineupdate/source/libmar/sign/moz.build +++ /dev/null @@ -1,24 +0,0 @@ -# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- -# vim: set filetype=python: -# 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/. - -Library('signmar') - -UNIFIED_SOURCES += [ - 'mar_sign.c', - 'nss_secutil.c', -] - -FORCE_STATIC_LIB = True - -LOCAL_INCLUDES += [ - '../src', - '../verify', -] - -DEFINES['MAR_NSS'] = True - -if CONFIG['OS_ARCH'] == 'WINNT': - USE_STATIC_LIBS = True diff --git a/onlineupdate/source/libmar/src/moz.build b/onlineupdate/source/libmar/src/moz.build deleted file mode 100644 index 2d25e08..0000000 --- a/onlineupdate/source/libmar/src/moz.build +++ /dev/null @@ -1,30 +0,0 @@ -# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- -# vim: set filetype=python: -# 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/. - -EXPORTS += [ - 'mar.h', - 'mar_cmdline.h', -] - -HOST_SOURCES += [ - 'mar_create.c', - 'mar_extract.c', - 'mar_read.c', -] -HostLibrary('hostmar') - -Library('mar') - -UNIFIED_SOURCES += [ - 'mar_create.c', - 'mar_extract.c', - 'mar_read.c', -] - -FORCE_STATIC_LIB = True - -if CONFIG['OS_ARCH'] == 'WINNT': - USE_STATIC_LIBS = True diff --git a/onlineupdate/source/libmar/tool/moz.build b/onlineupdate/source/libmar/tool/moz.build deleted file mode 100644 index 7cb27da..0000000 --- a/onlineupdate/source/libmar/tool/moz.build +++ /dev/null @@ -1,58 +0,0 @@ -# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- -# vim: set filetype=python: -# 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/. - -HOST_SOURCES += [ - 'mar.c', -] - -HostProgram('mar') - -HOST_USE_LIBS += [ - 'hostmar', -] - -if CONFIG['MOZ_ENABLE_SIGNMAR']: - Program('signmar') - - SOURCES += HOST_SOURCES - - USE_LIBS += [ - 'mar', - 'signmar', - 'verifymar', - ] - -for var in ('MAR_CHANNEL_ID', 'MOZ_APP_VERSION'): - DEFINES[var] = '"%s"' % CONFIG[var] - -if CONFIG['MOZ_ENABLE_SIGNMAR']: - USE_LIBS += [ - 'nspr', - 'nss', - ] -else: - DEFINES['NO_SIGN_VERIFY'] = True - -if CONFIG['OS_ARCH'] == 'WINNT': - USE_STATIC_LIBS = True - - OS_LIBS += [ - 'ws2_32', - ] - if CONFIG['MOZ_ENABLE_SIGNMAR']: - OS_LIBS += [ - 'crypt32', - 'advapi32', - ] -elif CONFIG['OS_ARCH'] == 'Darwin': - OS_LIBS += [ - '-framework Security', - ] - -if CONFIG['HOST_OS_ARCH'] == 'WINNT': - HOST_OS_LIBS += [ - 'ws2_32', - ] diff --git a/onlineupdate/source/libmar/verify/moz.build b/onlineupdate/source/libmar/verify/moz.build deleted file mode 100644 index 7a6a1422..0000000 --- a/onlineupdate/source/libmar/verify/moz.build +++ /dev/null @@ -1,32 +0,0 @@ -# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- -# vim: set filetype=python: -# 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/. - -Library('verifymar') - -UNIFIED_SOURCES += [ - 'cryptox.c', - 'mar_verify.c', -] - -FORCE_STATIC_LIB = True - -if CONFIG['OS_ARCH'] == 'WINNT': - USE_STATIC_LIBS = True -elif CONFIG['OS_ARCH'] == 'Darwin': - UNIFIED_SOURCES += [ - 'MacVerifyCrypto.cpp', - ] - OS_LIBS += [ - '-framework Security', - ] -else: - DEFINES['MAR_NSS'] = True - LOCAL_INCLUDES += ['../sign'] - -LOCAL_INCLUDES += [ - '../src', -] - diff --git a/onlineupdate/source/update/common/moz.build b/onlineupdate/source/update/common/moz.build deleted file mode 100644 index 0444336..0000000 --- a/onlineupdate/source/update/common/moz.build +++ /dev/null @@ -1,29 +0,0 @@ -# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- -# vim: set filetype=python: -# 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/. - -EXPORTS += [ - 'readstrings.h', - 'updatedefines.h', - 'updatelogging.h', -] - -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': - EXPORTS += [ - 'pathhash.h', - 'uachelper.h', - 'updatehelper.cpp', - 'updatehelper.h', - ] - -Library('updatecommon') - -srcdir = '.' - -include('sources.mozbuild') - -FINAL_LIBRARY = 'xul' - -FAIL_ON_WARNINGS = True diff --git a/onlineupdate/source/update/src/moz.build b/onlineupdate/source/update/src/moz.build deleted file mode 100644 index 2d25e08..0000000 --- a/onlineupdate/source/update/src/moz.build +++ /dev/null @@ -1,30 +0,0 @@ -# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- -# vim: set filetype=python: -# 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/. - -EXPORTS += [ - 'mar.h', - 'mar_cmdline.h', -] - -HOST_SOURCES += [ - 'mar_create.c', - 'mar_extract.c', - 'mar_read.c', -] -HostLibrary('hostmar') - -Library('mar') - -UNIFIED_SOURCES += [ - 'mar_create.c', - 'mar_extract.c', - 'mar_read.c', -] - -FORCE_STATIC_LIB = True - -if CONFIG['OS_ARCH'] == 'WINNT': - USE_STATIC_LIBS = True diff --git a/onlineupdate/source/update/updater/automounter_gonk.cxx b/onlineupdate/source/update/updater/automounter_gonk.cxx deleted file mode 100644 index 3dff2a1..0000000 --- a/onlineupdate/source/update/updater/automounter_gonk.cxx +++ /dev/null @@ -1,251 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:set ts=2 sw=2 sts=2 et cindent: */ -/* 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/. */ - -#include <android/log.h> -#include <cutils/android_reboot.h> -#include <errno.h> -#include <stdlib.h> -#include <sys/mount.h> -#include <sys/reboot.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <unistd.h> - -#include "automounter_gonk.h" -#include "updatedefines.h" -#include "updatelogging.h" - -#define LOG_TAG "GonkAutoMounter" - -#define GONK_LOG(level, format, ...) \ - LOG((LOG_TAG ": " format "\n", ##__VA_ARGS__)); \ - __android_log_print(level, LOG_TAG, format, ##__VA_ARGS__) - -#define LOGI(format, ...) GONK_LOG(ANDROID_LOG_INFO, format, ##__VA_ARGS__) -#define LOGE(format, ...) GONK_LOG(ANDROID_LOG_ERROR, format, ##__VA_ARGS__) - -const char *kGonkMountsPath = "/proc/mounts"; -const char *kGonkSystemPath = "/system"; - -GonkAutoMounter::GonkAutoMounter() : mDevice(nullptr), mAccess(Unknown) -{ - if (!RemountSystem(ReadWrite)) { - LOGE("Could not remount %s as read-write.", kGonkSystemPath); - } -} - -GonkAutoMounter::~GonkAutoMounter() -{ - bool result = RemountSystem(ReadOnly); - free(mDevice); - - if (!result) { - // Don't take any chances when remounting as read-only fails, just reboot. - Reboot(); - } -} - -void -GonkAutoMounter::Reboot() -{ - // The android_reboot wrapper provides more safety, doing fancier read-only - // remounting and attempting to sync() the filesystem first. If this fails - // our only hope is to force a reboot directly without these protections. - // For more, see system/core/libcutils/android_reboot.c - LOGE("Could not remount %s as read-only, forcing a system reboot.", - kGonkSystemPath); - LogFlush(); - - if (android_reboot(ANDROID_RB_RESTART, 0, nullptr) != 0) { - LOGE("Safe system reboot failed, attempting to force"); - LogFlush(); - - if (reboot(RB_AUTOBOOT) != 0) { - LOGE("CRITICAL: Failed to force restart"); - } - } -} - -static const char * -MountAccessToString(MountAccess access) -{ - switch (access) { - case ReadOnly: return "read-only"; - case ReadWrite: return "read-write"; - default: return "unknown"; - } -} - -bool -GonkAutoMounter::RemountSystem(MountAccess access) -{ - if (!UpdateMountStatus()) { - return false; - } - - if (mAccess == access) { - return true; - } - - unsigned long flags = MS_REMOUNT; - if (access == ReadOnly) { - flags |= MS_RDONLY; - // Give the system a chance to flush file buffers - sync(); - } - - if (!MountSystem(flags)) { - return false; - } - - // Check status again to verify /system has been properly remounted - if (!UpdateMountStatus()) { - return false; - } - - if (mAccess != access) { - LOGE("Updated mount status %s should be %s", - MountAccessToString(mAccess), - MountAccessToString(access)); - return false; - } - - return true; -} - -bool -GonkAutoMounter::UpdateMountStatus() -{ - FILE *mountsFile = NS_tfopen(kGonkMountsPath, "r"); - - if (mountsFile == nullptr) { - LOGE("Error opening %s: %s", kGonkMountsPath, strerror(errno)); - return false; - } - - // /proc/mounts returns a 0 size from fstat, so we use the same - // pre-allocated buffer size that ADB does here - const int mountsMaxSize = 4096; - char mountData[mountsMaxSize]; - size_t read = fread(mountData, 1, mountsMaxSize - 1, mountsFile); - mountData[read + 1] = '\0'; - - if (ferror(mountsFile)) { - LOGE("Error reading %s, %s", kGonkMountsPath, strerror(errno)); - fclose(mountsFile); - return false; - } - - char *token, *tokenContext; - bool foundSystem = false; - - for (token = strtok_r(mountData, "\n", &tokenContext); - token; - token = strtok_r(nullptr, "\n", &tokenContext)) - { - if (ProcessMount(token)) { - foundSystem = true; - break; - } - } - - fclose(mountsFile); - - if (!foundSystem) { - LOGE("Couldn't find %s mount in %s", kGonkSystemPath, kGonkMountsPath); - } - return foundSystem; -} - -bool -GonkAutoMounter::ProcessMount(const char *mount) -{ - const int strSize = 256; - char mountDev[strSize]; - char mountDir[strSize]; - char mountAccess[strSize]; - - int rv = sscanf(mount, "%255s %255s %*s %255s %*d %*d\n", - mountDev, mountDir, mountAccess); - mountDev[strSize - 1] = '\0'; - mountDir[strSize - 1] = '\0'; - mountAccess[strSize - 1] = '\0'; - - if (rv != 3) { - return false; - } - - if (strcmp(kGonkSystemPath, mountDir) != 0) { - return false; - } - - free(mDevice); - mDevice = strdup(mountDev); - mAccess = Unknown; - - char *option, *optionContext; - for (option = strtok_r(mountAccess, ",", &optionContext); - option; - option = strtok_r(nullptr, ",", &optionContext)) - { - if (strcmp("ro", option) == 0) { - mAccess = ReadOnly; - break; - } else if (strcmp("rw", option) == 0) { - mAccess = ReadWrite; - break; - } - } - - return true; -} - -/* - * Mark the given block device as read-write or read-only, using the BLKROSET - * ioctl. - */ -static void SetBlockReadWriteStatus(const char *blockdev, bool setReadOnly) { - int fd; - int roMode = setReadOnly ? 1 : 0; - - fd = open(blockdev, O_RDONLY); - if (fd < 0) { - return; - } - - if (ioctl(fd, BLKROSET, &roMode) == -1) { - LOGE("Error setting read-only mode on %s to %s: %s", blockdev, - setReadOnly ? "true": "false", strerror(errno)); - } - close(fd); -} - - -bool -GonkAutoMounter::MountSystem(unsigned long flags) -{ - if (!mDevice) { - LOGE("No device was found for %s", kGonkSystemPath); - return false; - } - - // Without setting the block device ro mode to false, we get a permission - // denied error while trying to remount it in read-write. - SetBlockReadWriteStatus(mDevice, (flags & MS_RDONLY)); - - const char *readOnly = flags & MS_RDONLY ? "read-only" : "read-write"; - int result = mount(mDevice, kGonkSystemPath, "none", flags, nullptr); - - if (result != 0) { - LOGE("Error mounting %s as %s: %s", kGonkSystemPath, readOnly, - strerror(errno)); - return false; - } - - LOGI("Mounted %s partition as %s", kGonkSystemPath, readOnly); - return true; -} diff --git a/onlineupdate/source/update/updater/automounter_gonk.h b/onlineupdate/source/update/updater/automounter_gonk.h deleted file mode 100644 index 1300d39..0000000 --- a/onlineupdate/source/update/updater/automounter_gonk.h +++ /dev/null @@ -1,48 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:set ts=2 sw=2 sts=2 et cindent: */ -/* 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/. */ - -#ifndef AUTOMOUNTER_GONK_H__ -#define AUTOMOUNTER_GONK_H__ - -typedef enum { - ReadOnly, - ReadWrite, - Unknown -} MountAccess; - -/** - * This class will remount the /system partition as read-write in Gonk to allow - * the updater write access. Upon destruction, /system will be remounted back to - * read-only. If something causes /system to remain read-write, this class will - * reboot the device and allow the system to mount as read-only. - * - * Code inspired from AOSP system/core/adb/remount_service.c - */ -class GonkAutoMounter -{ -public: - GonkAutoMounter(); - ~GonkAutoMounter(); - - const MountAccess GetAccess() - { - return mAccess; - } - -private: - bool RemountSystem(MountAccess access); - bool ForceRemountReadOnly(); - bool UpdateMountStatus(); - bool ProcessMount(const char *mount); - bool MountSystem(unsigned long flags); - void Reboot(); - -private: - char *mDevice; - MountAccess mAccess; -}; - -#endif // AUTOMOUNTER_GONK_H__ diff --git a/onlineupdate/source/update/updater/moz.build b/onlineupdate/source/update/updater/moz.build deleted file mode 100644 index d5b1d50..0000000 --- a/onlineupdate/source/update/updater/moz.build +++ /dev/null @@ -1,13 +0,0 @@ -# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- -# vim: set filetype=python: -# 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/. - -Program('updater') - -updater_rel_path = '' -include('updater-common.build') -if CONFIG['ENABLE_TESTS']: - DIRS += ['updater-xpcshell'] -FAIL_ON_WARNINGS = True _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits