summaryrefslogtreecommitdiff
path: root/smoketest
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2013-10-18 12:45:00 +0200
committerStephan Bergmann <sbergman@redhat.com>2013-10-18 14:44:47 +0200
commit359472b2b50165966c27c239eccd3ecfb03e2acc (patch)
treeaf53647a222e72588554cbcf323afca090f3b288 /smoketest
parentb538fc543ecfbafef94b15ef068890c22d7f2218 (diff)
Remove *_Test product, so cppunittester can be NONE again
...as per #libreoffice-dev IRC: Sep 19 10:32:24 <mst__> sberg, moggi why the hell is that thing named "cppunit/cppunittester" and inside a subdir? it's obstructing my attempt to put it in $(INSTDIR)/program Sep 19 10:33:28 <mst__> (... and if you wonder "wtf does it have to do with INSTDIR" you have never heard of awesome LibreOffice_Test installset.... not that i would know who needs it :) Sep 19 10:36:36 <sberg> mst__, it is in a subdir of solver/*/bin so that on Windows it would not accidentally have picked DLLs next to itself instead of the module-local DLLs it was supposed to test (back when we had module-local output trees) Sep 19 10:37:02 <mst__> sberg, ahh hysteric reasons then, /me renames it Sep 19 10:37:55 <tml> mst__, if nobody you know uses LibreOffice_Test, just kill it? Sep 19 10:38:59 <sberg> mst__, tml, LibreOffice_Test was conceived by pmladek and/or kendy, IIRC Sep 19 10:40:31 * kendy does not remember anything about it :-) Sep 19 10:42:17 <sberg> wasn't that something so users (or QA people?) could easily run the smoketest against an installation, to see whether the installation is any good at all, by installing that LibreOffice_Test alongside the installation proper? Sep 19 10:43:26 <sberg> mst__, ...and I'd unscientifically vote to kill it Sep 19 11:34:23 <pmladek> mst__, sberg: I have created the LibreOffice_Test package for one QA guy. He does not longer work on LO. I am not sure if anyone else started to use it. So, I think that it can be killed. Oct 17 18:18:07 <tml_> sberg: have you ever noticed that when you try to actually run instdir/unxmacxi/LibreOfficeDev.app , the system actually tries to run cppunittester inside the app bundle (it says so in the crash report) (it crashes because cppunittester requires a specialized DYLIB_LIBRARY_PATH apparently) Oct 17 18:19:29 <tml_> I suspect that the system when cppunittester as part of the build process is run from inside instdir (i.e. inside an app bundle) the system "caches" this false knowledge, and thinks that the executable of the app bundle is cppunittester... Oct 17 18:19:36 <sberg> tml_, no, never noticed; with "run instdir/unxmacxi/LibreOfficeDev.app" you mean calling "open instdir/unxmacxi/LibreOfficeDev.app"? (I always call .app/Contenst/MacOS/program explicitly) Oct 17 18:19:52 <tml_> yes, I mean "open instdir/..." Oct 17 18:20:53 <tml_> some googling tells me that at least years ago, the CFBundleExecutable key in the Info.plist is ignored if it is manually changed, so I guess similar caching of mapping between an app bundle and which executable to actually run happens in this case Oct 17 18:23:17 <tml_> and last year somebody even claims "And while on Mountain Lion, CFBundleExecutable seems to be a no-op", which would be odd, surely there must be widely used apps that have several executables inside the MacOS directory; how would the system know which one to run when the app is run? Oct 17 18:24:38 <tml_> hmm, apparently the code that handles this might be open source even, http://www.opensource.apple.com/source/CF/CF-744.18/CFBundle.c Oct 17 18:25:52 <tml_> some mention of "caches" there yes, my guesses might be right Oct 17 18:27:05 <tml_> if I cp -R instdir/unxmacxi/LibreOffice.app foo.app and open foo.app, it works fine Oct 17 18:28:33 <tml_> anyway, I guess it would be cleaner to have cppunittester somewhere else even without this problem Oct 17 18:37:09 <sberg> tml_, yes, IIRC having cppunittester in instdir was a misguided mst decision, because that odd LibreOffice_Test product (that pmladek said nobody needs any longer anyway) includes it; I think consensus was to kill LibreOffice_Test and move cppunittester where all the other NONE executables are, but looks like nobody executed Oct 17 18:37:55 <tml_> ah ok, so mst should know what needs to be done? good, no need for me to try to hack this now then Oct 17 18:38:19 <sberg> tml_, I'll do the cleanup tomorrow, unless somebody beats me This removes smoketest/losmoketest et al along with the *_Test product, as they seem to not make sense without it anyway. smoketest/Executable_libtest.mk appears to be a test that could also be run during the build, and only ended up in the *_Test product by accident, so I left it untouched for now. Change-Id: I8024472c909fe0a885eb08ef4d3777f8a9e1f7c8
Diffstat (limited to 'smoketest')
-rw-r--r--smoketest/Module_smoketest.mk2
-rw-r--r--smoketest/Package_losmoketest.mk15
-rw-r--r--smoketest/Package_smoketestdoc.mk14
-rwxr-xr-xsmoketest/lodownloadtest.py662
-rwxr-xr-xsmoketest/losmoketest41
-rw-r--r--smoketest/losmoketest.readme186
6 files changed, 0 insertions, 920 deletions
diff --git a/smoketest/Module_smoketest.mk b/smoketest/Module_smoketest.mk
index ab06c82a6067..798b7870f1e7 100644
--- a/smoketest/Module_smoketest.mk
+++ b/smoketest/Module_smoketest.mk
@@ -14,8 +14,6 @@ ifeq ($(CROSS_COMPILING),)
$(eval $(call gb_Module_add_targets,smoketest,\
Library_smoketest \
- Package_losmoketest \
- Package_smoketestdoc \
Zip_smoketestdoc \
))
diff --git a/smoketest/Package_losmoketest.mk b/smoketest/Package_losmoketest.mk
deleted file mode 100644
index b4634c68401d..000000000000
--- a/smoketest/Package_losmoketest.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
-#
-#
-# 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/.
-#
-
-$(eval $(call gb_Package_Package,smoketest_losmoketest,$(SRCDIR)/smoketest))
-
-$(eval $(call gb_Package_add_file,smoketest_losmoketest,bin/losmoketest,losmoketest))
-
-# vim: set noet sw=4 ts=4:
diff --git a/smoketest/Package_smoketestdoc.mk b/smoketest/Package_smoketestdoc.mk
deleted file mode 100644
index cac1d6581061..000000000000
--- a/smoketest/Package_smoketestdoc.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
-#
-# 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/.
-#
-
-$(eval $(call gb_Package_Package,smoketestdoc,$(WORKDIR)/Zip))
-
-$(eval $(call gb_Package_add_file,smoketestdoc,bin/smoketestdoc.sxw,smoketestdoc.zip))
-
-# vim: set noet sw=4 ts=4:
diff --git a/smoketest/lodownloadtest.py b/smoketest/lodownloadtest.py
deleted file mode 100755
index 63ff439e2020..000000000000
--- a/smoketest/lodownloadtest.py
+++ /dev/null
@@ -1,662 +0,0 @@
-#!/usr/bin/env python
-#
-# 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/.
-#
-
-# The tool is designed to enable test machine fully automatically run smoketest
-# with both daily and pre release build located in dev-build.libreoffice.org.
-#
-# The tool is named as losmoketest for its purpose, meanwhile it help you to
-# check, download and install the latest build. By the fact the installation is
-# designed not to be different from manually doing these repeated work, the
-# installed libreoffice build can also be good for manual test.
-
-import sys, os, platform
-import datetime, time
-import subprocess, shutil
-import glob, re
-import urllib, urllib2
-import logging, getopt
-try:
- import ConfigParser as configparser # Python 3.0 change
-except ImportError:
- import configparser
-
-# FIXME: make this configurable via options or autodetect it
-build_version = "3.5"
-tag_version = "3-5"
-# devel build
-branding_pack="lodev"
-basis_pack="lodevbasis"
-# stable build
-#branding_pack="libreoffice"
-#basis_pack="libobasis"
-
-# possible program files of libreoffice, put all platform paths are
-# expected in this list
-lo_all_paths = [
- "/opt/lodev" + build_version, \
- "/opt/libreoffice" + build_version, \
- "/usr/lib/libreoffice", \
- "/usr/lib64/libreoffice", \
- "C:\program file\libreoffice", \
- ]
-
-build_check_interval = 5 #seconds
-
-# Distro list
-RPM_DISTRO_LIST = ['SuSE', 'fedora', 'redhat', 'centos', 'mandrake', 'mandriva', 'yellowdog', 'turbolinux']
-DEB_DISTRO_LIST = ['debian', 'ubuntu', 'Ubuntu']
-
-# Server urls
-SERVER_URL = "http://dev-builds.libreoffice.org"
-
-# Local dirs
-root_dir = os.getcwd()
-DOWNLOAD_DIR = os.path.join(root_dir, "_download")
-USR_DIR = os.path.join(root_dir, "_libo_smoke_user")
-LOCAL_BUILD_INFO_FILE = os.path.join(root_dir, "build.cfg")
-
-# INSTALL_DIR = os.path.join(root_dir, "_libo_smoke_installation")
-INSTALL_DIR = "" # Installation dir
-
-# SOFFICE_BIN bin
-if platform.system() == "Linux":
- SOFFICE_BIN = "soffice"
- LOSMOKETEST_BIN = "losmoketest"
-elif platform.system() == "Windows":
- SOFFICE_BIN = "soffice.exe"
- LOSMOKETEST_BIN = "losmoketest"
-else:
- SOFFICE_BIN = "soffice"
- LOSMOKETEST_BIN = "losmoketest"
-
-# Relative build url
-## pre-releases
-PR_RPM_X86_PATH = "pre-releases/rpm/x86/"
-PR_RPM_X86_64_PATH = "pre-releases/rpm/x86_64/"
-
-PR_DEB_X86_PATH = "pre-releases/deb/x86/"
-PR_DEB_X86_64_PATH = "pre-releases/deb/x86_64/"
-
-PR_MAC_X86_PATH = "pre-releases/mac/x86/"
-PR_MAC_PPC_PATH = "pre-releases/mac/ppc/"
-
-PR_WIN_X86_PATH = "pre-releases/win/x86/"
-
-## daily_master
-DAILY_MASTER_RPM_X86_PATH = "daily/Linux-x86_10-Release_Configuration/master/current"
-DAILY_MASTER_RPM_X86_64_PATH = "daily/Linux-x86_64_11-Release_Configuration/master/current"
-
-DAILY_MASTER_DEB_X86_PATH = "daily/Linux-x86_10-Release_Configuration/master/current"
-DAILY_MASTER_DEB_X86_64_PATH = "daily/Linux-x86_64_11-Release_Configuration/master/current"
-
-DAILY_MASTER_MAC_X86_PATH = "daily/MacOSX-Intel@3-OSX_10.6.0-gcc_4.0.1/master/current"
-DAILY_MASTER_MAC_PPC_PATH = "daily/MacOSX-PPC@12-OSX_10.5.0-gcc_4.0.1/master/current" # No build yet
-
-DAILY_MASTER_WIN_X86_PATH = "daily/Win-x86@7-MinGW/master/current" # cross compling build
-
-## daily_branch
-DAILY_BRANCH_RPM_X86_PATH = "daily/Linux-x86_10-Release_Configuration/libreoffice-" + tag_version + "/current"
-DAILY_BRANCH_RPM_X86_64_PATH = "daily/Linux-x86_64_11-Release_Configuration/libreoffice-" + tag_version + "/current"
-
-DAILY_BRANCH_DEB_X86_PATH = "daily/Linux-x86_10-Release_Configuration/libreoffice-" + tag_version + "/current"
-DAILY_BRANCH_DEB_X86_64_PATH = "daily/Linux-x86_64_11-Release_Configuration/libreoffice-" + tag_version + "/current"
-
-DAILY_BRANCH_MAC_X86_PATH = "daily/MacOSX-Intel@3-OSX_10.6.0-gcc_4.0.1/libreoffice-" + tag_version + "/current"
-DAILY_BRANCH_MAC_PPC_PATH = "daily/MacOSX-PPC@12-OSX_10.5.0-gcc_4.0.1/libreoffice-" + tag_version + "/current"
-
-DAILY_BRANCH_WIN_X86_PATH = "daily/Win-x86@7-MinGW/libreoffice-" + tag_version + "/current"
-
-
-
-def platform_info():
-
- s = platform.system()
- arch_name = platform.machine()
-
- if arch_name in ['x86', 'i386', 'i586', 'i686']:
- arch_name = 'x86'
-
- if s == "Linux":
- if platform.dist()[0] in RPM_DISTRO_LIST:
- distro_name = platform.dist()[0]
- pck_name = 'rpm'
- elif platform.dist()[0] in DEB_DISTRO_LIST:
- distro_name = platform.dist()[0]
- pck_name = 'deb'
- elif s == "Windows":
- distro_name = platform.dist()[0]
- pck_name = 'exe'
- else:
- distro_name = platform.dist()[0]
- pck_name = 'dmg'
-
- return distro_name, pck_name, arch_name
-
-def local_build_info(t):
-
- if not os.path.exists(LOCAL_BUILD_INFO_FILE):
- logger.error("Can't find the file: " + LOCAL_BUILD_INFO_FILE)
- sys.exit()
-
- config = configparser.RawConfigParser()
- config.read(LOCAL_BUILD_INFO_FILE)
-
- try:
- build_name = config.get(t, 'build_name').strip('\n')
- build_time = datetime.datetime.strptime(config.get(t, 'build_time').strip('\n'), '%d-%b-%Y %H:%M')
- except ValueError:
- build_name = ''
- build_time = datetime.datetime.min
-
- try:
- testpack_name = config.get(t, 'testpack_name').strip('\n')
- testpack_build_time = datetime.datetime.strptime(config.get(t, 'testpack_build_time').strip('\n'), '%d-%b-%Y %H:%M')
- except ValueError:
- testpack_name = ''
- testpack_build_time = datetime.datetime.min
-
- return build_name, build_time, testpack_name, testpack_build_time
-
-def get_url_regexp(t, package, arch):
- '''
- return a url containing download links, i.e:
-
- http://dev-builds.libreoffice.org/pre-releases/rpm/x86_64/
- http://dev-builds.libreoffice.org/daily/Windows_Release_Configuration/libreoffice-3-4/current/
- http://dev-builds.libreoffice.org/daily/Linux_x86_Release_Configuration/libreoffice-3-4/current/
-
- meanwhile return a regexp object that matching corresponding downloadable
- package and its timestamp '''
-
- url = ""
- reg_lo = re.compile('^$')
- reg_tst = re.compile('^$')
- pck = package
- arc = arch
-
- if t == 'pre-releases':
- if pck == "rpm" and arc == "x86":
- url = SERVER_URL + "/" + PR_RPM_X86_PATH
- reg_lo = re.compile('\<a\ href=\"(LibO_\d.*x86_install-rpm.*en-US.*\.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*')
- reg_tst = re.compile('\<a\ href=\"(LibO-Test.*.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*')
- elif pck == "rpm" and arc == "x86_64":
- url = SERVER_URL + "/" + PR_RPM_X86_64_PATH
- reg_lo = re.compile('\<a\ href=\"(LibO_\d.*x86-64_install-rpm.*en-US.*\.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*')
- reg_tst = re.compile('\<a\ href=\"(LibO-Test.*.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*')
- elif pck == "deb" and arc == "x86":
- url = SERVER_URL + "/" + PR_DEB_X86_PATH
- reg_lo = re.compile('\<a\ href=\"(LibO_\d.*x86_install-deb.*en-US.*\.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*')
- elif pck == "deb" and arc == "x86_64":
- url = SERVER_URL + "/" + PR_DEB_X86_64_PATH
- reg_lo = re.compile('\<a\ href=\"(LibO_\d.*x86-64_install-deb.*en-US.*\.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*')
- elif pck == "exe" and arc == "x86":
- url = SERVER_URL + "/" + PR_WIN_X86_PATH
- reg_lo = re.compile('\<a\ href=\"(LibO_\d.*Win_x86_install_multi.exe)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*')
- elif pck == "dmg" and arc == "x86":
- url = SERVER_URL + "/" + PR_MAC_X86_PATH
- reg_lo = re.compile('\<a\ href=\"(LibO_\d.*MacOS_x86_install_en-US.dmg)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*')
- elif pck == "dmg" and arc == "ppc":
- url = SERVER_URL + "/" + PR_MAC_PPC_PATH
- reg_lo = re.compile('\<a\ href=\"(LibO_\d.*MacOS_PPC_install_en-US.dmg)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*')
- else:
- logger.error("Unable to handle the system or arch!")
- elif t == 'daily_master':
- if pck == "rpm" and arc == "x86":
- url = SERVER_URL + "/" + DAILY_MASTER_RPM_X86_PATH
- reg_lo = re.compile('\<a\ href=\"(master\~\d.*LibO-Dev_.*x86_install-rpm_en-US.tar.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*')
- elif pck == "rpm" and arc == "x86_64":
- url = SERVER_URL + "/" + DAILY_MASTER_RPM_X86_64_PATH
- reg_lo = re.compile('\<a\ href=\"(master\~\d.*LibO-Dev_.*x86-64_install-rpm_en-US.tar.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*')
- elif pck == "deb" and arc == "x86":
- url = SERVER_URL + "/" + DAILY_MASTER_DEB_X86_PATH
- reg_lo = re.compile('\<a\ href=\"(master\~\d.*LibO-Dev_.*x86_install-deb_en-US.tar.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*')
- elif pck == "deb" and arc == "x86_64":
- url = SERVER_URL + "/" + DAILY_MASTER_DEB_X86_64_PATH
- reg_lo = re.compile('^$') # No build yet
- elif pck == "exe" and arc == "x86":
- url = SERVER_URL + "/" + DAILY_MASTER_WIN_X86_PATH
- reg_lo = re.compile('^$') # No build yet
- elif pck == "dmg" and arc == "x86":
- url = SERVER_URL + "/" + DAILY_MASTER_MAC_X86_PATH
- reg_lo = re.compile('\<a\ href=\"(master\~\d.*LibO-Dev_.*x86_install_en-US.dmg)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*')
- elif pck == "dmg" and arc == "ppc":
- url = SERVER_URL + "/" + DAILY_MASTER_MAC_PPC_PATH
- reg_lo = re.compile('^$') # No build yet
- else:
- logger.error("Unable to handle the system or arch!")
- elif t == 'daily_branch':
- if pck == "rpm" and arc == "x86":
- url = SERVER_URL + "/" + DAILY_BRANCH_RPM_X86_PATH
- reg_lo = re.compile('\<a\ href=\"(.*LibO_.*x86_install-rpm_en-US\.tar\.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*')
- elif pck == "rpm" and arc == "x86_64":
- url = SERVER_URL + "/" + DAILY_BRANCH_RPM_X86_64_PATH
- reg_lo = re.compile('\<a\ href=\"(.*LibO_.*x86-64_install-rpm_en-US\.tar\.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*')
- elif pck == "deb" and arc == "x86":
- url = SERVER_URL + "/" + DAILY_BRANCH_DEB_X86_PATH
- reg_lo = re.compile('\<a\ href=\"(.*LibO_.*x86_install-deb_en-US\.tar\.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*')
- elif pck == "deb" and arc == "x86_64":
- url = SERVER_URL + "/" + DAILY_BRANCH_DEB_X86_64_PATH
- reg_lo = re.compile('\<a\ href=\"(.*LibO_.*x86-64_install-deb_en-US\.tar\.gz)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*')
- elif pck == "exe" and arc == "x86":
- url = SERVER_URL + "/" + DAILY_BRANCH_WIN_X86_PATH
- reg_lo = re.compile('\<a\ href=\"(.*LibO_.*install_.*\.exe)\".*(\d{2}\-[a-zA-Z]{3}\-\d{4}).*(\d{2}:\d{2}).*')
- elif pck == "dmg" and arc == "x86":
- url = SERVER_URL + "/" + DAILY_BRANCH_MAC_X86_PATH
- reg_lo = re.compile('^$') # No build yet
- elif pck == "dmg" and arc == "ppc":
- url = SERVER_URL + "/" + DAILY_BRANCH_MAC_PPC_PATH
- reg_lo = re.compile('^$') # No build yet
- else:
- logger.error("Unable to handle the system or arch!")
- else:
- logger.error("Error build type! The build type has to be:\n pre-releases, daily_master, daily_branch")
-
- return url, reg_lo, reg_tst
-
-def remote_build_info(url_reg):
- ''' Get the latest proper build info (build_name, build_time) from
- url. '''
-
- p = platform_info()
- pck = p[1]
- arc = p[2]
- r = url_reg[1]
- r_t = url_reg[2]
-
- f = urllib2.urlopen(url_reg[0])
- c = ''.join(f.readlines())
- f.close()
-
- build_list = r.findall(c)
- test_list = r_t.findall(c)
-
- build_name = ''
- build_time = datetime.datetime.min
- testpack_build_time = datetime.datetime.min
- testpack_name = ''
-
-
- for b in build_list:
- if datetime.datetime.strptime(b[1] + ' ' + b[2], '%d-%b-%Y %H:%M') > build_time:
- build_name = b[0]
- try:
- build_time = datetime.datetime.strptime(b[1] + ' ' + b[2], '%d-%b-%Y %H:%M')
- except:
- print "remote_build_info: wrong time date&format"
-
- for t in test_list:
- if datetime.datetime.strptime(t[1] + ' ' + t[2], '%d-%b-%Y %H:%M') > testpack_build_time:
- testpack_name = t[0]
- try:
- testpack_build_time = datetime.datetime.strptime(t[1] + ' ' + t[2], '%d-%b-%Y %H:%M')
- except:
- print "remote_build_info: wrong time date&format"
-
- return build_name, build_time, testpack_name, testpack_build_time
-
-# return True when something was downloaded
-def download(url_reg, build_type):
- logger.info('Checking new build ...')
-
- try:
- remote_build = remote_build_info(url_reg)
- local_build = local_build_info(build_type)
-
- if remote_build[1] > local_build[1]:
- logger.info('Found New LO build: ' + remote_build[0])
- if fetch_build(url_reg[0], remote_build[0]):
- set_build_config(build_type, 'build_name', remote_build[0])
- set_build_config(build_type, 'build_time', datetime.datetime.strftime(remote_build[1], '%d-%b-%Y %H:%M'))
- else:
- logger.error('Download libreoffice build failed!')
-
- if remote_build[3] > local_build[3] and (remote_build[1] - remote_build[3]) < datetime.timedelta(hours=1):
- logger.info('Found a relevant smoketest package: ' + remote_build[2])
- if fetch_build(url_reg[0], remote_build[2]):
- set_build_config(build_type, 'testpack_name', remote_build[2])
- set_build_config(build_type, 'testpack_build_time', datetime.datetime.strftime(remote_build[3], '%d-%b-%Y %H:%M'))
- return True
- else:
- logger.warning("Failed to find corresponding smoketest package")
-
- except urllib2.URLError, HTTPError:
- logger.error('Error fetch remote build info.')
- return False
- except KeyboardInterrupt:
- sys.exit()
- except:
- logger.error('Error fetch remote build info.')
- return False
-
- return False
-
-def fetch_build(url, filename):
- ''' Download a build from address url/filename '''
-
- logger.info("Downloading ... " + filename)
-
- u = urllib2.urlopen(url + '/' + filename)
-
- try:
- f = open(DOWNLOAD_DIR + '/' + filename, 'wb')
- f.write(u.read())
- f.close()
- except urllib2.HTTPError, e:
- print "HTTP Error:",e.code , url
- except urllib2.URLError, e:
- print "URL Error:",e.reason , url
-
- return True
-
-def set_build_config(section, option, value):
-
- config = configparser.RawConfigParser()
- config.readfp(open(LOCAL_BUILD_INFO_FILE))
- config.set(section, option, value)
- with open(LOCAL_BUILD_INFO_FILE, 'wb') as cfgfile:
- config.write(cfgfile)
-
-def uninstall(build_type):
- ''' Kill libreoffice processes and uninstall all previously installed
- libreoffice packages '''
-
- if build_type == "pre-releases":
- branding_pack="libreoffice"
- basis_pack="libobasis"
-
- logger.info("Uninstalling ...")
-
- pck = platform_info()[1]
-
- if pck == 'rpm':
- cmd_query = ["rpm", "-qa"]
- cmd_filter = ["grep", \
- "-e", branding_pack+build_version, \
- "-e", basis_pack+build_version, \
- ]
-
- P_query = subprocess.Popen(cmd_query, stdout = subprocess.PIPE)
- P_filter = subprocess.Popen(cmd_filter, stdin = P_query.stdout, stdout = subprocess.PIPE)
- P_query.stdout.close() # protection when P_filter exit before P_query
- str_filter = P_filter.communicate()[0]
-
- if str_filter == "":
- logger.warning("Nothing to uninstall")
- return
- else:
- cmd = ["sudo", "rpm", "-e"] + str_filter.split()
- elif pck == 'deb':
- cmd_query = ["dpkg", "--get-selections", branding_pack+build_version+"*", basis_pack+build_version+"*"]
- cmd_filter = ["cut", "-f", "1"]
-
- P_query = subprocess.Popen(cmd_query, stdout = subprocess.PIPE)
- P_filter = subprocess.Popen(cmd_filter, stdin = P_query.stdout, stdout = subprocess.PIPE)
- P_query.stdout.close()
- str_filter = P_filter.communicate()[0]
-
- if str_filter == "":
- logger.warning("Nothing to uninstall")
- return
- else:
- cmd = ["sudo", "dpkg ", "-P"] + str_filter.split()
- elif pck == 'exe':
- pass
- elif pck == 'dmg':
- pass
- else:
- logger.warning("Non supported package system")
-
- subprocess.check_call(cmd)
-
-def init_testing():
- logger.info("Initializing ...")
-
- post_testing()
-
- if not os.path.exists(DOWNLOAD_DIR):
- os.mkdir(DOWNLOAD_DIR)
-
- if not os.path.exists(USR_DIR):
- os.mkdir(USR_DIR)
-
- if not os.path.exists(LOCAL_BUILD_INFO_FILE):
-
- init_build_cfg = '[daily_branch]' + os.linesep\
- + 'build_name =' + os.linesep\
- + 'build_time =' + os.linesep\
- + 'testpack_name =' + os.linesep\
- + 'testpack_build_time =' + os.linesep\
- + '[daily_master]' + os.linesep\
- + 'build_name =' + os.linesep\
- + 'build_time =' + os.linesep\
- + 'testpack_name =' + os.linesep\
- + 'testpack_build_time =' + os.linesep\
- + '[pre-releases]' + os.linesep\
- + 'build_name =' + os.linesep\
- + 'build_time =' + os.linesep \
- + 'testpack_name =' + os.linesep\
- + 'testpack_build_time =' + os.linesep
-
- with open(LOCAL_BUILD_INFO_FILE, 'w+') as f:
- f.write(init_build_cfg)
- f.close()
-
-def post_testing():
- logger.info("Cleaning up ...")
-
- # clean up the extracted installer dir
- for r in os.walk(DOWNLOAD_DIR):
- if r[0] == DOWNLOAD_DIR:
- for d in r[1]:
- shutil.rmtree(os.path.join(r[0], d))
-
-def install(filename):
- ''' filename: local file path of tar.gz, dmg or exe. The script will
- extract the package and then install it '''
-
- logger.info("Installing ... " + filename)
-
- def _is_not_filtered(s):
- ''' True if the package s is not intended to installed. '''
- filter_pattern_list = ['.*kde.*', '.*gnome.*', '.*desktop.*', '!.*\.rpm$', '!.*\.deb$']
- for p in filter_pattern_list:
- r = re.compile(p)
- if r.match(s):
- return False
- return True
-
- fn, ext = os.path.splitext(filename)
- pcklist = []
-
- if ext == '.exe':
- # extract
- installer_dir = os.path.join(DOWNLOAD_DIR, filename.strip(ext))
- subprocess.check_call([filename, '/EXTRACTONLY=ON', '/S', '/D='+installer_dir])
- # install
- installer = glob.glob(os.path.join(installer_dir, 'libreoffice*msi'))[0]
- subprocess.check_call(['msiexec', '-i', installer, '-passive', 'ADDLOCAL=all'])
- elif ext == '.dmg':
- return
- elif ext == '.gz':
- # extract
- subprocess.check_call(['tar', 'xzf', filename, '-C', DOWNLOAD_DIR])
-
- # get a filtered install list
- for root, dirs, files in os.walk(DOWNLOAD_DIR):
- if 'RPMS' in root or 'DEBS' in root:
- pcklist = pcklist + [os.path.join(root_dir, root, f) for f in files]
- install_pcklist = filter(_is_not_filtered, pcklist)
-
- # install
- if platform_info()[1] == 'rpm':
- install_cmd = ["sudo", "rpm", "-iv"] + install_pcklist
- clean_tmp_cmd = ["sudo", "rm", "-f"] + pcklist
- elif platform_info()[1] == 'deb':
- install_cmd = ["sudo", "dpkg", "-i"] + install_pcklist
- else:
- logger.error('Cannot generate install command')
- return
-
- subprocess.check_call(install_cmd)
- subprocess.check_call(clean_tmp_cmd)
-
- else:
- logger.info("Unrecognized file extension")
-
-def verify_smoketest(headless):
- logger.info("Testing ...")
-
- s = platform.system()
- p = platform_info()
- pck = p[1]
- arc = p[2]
-
- lo_testable_paths = filter(lambda p: \
- os.path.exists(p + os.sep + "program" + os.sep + LOSMOKETEST_BIN) and \
- os.path.exists(p + os.sep + "program" + os.sep + SOFFICE_BIN), \
- lo_all_paths)
-
- if not lo_testable_paths:
- logger.error("Not found any Libreoffice or Test packages!")
- sys.exit(1)
- else:
- cmd_smoketests = [ p + os.sep + "program" + os.sep + LOSMOKETEST_BIN for p in lo_testable_paths ]
-
- if len(lo_testable_paths) > 1:
- logger.info("++More than one testable build is found, test them one by one.")
-
- # subprocess.call(cmd_smoketest);
- for c in cmd_smoketests:
- pattern = re.compile(LOSMOKETEST_BIN + "$")
- logger.info(" Test Binary: " + pattern.sub(SOFFICE_BIN, c))
- subprocess.call(c)
-
-def usage():
-
- print "\n[Usage]\n\n -f Force testing without asking \n\
- -t Testing type pre-release/daily \n\
- -l Download and test last builds in a loop \n\
- -v Run smoketest verification directly \n\
- -s Use the headless mode when running the tests \n\
- -i Install the latest build in the DOWNLOAD directory \n\
- -u Uninstall any existed libreoffice build \n\
- -d Download the latest build for the given test type \n\
-"
-
-def main():
-
- interactive = True
- build_type = "pre-releases"
-
- package_type = platform_info()[1]
- arch_type = platform_info()[2]
-
- loop = False
- interactive = True
- headless = False
- build_type = "pre-releases"
-
- # Handling options and arguments
- try:
- opts, args = getopt.getopt(sys.argv[1:], "dluihfvst:", ["download", "loop", "uninstall", "install", "help", "force", "verify", "headless", "type="])
- except getopt.GetoptError, err:
- logger.error(str(err))
- usage()
- sys.exit(2)
-
- for o, a in opts:
- if ("-t" in o) or ("--type" in o):
- build_type = a
- elif o in ("-s", "--headless"):
- headless = True
-
- url_reg = get_url_regexp(build_type, package_type, arch_type)
-
- for o, a in opts:
- if o in ("-f", "--force"):
- interactive = False
- elif o in ("-t", "--type"):
- pass
- elif o in ("-s", "--headless"):
- pass
- elif o in ("-h", "--help"):
- usage()
- sys.exit()
- elif o in ("-v", "--verify"):
- init_testing()
- verify_smoketest(headless)
- sys.exit()
- elif o in ("-i", "--install"):
- init_testing()
- uninstall(build_type)
- install(DOWNLOAD_DIR + os.sep + local_build_info(build_type)[0])
- install(DOWNLOAD_DIR + os.sep + local_build_info(build_type)[2])
- sys.exit()
- elif o in ("-u", "--uninstall"):
- uninstall(build_type)
- sys.exit()
- elif o in ("-d", "--download"):
- init_testing()
- download(url_reg, build_type)
- sys.exit()
- elif o in ("-l", "--loop"):
- loop = True
- else:
- assert False, "Unhandled option: " + o
-
- if interactive == True:
- key = raw_input("The testing will OVERRIDE existed libreoffice, continue(y/N)? ")
- if not (key == "y" or key == "Y" or key == "yes"):
- sys.exit()
-
- init_testing()
- first_run = True
- while loop or first_run:
- if download(url_reg, build_type):
- try:
- # FIXME: uninstall script fails but it need not break the whole game; so try it twice
- try:
- uninstall(build_type)
- except:
- logger.error("Some errors happened during uninstall. Trying once again.")
- uninstall(build_type)
-
- install(DOWNLOAD_DIR + os.sep + local_build_info(build_type)[0])
- install(DOWNLOAD_DIR + os.sep + local_build_info(build_type)[2])
- verify_smoketest(headless)
-
- except KeyboardInterrupt:
- sys.exit()
- except:
- continue
- else:
- logger.warning("No new build found.")
- if loop:
- time.sleep(build_check_interval)
-
- first_run = False
-
-
-if __name__ == '__main__':
-
- # logging
- logger = logging.getLogger('')
- logger.setLevel(logging.DEBUG)
-
- fh = logging.FileHandler(os.path.basename(__file__) + '.log')
- ch = logging.StreamHandler()
-
- formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
- ch.setFormatter(formatter)
- fh.setFormatter(formatter)
-
- logger.addHandler(ch)
- logger.addHandler(fh)
-
- main()
diff --git a/smoketest/losmoketest b/smoketest/losmoketest
deleted file mode 100755
index d43a178731fa..000000000000
--- a/smoketest/losmoketest
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/sh
-#
-# 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/.
-#
-
-# resolve installation directory
-sd_cwd=`pwd`
-sd_res=$0
-while [ -h "$sd_res" ] ; do
- cd "`dirname "$sd_res"`"
- sd_basename=`basename "$sd_res"`
- sd_res=`ls -l "$sd_basename" | sed "s/.*$sd_basename -> //g"`
-done
-cd "`dirname "$sd_res"`"
-sd_prog=`pwd`
-cd "$sd_cwd"
-
-user_conf_dir=`grep UserInstallation $sd_prog/bootstraprc | sed -e "s|UserInstallation=||" -e "s|\\$SYSUSERCONFIG|$HOME/.config|"`
-
-case "`uname -s`" in
-Linux)
- sd_prog1="$sd_prog"
- sd_prog2="$sd_prog/../ure/lib"
- LD_LIBRARY_PATH=$sd_prog1:$sd_prog2${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
- export LD_LIBRARY_PATH
- ;;
-esac
-
-exec $sd_prog/cppunittester \
- -env:UNO_SERVICES=file://$sd_prog/../ure/share/misc/services.rdb \
- -env:UNO_TYPES=file://$sd_prog/../ure/share/misc/types.rdb\ file://$sd_prog/types/offapi.rdb \
- -env:arg-soffice=path:$sd_prog/soffice \
- -env:arg-user=$user_conf_dir \
- -env:arg-env=$LD_LIBRARY_PATH \
- -env:arg-testarg.smoketest.doc=$sd_prog/../share/test/smoketestdoc.sxw \
- --protector $sd_prog/unoexceptionprotector.so unoexceptionprotector \
- $sd_prog/libsmoketest.so
diff --git a/smoketest/losmoketest.readme b/smoketest/losmoketest.readme
deleted file mode 100644
index 88091339d8d6..000000000000
--- a/smoketest/losmoketest.readme
+++ /dev/null
@@ -1,186 +0,0 @@
-losmoketest.py
---------------
-Yifan Jiang <yfjiang@suse.com>
-http://dev-builds.libreoffice.org/
-
-The tool is designed to enable test machine fully automatically run smoketest
-with both daily and pre release build located in dev-build.libreoffice.org.
-
-The purpose of daily build testing is obvious, we want to catch bugs as early
-as possible:) some ideas canbe found here:
-
- http://wiki.documentfoundation.org/Testing_Daily_Builds#Is_parallel_installation_possible_.2F_planned.3F
-
-For the purpose of smoketest for pre release testing, currently there is an
-about 24 hrs lag syncing RC build from dev-build to official site. We need to
-guarantee at least the very basic function working before more people download
-the RC build from official site and play with it, in as short as 24 hrs.
-
-The tool is named as losmoketest for its purpose, meanwhile it help you to
-check, download and install the latest build. By the fact the installation is
-designed not to be different from manually doing these repeated work, the
-installed libreoffice build can also be good for manual test.
-
-Quick Start
------------
-
-This chapter describe step by step tutorials for a typical quick use of the
-tool. More functions can be discovered in section "The Tool -> Usage".
-
-[Linux]
-
- 0. If you do not have a python environment, firstly download python here:
-
- http://www.python.org/download/
-
- 1. Download binary:
-
- http://dev-builds.libreoffice.org/daily/losmoketest-0.2.tar.bz2
-
- 2. Unpack it to, for example, your home directory:
-
- tar xvjf losmoketest-0.2.tar.bz2 -C $HOME
-
- 3. Open a terminal
-
- 4. In the terminal, input (there's an Enter between each lines):
-
- su -
- (enter your root password when it prompts)
- cp /etc/sudoers /etc/sudoers.ori
- echo "$USER ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
- exit
-
- 5. In the terminal, input (there's an Enter between each lines):
-
- cd $HOME/losmoketest-0.2
- python ./losmoketest.py
-
- A msg OK(1) would be shown When the result successfully
- finished. Otherwise, please send the 'log' file to the author or mailing
- list libreoffice-qa@lists.freedesktop.org for more investigation.
-
- 6. After finish testing, recover the sudoers file by (there's an Enter
- between each lines),
-
- su -
- (enter your root password)
- cp /etc/sudoers.ori /etc/sudoers
- exit
-
-[Windows]
-
- 0. If you do not have a python environment, firstly download python here:
-
- http://www.python.org/download/
-
- 1. Download binary:
-
- http://dev-builds.libreoffice.org/daily/losmoketest-0.2.tar.bz2
-
- 2. Unpack it to, for example, C:\
-
- 3. Open a console by clicking Start menu -> Run ...
-
- 4. Input 'cmd' and press Enter
-
- 5. In the terminal, input (there's an Enter between each lines):
-
- cd C:\losmoketest-0.2
- .\losmoketest.py
-
- A msg OK(1) would be shown When the result successfully
- finished. Otherwise, please send the 'log' file to the author or mailing
- list libreoffice-qa@lists.freedesktop.org for more investigation.
-
-
-The tool
---------
-
-[Prerequisite]
-
- - Python > 2.6
- http://www.python.org/download/
-
- - A machine free to play (The test may *override* your existed
- libreoffice3.4 installation).
-
- - On Linux, add the following line in /etc/sudoer:
-
- $USER ALL=(ALL) NOPASSWD: ALL
-
- where $USER is your real user name. With this line, every command
- initialed with `sudo` will not be asked to input a password. Please
- consider the security risk brought by it.
-
-[Features Availability]
-
- Full features are implemented on Linux x86 and x86_64, rpm and deb:
-
- - Checking and dowloading the latest build
- - Install the latest build
- - Run smoke test on the build (not stable)
-
- Partial features are implemented on Windows:
-
- - Checking and dowloading the latest build
- - Install the latest build (Thanks *blip* help find out the command for silent install)
-
- Partial features are implemented on Mac:
-
- - Checking and dowloading the latest build
-
-[Usages]
-
- 1. Test the latest pre releases build:
-
- $ cd /path/to/losmoketest
- $ ./losmoketest.py # Test the latest pre releases build:
- $ ./losmoketest.py -t daily_master # Test the latest daily master build
- $ ./losmoketest.py -t daily_branch # Test the latest daily branch build (now 3.4)
-
- 2. Just Install the latest LOCAL build:
-
- $ cd /path/to/losmoketest
- $ ./losmoketest.py -i # Install the latest pre releases build in losmoketest/_download
- $ ./losmoketest.py -i -t daily_master # Install the latest daily master build in losmoketest/_download
- $ ./losmoketest.py -i -t daily_branch # Install the latest daily branch build (now 3.4) in losmoketest/_download
-
- 3. Just Verify the installed build:
-
- $ cd /path/to/losmoketest
- $ ./losmoketest.py -v
-
- 4. More tips in:
-
- $ cd /path/to/losmoketest
- $ ./losmoketest.py -h
-
-[Tested on]
-
- - SLED 11 sp1 x86
- - SLED 11 sp1 x86_64
- - OpenSuSE 11.4 x86
- - Ubuntu 10.10 x86
-
-[TODO]
-
- 1. verify_smoketest() improvement (replace it with more simple script
- rather than complicated cppunittester)
-
- 2. 'git' it when we have a stable code base
-
- 3. handling mac and windows build
-
-[Known issue]
-
- 1. The cppunittest performs not quite stable in different libreoffice
- build, some times it just hangs there without noticing :(
-
- 2. The version tag is desired to get dynamically. The current hard coded
- 3.4 is not reliable, especially not reliable when verify_smoketest()
- tries to set LD_LIBRARY_PATH.
-
- 3. Parallel installation with official build has a dependancy on Tinderbox
- improvement (the dev-build is ideally to be installed on something like
- /opt/lo-dev).