Kaydet (Commit) 359472b2 authored tarafından Stephan Bergmann's avatar Stephan Bergmann

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
üst b538fc54
...@@ -24,6 +24,7 @@ $(eval $(call gb_Helper_register_executables,NONE, \ ...@@ -24,6 +24,7 @@ $(eval $(call gb_Helper_register_executables,NONE, \
cfgex \ cfgex \
concat-deps \ concat-deps \
cpp \ cpp \
cppunittester \
$(if $(filter MSC,$(COM)), \ $(if $(filter MSC,$(COM)), \
gcc-wrapper \ gcc-wrapper \
g++-wrapper \ g++-wrapper \
...@@ -445,11 +446,6 @@ $(eval $(call gb_Helper_register_libraries,PLAINLIBS_OOO, \ ...@@ -445,11 +446,6 @@ $(eval $(call gb_Helper_register_libraries,PLAINLIBS_OOO, \
unotest \ unotest \
)) ))
# this is packaged in the "Test" instset, in the "program" dir :-/
$(eval $(call gb_Helper_register_executables,OOO, \
cppunittester \
))
$(eval $(call gb_Helper_register_libraries,PLAINLIBS_NONE, \ $(eval $(call gb_Helper_register_libraries,PLAINLIBS_NONE, \
subsequenttest \ subsequenttest \
testtools_cppobj \ testtools_cppobj \
......
...@@ -114,9 +114,6 @@ else # LIBO_TEST_INSTALL ...@@ -114,9 +114,6 @@ else # LIBO_TEST_INSTALL
ifeq (ODK,$(filter ODK,$(BUILD_TYPE))) ifeq (ODK,$(filter ODK,$(BUILD_TYPE)))
$(call instsetoo_native_install_command,sdkoo,en-US,_SDK,,$(PKGFORMAT)) $(call instsetoo_native_install_command,sdkoo,en-US,_SDK,,$(PKGFORMAT))
endif endif
ifeq (,$(filter WNT MACOSX,$(OS)))
$(call instsetoo_native_install_command,not-used,en-US,_Test,,$(PKGFORMAT))
endif
ifeq (HELP,$(filter HELP,$(BUILD_TYPE))$(filter MACOSX,$(OS))) ifeq (HELP,$(filter HELP,$(BUILD_TYPE))$(filter MACOSX,$(OS)))
$(foreach lang,$(gb_HELP_LANGS),\ $(foreach lang,$(gb_HELP_LANGS),\
$(call instsetoo_native_install_command,ooohelppack,$(lang),,-helppack,$(PKGFORMAT))) $(call instsetoo_native_install_command,ooohelppack,$(lang),,-helppack,$(PKGFORMAT)))
......
...@@ -219,88 +219,3 @@ LibreOffice_Dev_SDK ...@@ -219,88 +219,3 @@ LibreOffice_Dev_SDK
include {solarpath}/bin.{minor}/osl,{solarpath}/bin.{minor},{solarpath}/lib.{minor},{solarpath}/pck.{minor},{filelistpath}/PackageSet,{filelistpath}/GeneratedPackage,{filelistpath}/Package,{instdir},{instdir}/ure/lib include {solarpath}/bin.{minor}/osl,{solarpath}/bin.{minor},{solarpath}/lib.{minor},{solarpath}/pck.{minor},{filelistpath}/PackageSet,{filelistpath}/GeneratedPackage,{filelistpath}/Package,{instdir},{instdir}/ure/lib
} }
} }
LibreOffice_Test
{
Settings
{
downloadname LibreOffice-Test_{packageversion}_{os}_install_{languages}
variables
{
PRODUCTNAME LibreOffice
PRODUCTVERSION @LIBO_VERSION_MAJOR@.@LIBO_VERSION_MINOR@
PRODUCTEXTENSION .@LIBO_VERSION_MICRO@.@LIBO_VERSION_PATCH@@LIBO_VERSION_SUFFIX@
POSTVERSIONEXTENSION TEST
BUNDLEIDENTIFIER @MACOSX_BUNDLE_IDENTIFIER@.Test
BRANDPACKAGEVERSION @LIBO_VERSION_MAJOR@.@LIBO_VERSION_MINOR@
PACKAGEVERSION @LIBO_VERSION_MAJOR@.@LIBO_VERSION_MINOR@.@LIBO_VERSION_MICRO@.@LIBO_VERSION_PATCH@@LIBO_VERSION_SUFFIX@
PACKAGEREVISION {buildid}
PACK_INSTALLED 1
DMG_VOLUMEEXTENSION TEST
DATABASENAME libreoffice40test
NO_README_IN_ROOTDIR 1
LICENSENAME LGPL
IGNOREDIRECTORYLAYER 1
NOVERSIONINDIRNAME 0
NOSPACEINDIRECTORYNAME 1
NOSHORTDIRECTORYNAMES 1
CHANGETARGETDIR 1
DONTUSESTARTMENUFOLDER 1
STARTCENTER_ADDFEATURE_URL http://extensions.libreoffice.org/
STARTCENTER_INFO_URL http://www.libreoffice.org/
STARTCENTER_TEMPLREP_URL http://templates.libreoffice.org/
DICT_REPO_URL http://extensions.libreoffice.org/dictionaries/
STARTCENTER_HIDE_EXTERNAL_LINKS 0
}
active 1
compression 5
script test
include {solarpath}/bin.{minor}/cppunit,{solarpath}/bin.{minor}/osl,{solarpath}/bin.{minor},{solarpath}/lib.{minor},{instdir}/ure/lib
}
}
LibreOffice_Dev_Test
{
Settings
{
downloadname LibreOfficeDev-Test_{packageversion}_{os}_install_{languages}
variables
{
PRODUCTNAME LibreOfficeDev
PRODUCTVERSION @LIBO_VERSION_MAJOR@.@LIBO_VERSION_MINOR@
PRODUCTEXTENSION .@LIBO_VERSION_MICRO@.@LIBO_VERSION_PATCH@@LIBO_VERSION_SUFFIX@
WINDOWSBASISROOTNAME LibreOfficeDev @LIBO_VERSION_MAJOR@
UNIXBASISROOTNAME libreofficedev@LIBO_VERSION_MAJOR@.@LIBO_VERSION_MINOR@
POSTVERSIONEXTENSION TEST
BUNDLEIDENTIFIER @MACOSX_BUNDLE_IDENTIFIER@.Test
BRANDPACKAGEVERSION @LIBO_VERSION_MAJOR@.@LIBO_VERSION_MINOR@
PACKAGEVERSION @LIBO_VERSION_MAJOR@.@LIBO_VERSION_MINOR@.@LIBO_VERSION_MICRO@.@LIBO_VERSION_PATCH@@LIBO_VERSION_SUFFIX@
PACKAGEREVISION {buildid}
BASISPACKAGEPREFIX lodevbasis
UREPACKAGEPREFIX libreofficedev
SOLSUREPACKAGEPREFIX libreofficedev
REGISTRYLAYERNAME LayerDev
DEVELOPMENTPRODUCT 1
PACK_INSTALLED 1
DMG_VOLUMEEXTENSION TEST
DATABASENAME libreoffice40devtest
NO_README_IN_ROOTDIR 1
LICENSENAME LGPL
IGNOREDIRECTORYLAYER 1
NOVERSIONINDIRNAME 0
NOSPACEINDIRECTORYNAME 1
NOSHORTDIRECTORYNAMES 1
CHANGETARGETDIR 1
DONTUSESTARTMENUFOLDER 1
STARTCENTER_ADDFEATURE_URL http://extensions.libreoffice.org/
STARTCENTER_INFO_URL http://www.libreoffice.org/
STARTCENTER_TEMPLREP_URL http://templates.libreoffice.org/
DICT_REPO_URL http://extensions.libreoffice.org/dictionaries/
STARTCENTER_HIDE_EXTERNAL_LINKS 0
}
active 1
compression 5
script test
include {solarpath}/bin.{minor}/cppunit,{solarpath}/bin.{minor}/osl,{solarpath}/bin.{minor},{solarpath}/lib.{minor},{instdir}/ure/lib
}
}
...@@ -12,7 +12,6 @@ LibreOffice unxlngi6.pro,unxmacxi.pro,unxsoli4.pro,unxsols4.pro,wntm ...@@ -12,7 +12,6 @@ LibreOffice unxlngi6.pro,unxmacxi.pro,unxsoli4.pro,unxsols4.pro,wntm
#LibreOffice_Dev unxlngi6.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxmacxi.pro,unxlngx6.pro en-US openofficedev #LibreOffice_Dev unxlngi6.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxmacxi.pro,unxlngx6.pro en-US openofficedev
LibreOffice_SDK unxlngi6.pro,unxmacxi.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxlngx6.pro en-US sdkoo LibreOffice_SDK unxlngi6.pro,unxmacxi.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxlngx6.pro en-US sdkoo
#LibreOffice_Dev_SDK unxlngi6.pro,unxmacxi.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxlngx6.pro en-US sdkoodev #LibreOffice_Dev_SDK unxlngi6.pro,unxmacxi.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxlngx6.pro en-US sdkoodev
LibreOffice_Test unxlngi6.pro,unxmacxi.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxlngx6.pro en-US test
LibreOfficeLanguagepack unxlngi6.pro,unxmacxi.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxlngx6.pro en-US|ar|as|ast|be|bg|bn|ca|ca-valencia|cs|da|de|dz|el|en-GB|eo|es|et|eu|fi|fr|ga|gl|gu|he|hi|hu|id|is|it|ja|ka|km|kn|ko|ku|lt|lv|mk|ml|mr|my|nb|nl|nn|oc|om|or|pa-IN|pl|pt|pt-BR|ro|ru|si|sk|sl|sr|sr-Latn|sv|ta|te|th|tr|ug|uk|uz|vi|zh-CN|zh-TW ooolanguagepack LibreOfficeLanguagepack unxlngi6.pro,unxmacxi.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxlngx6.pro en-US|ar|as|ast|be|bg|bn|ca|ca-valencia|cs|da|de|dz|el|en-GB|eo|es|et|eu|fi|fr|ga|gl|gu|he|hi|hu|id|is|it|ja|ka|km|kn|ko|ku|lt|lv|mk|ml|mr|my|nb|nl|nn|oc|om|or|pa-IN|pl|pt|pt-BR|ro|ru|si|sk|sl|sr|sr-Latn|sv|ta|te|th|tr|ug|uk|uz|vi|zh-CN|zh-TW ooolanguagepack
#LibreOfficeLanguagepack unxlngi6,unxsoli4,unxsols4,wntmsci12,unxmacxi de ooolanguagepack #LibreOfficeLanguagepack unxlngi6,unxsoli4,unxsols4,wntmsci12,unxmacxi de ooolanguagepack
#LibreOfficeDevLanguagepack unxlngi6.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxlngx6.pro,unxmacxi.pro ar|as|ast|bg|bn|ca|ca-valencia|cs|da|de|dz|el|en-GB|es|et|eu|fi|fr|ga|gl|gu|he|hi|hu|id|is|it|ja|km|kn|ko|lt|lv|mk|ml|mr|my|nb|nl|nn|oc|om|or|pa-IN|pl|pt|pt-BR|ru|si|sk|sl|sr|sr-Latn|sv|ta|te|th|tr|ug|uk|vi|zh-CN|zh-TW ooodevlanguagepack #LibreOfficeDevLanguagepack unxlngi6.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxlngx6.pro,unxmacxi.pro ar|as|ast|bg|bn|ca|ca-valencia|cs|da|de|dz|el|en-GB|es|et|eu|fi|fr|ga|gl|gu|he|hi|hu|id|is|it|ja|km|kn|ko|lt|lv|mk|ml|mr|my|nb|nl|nn|oc|om|or|pa-IN|pl|pt|pt-BR|ru|si|sk|sl|sr|sr-Latn|sv|ta|te|th|tr|ug|uk|vi|zh-CN|zh-TW ooodevlanguagepack
......
# -*- 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_InstallModule_InstallModule,scp2/smoketest))
$(eval $(call gb_InstallModule_add_scpfiles,scp2/smoketest,\
scp2/source/smoketest/smoketest \
))
# vim: set shiftwidth=4 tabstop=4 noexpandtab:
# -*- 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_InstallScript_InstallScript,test))
$(eval $(call gb_InstallScript_use_modules,test,\
scp2/smoketest \
))
# vim: set shiftwidth=4 tabstop=4 noexpandtab:
...@@ -26,12 +26,10 @@ $(eval $(call gb_Module_add_targets,scp2,\ ...@@ -26,12 +26,10 @@ $(eval $(call gb_Module_add_targets,scp2,\
InstallModule_onlineupdate \ InstallModule_onlineupdate \
InstallModule_ooo \ InstallModule_ooo \
InstallModule_python \ InstallModule_python \
InstallModule_smoketest \
InstallModule_ure \ InstallModule_ure \
InstallModule_writer \ InstallModule_writer \
InstallModule_xsltfilter \ InstallModule_xsltfilter \
InstallScript_setup_osl \ InstallScript_setup_osl \
InstallScript_test \
$(if $(filter ODK,$(BUILD_TYPE)), \ $(if $(filter ODK,$(BUILD_TYPE)), \
InstallModule_sdkoo \ InstallModule_sdkoo \
InstallScript_sdkoo \ InstallScript_sdkoo \
......
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-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/.
*/
#include "macros.inc"
Installation gid_Installation_Test
ProductName = "${PRODUCTNAME}";
ProductVersion = "${PRODUCTVERSION}";
ProductExtension = "${PRODUCTEXTENSION}";
#if defined WNT
DefaultDestPath = "<winprogpath>\%PRODUCTNAME";
#else
DefaultDestPath = "/opt/%PRODUCTNAME";
#endif
End
Module gid_Module_Root_Smoketest
Name = "smoketest";
Description = "smoketest";
PackageInfo = "packinfo_test.txt";
End
#ifndef MACOSX
Directory gid_Test_Dir_Brand_Root
ParentID = PREDEFINED_PROGDIR;
#ifdef WNT
HostName = "${PRODUCTNAME} ${BRANDPACKAGEVERSION}";
#else
HostName = ".";
#endif
Styles = (OFFICEDIRECTORY,ISINSTALLLOCATION,CREATE);
End
#endif
#if MACOSX
Directory gid_Test_Dir_Bundle
ParentID = PD_PROGDIR;
HostName = "%PRODUCTNAME.app";
LangPackHostName = "%PRODUCTNAME Language Pack.app";
End
Directory gid_Test_Dir_Bundle_Contents
ParentID = gid_Test_Dir_Bundle;
HostName = "Contents";
Styles = (OFFICEDIRECTORY);
End
#endif
Directory gid_Test_Brand_Dir_Program
#if defined MACOSX
ParentID = gid_Test_Dir_Bundle_Contents;
DosName = "MacOS";
#else
ParentID = gid_Test_Dir_Brand_Root;
DosName = "program";
#endif
End
Directory gid_Test_Brand_Dir_Share
#if defined MACOSX
ParentID = gid_Test_Dir_Bundle_Contents;
#else
ParentID = gid_Test_Dir_Brand_Root;
#endif
DosName = "share";
End
Directory gid_Test_Brand_Dir_Share_Test
ParentID = gid_Test_Brand_Dir_Share;
DosName = "test";
End
File gid_Test_File_Txt_License
TXT_FILE_BODY;
Dir = gid_Test_Brand_Dir_Share_Test;
#ifdef UNX
Name = "LICENSE";
#endif
#ifdef WNT
Name = "license.txt";
#endif
Styles = (PACKED, SCPZIP_REPLACE);
End
File gid_Test_File_Txt_Readme
TXT_FILE_BODY;
Dir = gid_Test_Brand_Dir_Share_Test;
#ifdef UNX
Name = "README_en-US";
#endif
#ifdef WNT
Name = "readme_en-US.txt";
#endif
Styles = (PACKED, SCPZIP_REPLACE);
End
File gid_Test_File_Misc_Smoketestdoc
TXT_FILE_BODY;
Dir = gid_Test_Brand_Dir_Share_Test;
Name = "smoketestdoc.sxw";
Styles = (PACKED, SCPZIP_REPLACE);
End
File gid_Test_File_Bin_LOSmoketest
BIN_FILE_BODY;
Dir = gid_Test_Brand_Dir_Program;
Name = "losmoketest";
Styles = (PACKED);
End
File gid_Test_File_Exe_Cppunittester
BIN_FILE_BODY;
Dir = gid_Test_Brand_Dir_Program;
Name = "cppunittester";
Styles = (PACKED);
End
File gid_Test_File_Lib_Cppunit
TXT_FILE_BODY;
Styles = (PACKED);
Dir = gid_Test_Brand_Dir_Program;
#ifdef UNX
Name = STRING(CONCAT3(libcppunit-1.13,UNXSUFFIX,.0));
#endif
End
File gid_Test_File_Lib_Smoketest
TXT_FILE_BODY;
Styles = (PACKED);
Dir = gid_Test_Brand_Dir_Program;
#ifdef UNX
Name = STRING(CONCAT2(libsmoketest,UNXSUFFIX));
#endif
End
File gid_Test_File_Lib_Test
TXT_FILE_BODY;
Styles = (PACKED);
Dir = gid_Test_Brand_Dir_Program;
#ifdef UNX
Name = STRING(CONCAT2(libtest,UNXSUFFIX));
#endif
End
File gid_Test_File_Lib_Unotest
TXT_FILE_BODY;
Styles = (PACKED);
Dir = gid_Test_Brand_Dir_Program;
#ifdef UNX
Name = STRING(CONCAT2(libunotest,UNXSUFFIX));
#endif
End
File gid_Test_File_Lib_Unoexceptionprotector
TXT_FILE_BODY;
Styles = (PACKED);
Dir = gid_Test_Brand_Dir_Program;
#ifdef UNX
Name = STRING(CONCAT2(unoexceptionprotector,UNXSUFFIX));
#endif
End
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -25,7 +25,6 @@ $(eval $(call gb_Package_add_file,setup_native/packinfo,bin/packinfo_office.txt, ...@@ -25,7 +25,6 @@ $(eval $(call gb_Package_add_file,setup_native/packinfo,bin/packinfo_office.txt,
$(eval $(call gb_Package_add_file,setup_native/packinfo,bin/packinfo_office_help.txt,packinfo_office_help.txt)) $(eval $(call gb_Package_add_file,setup_native/packinfo,bin/packinfo_office_help.txt,packinfo_office_help.txt))
$(eval $(call gb_Package_add_file,setup_native/packinfo,bin/packinfo_office_lang.txt,packinfo_office_lang.txt)) $(eval $(call gb_Package_add_file,setup_native/packinfo,bin/packinfo_office_lang.txt,packinfo_office_lang.txt))
$(eval $(call gb_Package_add_file,setup_native/packinfo,bin/packinfo_sdkoo.txt,packinfo_sdkoo.txt)) $(eval $(call gb_Package_add_file,setup_native/packinfo,bin/packinfo_sdkoo.txt,packinfo_sdkoo.txt))
$(eval $(call gb_Package_add_file,setup_native/packinfo,bin/packinfo_test.txt,packinfo_test.txt))
$(eval $(call gb_Package_add_file,setup_native/packinfo,bin/packinfo_ure.txt,packinfo_ure.txt)) $(eval $(call gb_Package_add_file,setup_native/packinfo,bin/packinfo_ure.txt,packinfo_ure.txt))
$(eval $(call gb_Package_add_file,setup_native/packinfo,bin/shellscripts.txt,shellscripts.txt)) $(eval $(call gb_Package_add_file,setup_native/packinfo,bin/shellscripts.txt,shellscripts.txt))
$(eval $(call gb_Package_add_file,setup_native/packinfo,bin/shellscripts_core01.txt,shellscripts_core01.txt)) $(eval $(call gb_Package_add_file,setup_native/packinfo,bin/shellscripts_core01.txt,shellscripts_core01.txt))
......
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-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/.
#
# This file incorporates work covered by the following license notice:
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed
# with this work for additional information regarding copyright
# ownership. The ASF licenses this file to you under the Apache
# License, Version 2.0 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
#
Start
module = "gid_Module_Root_Smoketest"
solarispackagename = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-smoketest"
solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTPRODUCTVERSION-core01, SUNWbtool (Name="CCS tools bundled with SunOS"), SUNWxcu4 (Name="XCU4 Utilities")"
packagename = "%BASISPACKAGEPREFIX%PRODUCTVERSION-smoketest"
freebsdrequires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core01"
requires = "%BASISPACKAGEPREFIX%PRODUCTVERSION-core01 %PACKAGEVERSION %PACKAGEVERSION"
copyright = "2012 The Document Foundation"
solariscopyright = "solariscopyrightfile"
vendor = "The Document Foundation"
description = "LibreOffice %PRODUCTVERSION Smoketest"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
End
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -14,8 +14,6 @@ ifeq ($(CROSS_COMPILING),) ...@@ -14,8 +14,6 @@ ifeq ($(CROSS_COMPILING),)
$(eval $(call gb_Module_add_targets,smoketest,\ $(eval $(call gb_Module_add_targets,smoketest,\
Library_smoketest \ Library_smoketest \
Package_losmoketest \
Package_smoketestdoc \
Zip_smoketestdoc \ Zip_smoketestdoc \
)) ))
......
# -*- 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:
# -*- 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:
#!/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()
#!/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
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).
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment