Building Windows Version of OpenOffice.org on Linux Madness, or The Way? Jan Holesovsky.

Slides:



Advertisements
Similar presentations
PROJECT IN DISTRIBUTED SYSTEMS IPERF FOR ANDROID Developers: Shir Degani, Yuval Degani Supervisors: Prof. Roy Friedman, Alex Kogan.
Advertisements

Incremental Network Programming for Wireless Sensors NEST Retreat June 3 rd, 2004 Jaein Jeong UC Berkeley, EECS Introduction Background – Mechanisms of.
Author: Texas Instruments ®, Sitara™ ARM ® Processors Building Blocks for PRU Development Module 2 PRU Firmware Development This session covers how to.
SM3121 Software Technology Mark Green School of Creative Media.
Introduction to The Linaro Toolchain Embedded Processors Training Multicore Software Applications Literature Number: SPRPXXX 1.
1 Introduction to Tool chains. 2 Tool chain for the Sitara Family (but it is true for other ARM based devices as well) A tool chain is a collection of.
September 2008 IT Software Development Guide.
Version Control with Subversion. What is Version Control Good For? Maintaining project/file history - so you don’t have to worry about it Managing collaboration.
Erlware For Managing Distribution and Build Erlang User Conference 2007.
SharePoint 2010 Development Environment A Guide to Setup SharePoint 2010 Development Environment on Windows 7 Machine.
ANDROID Presented By Mastan Vali.SK. © artesis 2008 | 2 1. Introduction 2. Platform 3. Software development 4. Advantages Main topics.
C O M P U T E R G R A P H I C S Jie chen Computer graphic -- OpenGL Howto.
CSC 215 : Procedural Programming with C C Compilers.
Software Development Software Testing. Testing Definitions There are many tests going under various names. The following is a general list to get a feel.
Mosflm & iMosflm (1) Some numbers... (2) Mosflm (3) iMosflm.
Developing C/C++ applications with the Eclipse CDT David Gallardo.
CS 450: COMPUTER GRAPHICS INSTALLING GLUT AND GLEW SPRING 2015 DR. MICHAEL J. REALE.
Block1 Wrapping Your Nugget Around Distributed Processing.
Fundamental Programming: Fundamental Programming K.Chinnasarn, Ph.D.
Setting up Cygwin Computer Organization I 1 May 2010 ©2010 McQuain Cygwin: getting the setup tool Free, almost complete UNIX environment emulation.
Linux Operations and Administration
Build Tools 1. Building a program for a large project is usually managed by a build tool that controls the various steps involved. These steps may include:
Intoduction to Andriod studio Environment With a hello world program.
Predrag Buncic (CERN/PH-SFT) Software Packaging: Can Virtualization help?
Course 03 Basic Concepts assist. eng. Jánó Rajmond, PhD
UNIX U.Y: 1435/1436 H Operating System Concept. What is an Operating System?  The operating system (OS) is the program which starts up when you turn.
 CSC 215 : Procedural Programming with C C Compilers.
KDE4 (libs, apps) on windows. What? ● KDElibs ● KDE apps ● Definitely not the whole desktop (even if we're going to have infinite resources :) Why? ●
Installing Windows 7 Lesson 2.
Migrating to ASP.NET Core Challenges & Opportunities
Cygwin: getting the setup tool
Modular Building splitting the build
Cameron Blashka | Informer Implementation Specialist
CSC 215 : Procedural Programming with C
How to Program.
Development Environment
CSC227: Operating Systems
Operating System Structure
How to Start Programming in Linux Environment
Introduction to Web Assembly
Software Packaging and Releasing
LCGAA nightlies infrastructure
Microsoft Connect /23/2018 5:27 PM
CDT Build/Run/Debug in Container
CernVM Status Report Predrag Buncic (CERN/PH-SFT).
Introduction to Silverlight
How to Fix Secure Connection Error in WordPress?.
slides borrowed and adapted from Alex Mariakis and CSE 390a
X in [Integration, Delivery, Deployment]
Lab 10 Instructions You can use g++ on build server, visual studio on local machine or your preferred C++ IDE. Important Note: For your grade, please show.
CSE 390a Lecture 1 introduction to Linux/Unix environment
Using Visual Studio and VS Code for Embedded C/C++ Development
Chapter 2: The Linux System Part 1
OPS235 PACKAGE MANAGEMENT
CSE 390a Lecture 1 introduction to Linux/Unix environment
Lecture Topics: 11/1 General Operating System Concepts Processes
Header files.
1/14/2019 3:57 AM © 2004 Microsoft Corporation. All rights reserved.
JENKINS TIPS Ideas for making your life with Jenkins easier
Download and Installation of code::blocks
How to Improve Releasing Efficiency via i18N/L10n Test Automation.
Discussing an OVS/OVN Split
MAPREDUCE TYPES, FORMATS AND FEATURES
Cygwin: getting the setup tool
Preparation for Assignment 2
Carthage ios 8 onwards Dependency manager that streamlines the process of integrating the libraries into the project.
Consult America Technology Consulting Services
February 11-13, 2019 Raleigh, NC.
Running C# in the browser
Map Reduce, Types, Formats and Features
Presentation transcript:

Building Windows Version of OpenOffice.org on Linux Madness, or The Way? Jan Holesovsky

© Novell, Inc. All rights reserved. 2 Content Motivation Possible speedups of the compilation The cross-compilation Did it work?

© Novell, Inc. All rights reserved. 3 Motivation On Linux, we can build OOo in ~30 minutes! – Yes, from scratch – Used to be ~25, but regressed recently thanks to changes in helpcontent2 :-( – On Win32 it is much more Windows builds are necessary – Lots of users... Developers don't need all the stuff – The packagers might differ in some needs though

© Novell, Inc. All rights reserved. 4 The 30 Minutes Linux Build Big, fat machine – 8 cores > Allows heavy parallelism – 8G memory > The build nearly does not have to touch disk ;-) Building less stuff – --with-system-* Tools for faster compilation – icecream > instsetoo_native$ build –all -P8 -- -P10 – Alternatively ccache

How To Apply Those To Win32?

© Novell, Inc. All rights reserved. 6 Big, Fat Machine More memory – Memory is cheap these days – But check that your Win32 edition can use it ;-) > Cygwin eats some of the performance – Emulated POSIX

