Makefile.gbuild                |    4 +++-
 bin/update/common.sh           |   17 +++++++++++++++++
 bin/update/create_full_mar.py  |   10 +++++-----
 bin/update/make_full_update.sh |    1 +
 bin/update/path.py             |   19 ++++++++++++++++++-
 bin/update/signing.py          |    3 ++-
 6 files changed, 46 insertions(+), 8 deletions(-)

New commits:
commit e4420db1a80fc53e23eafcd6b1dfe1aca293d60f
Author: Markus Mohrhard <markus.mohrh...@googlemail.com>
Date:   Fri Aug 4 05:29:53 2017 +0200

    updater: skip language packs for windows
    
    Change-Id: I5707bc8d3827aa24a795e91a8851d12c81613cfc
    Reviewed-on: https://gerrit.libreoffice.org/40756
    Reviewed-by: Markus Mohrhard <markus.mohrh...@googlemail.com>
    Tested-by: Markus Mohrhard <markus.mohrh...@googlemail.com>

diff --git a/Makefile.gbuild b/Makefile.gbuild
index 61df1425314a..a55bc5ffd4a7 100644
--- a/Makefile.gbuild
+++ b/Makefile.gbuild
@@ -34,7 +34,9 @@ create-update-info:
        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_for_languages.py "$(PRODUCTNAME)" 
"$(WORKDIR)" "$(MAR_NAME_PREFIX)" "$(UPDATE_CONFIG)"
+       $(if $(filter WNT,$(OS)),, \
+               MAR=$(INSTDIR)/program/mar 
$(SRCDIR)/bin/update/create_full_mar_for_languages.py "$(PRODUCTNAME)" 
"$(WORKDIR)" "$(MAR_NAME_PREFIX)" "$(UPDATE_CONFIG)" \
+       )
 
 upload-update-info:
        $(eval BUILDID := $(shell git -C $(SRCDIR) log -1 --format=%H))
commit 1878dac5e1a839bd4c07cae0f85cf62dd7474e45
Author: Markus Mohrhard <markus.mohrh...@googlemail.com>
Date:   Fri Aug 4 05:11:58 2017 +0200

    updater: handle windows path in cygwin correctly
    
    This is a huge mess. Any windows executable does not understand
    cygwin paths but for example the bash script only understands unix paths.
    
    Additionally, os.path is unixpath so it is not able to correctly handle
    windows paths. We therefore convert everything that we need to handle
    to unix paths and only the few paths that are passed in the end to windows
    executables back to the native format. We selected mixed mode
    (windows path with forward slash) to allow the unix scripts to manipulate
    paths.
    
    Change-Id: Ic443415ff5e8277bf0bb8704bbafd35f50767288
    Reviewed-on: https://gerrit.libreoffice.org/40755
    Reviewed-by: Markus Mohrhard <markus.mohrh...@googlemail.com>
    Tested-by: Markus Mohrhard <markus.mohrh...@googlemail.com>

diff --git a/bin/update/create_full_mar.py b/bin/update/create_full_mar.py
index 38919542d6a4..48686be21e45 100755
--- a/bin/update/create_full_mar.py
+++ b/bin/update/create_full_mar.py
@@ -8,9 +8,9 @@ import json
 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
+from path import UpdaterPath, convert_to_unix, convert_to_native
 
-current_dir_path = os.path.dirname(os.path.realpath(__file__))
+current_dir_path = os.path.dirname(os.path.realpath(convert_to_unix(__file__)))
 
 def main():
     if len(sys.argv) < 5:
@@ -34,14 +34,14 @@ def main():
 
     config = parse_config(update_config)
 
-    tar_dir = os.path.join(workdir, "installation", product_name, "archive", 
"install", "en-US")
+    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])
 
     uncompress_dir = uncompress_file_to_dir(tar_file, temp_dir)
 
     mar_file = make_complete_mar_name(target_dir, filename_prefix)
-    subprocess.call([os.path.join(current_dir_path, 'make_full_update.sh'), 
mar_file, uncompress_dir])
-
+    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)
 
