1878dac5e1
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.mohrhard@googlemail.com> Tested-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
69 lines
1.9 KiB
Python
69 lines
1.9 KiB
Python
# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*-
|
|
#
|
|
# This file is part of the LibreOffice project.
|
|
#
|
|
# 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 os
|
|
import errno
|
|
import subprocess
|
|
from sys import platform
|
|
|
|
def mkdir_p(path):
|
|
try:
|
|
os.makedirs(path)
|
|
except OSError as exc: # Python >2.5
|
|
if exc.errno == errno.EEXIST and os.path.isdir(path):
|
|
pass
|
|
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 = convert_to_unix(workdir)
|
|
|
|
def get_workdir(self):
|
|
return self._workdir
|
|
|
|
def get_update_dir(self):
|
|
return os.path.join(self._workdir, "update-info")
|
|
|
|
def get_current_build_dir(self):
|
|
return os.path.join(self._workdir, "mar", "current-build")
|
|
|
|
def get_mar_dir(self):
|
|
return os.path.join(self._workdir, "mar")
|
|
|
|
def get_previous_build_dir(self):
|
|
return os.path.join(self._workdir, "mar", "previous-build")
|
|
|
|
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())
|
|
mkdir_p(self.get_current_build_dir())
|
|
mkdir_p(self.get_mar_dir())
|
|
mkdir_p(self.get_previous_build_dir())
|
|
mkdir_p(self.get_language_dir())
|
|
|
|
# vim: set shiftwidth=4 softtabstop=4 expandtab:
|