© Novell, Inc. All rights reserved. 7 Building Less Stuff Divide et Impera! – Split build > It's not necessary to build everything over and over again if you want to hack on eg. Writer > openSUSE 11.1 uses that – Own release cycle for the 3 rd party stuff > Updated sporadically, but has to be built over and over again > “solver” used to help a bit, but: » Huge download size » Incompatible among compilers – Own release cycle for helper tools > dmake, transex3, makedepend, registry-related,... > Would help cross-compilation as well

© Novell, Inc. All rights reserved. 8 The Tools: Precompiled Headers Feature of the compilers – MSVC has it > In OOo: --enable-pch given to./configure > Gcc has it as well – Header files are compiled to an interim format – For optimal use, all the headers have to be collected in one big header file; in OOo it is “precompiled_.hxx” – – Build of Writer: 43 minutes

© Novell, Inc. All rights reserved. 9 The Tools: ccache Caches output of the previous compilations – Makes the 1 st build a bit slower, next one is faster – The c/c++ file is preprocessed, the content of the file + the command line is hashed, and > If the hash already exists in the cache, take the resulting.o, stdout and stderr and use it as if it was compiled > If it does not, pass it to the compiler, write.o, stdout and stderr to the cache, and write the output as if the compiler itself did it – Originally for gcc, ported for MSVC in Cygwin >

© Novell, Inc. All rights reserved The Tools: Icecream Sends tasks for compilation to another machines – Similarly to ccache, the source is preprocessed, and compiled, or sent for compilation somewhere else > Has a scheduler that decides where to send the jobs > Sends also the compiler to the remote hosts so that it is ensured that it is 100% same as on the original machine – Would be an ideal tool for the cross-compilation > The task could be started on the Win32 machine, but distributed to Linux machines running MSVC in Wine! > No changes needed for the OOo build system, just set CC and CXX to icecream – Unfortunately, the attempt to port it for MSVC failed so far :-( –

More Fancy Stuff

© Novell, Inc. All rights reserved Real Cross-compilation (1) When I gave up on the Icecream port, why not try to tweak the OOo build system? ;-) – Copied MSVC, platform SDK, etc. to the Wine installation – Took 'solver' from Win32 and copied it to a tree compiled on Linux – Edited winenv.set.sh > CC="wine \"c:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\bin\\cl.exe\"" > Similarly other stuff » Location of the includes, solver, COMPATH, SHELL, SOLARVER,... > But SOLARENV must point to the Linux solenv! » To use the 'native' tools

© Novell, Inc. All rights reserved Real Cross-compilation (2) – Edited several makefile.mk's > Depending on if the tool is used in Wine or not, it has to use colons, or semicolons to delimit the includes » COLON_HACK := : $(SRS)$/shells.srs: $(subst,z$(COLON_HACK), $(SOLARINCDIR)) \ $/svx$/globlmn.hrc – Edited solenv/inc/unitools.mk and solenv/inc/wntmsci11.mk > To use the Win32 tools in Wine, or native (Linux) tools for those Ooo- specific – Successfully built Writer!, but with limitations > Cannot build with debug » > Cannot sign the dlls

© Novell, Inc. All rights reserved The Crucial Question: Does It Help? Unfortunately no :-( – Native MSVC build time of sw: 78 minutes – Build time of sw with MSVC in Wine: 300 minutes > 3.8 times more :-( > Even with wineserver still running – [for comparison, PCH-enabled: 43 minutes!]

© Novell, Inc. All rights reserved Another Possibility: MinGW A gcc for Windows MinGW port of OOo is still in progress – Unfortunately still does build out-of-the-box – Provided several patches, and got sw to compile > Took 126 minutes, 1.6 times more than MSVC > No idea about run-time, parts still do not compile to get a full install The plus side is that it's much easier to use it for cross-compilation – It's gcc, after all ;-) –

Conclusion

© Novell, Inc. All rights reserved Conclusion Without profiling & optimizing Wine, it does not make sense to use MSVC on Linux – Porting icecream to handle MSVC is viable – PCH is a clear winner, should be enabled by default! Split build would help tremendously – Helper tools as separate packages with an own release cycle – 3 rd party libraries/tools as a separate package with an own release cycle > Viable thanks to the current shorter OOo release cycle > Would be even possible to provide binary versions – Separate l10n-related build tasks Big potential of MinGW

© Novell, Inc. All rights reserved Questions ?