diff --git a/bin/update/path.py b/bin/update/path.py
index 1bc14d70d940..0fe0fd5eb04f 100644
--- a/bin/update/path.py
+++ b/bin/update/path.py
@@ -9,6 +9,8 @@
 
 import os
 import errno
+import subprocess
+from sys import platform
 
 def mkdir_p(path):
     try:
@@ -19,10 +21,22 @@ def mkdir_p(path):
         else:
             raise
 
+def convert_to_unix(path):
+    if platform == "cygwin":
+        return subprocess.check_output(["cygpath", "-u", 
path]).decode("utf-8", "strict").rstrip()
+    else:
+        return path
+
+def convert_to_native(path):
+    if platform == "cygwin":
+        return subprocess.check_output(["cygpath", "-m", 
path]).decode("utf-8", "strict").rstrip()
+    else:
+        return path
+
 class UpdaterPath(object):
 
     def __init__(self, workdir):
-        self._workdir = workdir
+        self._workdir = convert_to_unix(workdir)
 
     def get_workdir(self):
         return self._workdir
@@ -41,6 +55,9 @@ class UpdaterPath(object):
 
     def get_language_dir(self):
         return os.path.join(self.get_mar_dir(), "language")
+
+    def get_workdir(self):
+        return self._workdir
     
     def ensure_dir_exist(self):
         mkdir_p(self.get_update_dir())
diff --git a/bin/update/signing.py b/bin/update/signing.py
index e6ac2832d844..c0b43ce91536 100644
--- a/bin/update/signing.py
+++ b/bin/update/signing.py
@@ -2,10 +2,11 @@ from tools import make_complete_mar_name
 
 import os
 import subprocess
+import path
 
 def sign_mar_file(target_dir, config, 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', target_dir, '-d', 
config.certificate_path, '-n', config.certificate_name, '-s', mar_file, 
signed_mar_file])
+    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(mar_file), 
path.convert_to_native(signed_mar_file)])
 
     os.rename(signed_mar_file, mar_file)
commit 954e4dc962374058e056b6682ff8ba33a2ecc9dc
Author: Markus Mohrhard <markus.mohrh...@googlemail.com>
Date:   Thu Aug 3 23:14:55 2017 +0200

    updater: check that access to mandatory externals is working
    
    Change-Id: Ica68488f4e39c958a913936573cee67c1ff69175
    Reviewed-on: https://gerrit.libreoffice.org/40754
    Reviewed-by: Markus Mohrhard <markus.mohrh...@googlemail.com>
    Tested-by: Markus Mohrhard <markus.mohrh...@googlemail.com>

diff --git a/bin/update/common.sh b/bin/update/common.sh
index eb358806fd04..5bba576c702c 100644
--- a/bin/update/common.sh
+++ b/bin/update/common.sh
@@ -26,6 +26,23 @@ get_file_size() {
   echo ${info[4]}
 }
 
+check_externals() {
+
+    # check whether we can call the mar executable
+    "$MAR" --version > /dev/null 2>&1
+    if [ $? != 0 ]; then
+        notice "Could not find a valid mar executable in the path or in the 
MAR environment variable"
+        exit 1
+    fi
+
+    # check whether we can access the bzip2 executable
+    "$BZIP2" --help > /dev/null 2>&1
+    if [ $? != 0 ]; then
+        notice "Could not find a valid bzip2 executable in the PATH or in the 
BZIP2 environment variable"
+        exit 1
+    fi
+}
+
 copy_perm() {
   reference="$1"
   target="$2"
diff --git a/bin/update/make_full_update.sh b/bin/update/make_full_update.sh
index 2c0faef200f8..cb7de49b23d4 100755
--- a/bin/update/make_full_update.sh
+++ b/bin/update/make_full_update.sh
@@ -32,6 +32,7 @@ if [ $1 = -h ]; then
   exit 1
 fi
 
+check_externals
 # -----------------------------------------------------------------------------
 
 archive="$1"
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to