Difference between revisions of "User:Dzonatas Sol/Snowglobe"

From Second Life Wiki
Jump to: navigation, search
(Sources Setup)
m (Text replacement - "hg.secondlife.com" to "bitbucket.org/lindenlab")
 
(18 intermediate revisions by 2 users not shown)
Line 3: Line 3:
 
=== Base 32 bit chroot setup ===
 
=== Base 32 bit chroot setup ===
  
On Debian, bootstrap your 32bit chroot:
+
Note: If you have a separate /var partition it will need to be greater than 3.7GB to complete the build.
  
<code>$ sudo debootstrap --arch i386 lenny /var/chroot/lenny-ia32 http://ftp.debian.org/debian/</code>
+
On Debian, bootstrap "squeeze" for your 32bit chroot:
  
Or, for sid:
+
<code>$ sudo debootstrap --arch i386 squeeze /var/chroot/squeeze-ia32 http://ftp.debian.org/debian/</code>
  
<code>$ sudo debootstrap --arch i386 sid /var/chroot/sid-ia32 http://ftp.debian.org/debian/</code>
+
Once done, make sure you have your schroot entry set properly, mine looks like this in <code>/etc/schroot/schroot.conf</code>
  
Once done, make sure you have your schroot entry set properly, mine looks like this
+
  [squeeze]
 
+
  description=Debian squeeze (stable)
  [lenny]
+
  location=/var/chroot/squeeze-ia32
  description=Debian lenny (stable)
+
  location=/var/chroot/lenny-ia32
+
 
  priority=3
 
  priority=3
 
  groups=dzonatas,root
 
  groups=dzonatas,root
Line 25: Line 23:
 
  run-exec-scripts=true
 
  run-exec-scripts=true
  
[sid]
+
Now you can log into your chroot as root to setup the base packages:
description=Debian sid (unstable)
+
location=/var/chroot/sid-ia32
+
priority=3
+
groups=dzonatas,root
+
root-groups=root
+
aliases=unstable,default,ia32
+
personality=linux32
+
type=plain
+
run-setup-scripts=true
+
run-exec-scripts=true
+
 
+
Now you can log into your chroot to setup the base packages:
+
 
+
<code>$ sudo linux32 schroot -c lenny -u root</code>
+
 
+
Or, for sid:
+
  
<code>$ sudo linux32 schroot -c sid -u root</code>
+
<code>$ sudo linux32 schroot -c squeeze -u root</code>
  
 
Initialize the packages:
 
Initialize the packages:
  
<br/><code>$ apt-get update</code>
+
<code>$ apt-get update</code>
  
 
Install these packages:
 
Install these packages:
  
 
<code>$ apt-get install python g++ subversion unzip bzip2 libx11-dev libxrender-dev libgl1-mesa-dev libxft-dev libxrandr-dev</code>
 
<code>$ apt-get install python g++ subversion unzip bzip2 libx11-dev libxrender-dev libgl1-mesa-dev libxft-dev libxrandr-dev</code>
<code>  libxcursor-dev libglu-dev libsdl-dev libgtk2.0-bin</code>
+
<code>  libxcursor-dev libglu-dev libsdl-dev libgtk2.0-bin make cmake bison flex git mercurial</code>
  
For sid, you can just install cmake:
+
Install [[Autobuild]]:
  
<code>apt-get install cmake</code>
+
<code>$ cd /tmp && hg clone http://bitbucket.org/lindenlab/autobuild && cd autobuild && python setup.py install</code>
 
+
For lenny, you have to modify <code>/etc/apt/sources.list</code> to insert squeeze into the list in order to get version 2.8+. It should look like:
+
 
+
deb http://ftp.debian.org/debian lenny main
+
deb http://ftp.debian.org/debian squeeze main
+
 
+
Then you can do:
+
 
+
<code>$ apt-get install cmake</code>
+
  
 
At this point, you can log out of root:
 
At this point, you can log out of root:
Line 77: Line 50:
 
Login to your chroot as a regular user:
 
Login to your chroot as a regular user:
  
$ schroot -c lenny
+
<code>$ schroot -c squeeze</code>
 
+
Or, for sid:
+
 
+
$ schroot -c sid
+
  
 
We can use the <code>/tmp</code> directory for this example, and download the sources.
 
We can use the <code>/tmp</code> directory for this example, and download the sources.
  
 
<code>$ cd /tmp</code><br/>
 
<code>$ cd /tmp</code><br/>
<code>$ svn export https://svn.secondlife.com/svn/linden/projects/2010/snowglobe/trunk snowglobe</code><br/>
+
<code>$ hg clone http://bitbucket.org/lindenlab/viewer-development</code>
<code>$ cd snowglobe</code><br/>
+
<code>$ ./scripts/public_fetch_tarballs.py
+
  
 
=== Run the Compile ===
 
=== Run the Compile ===
  
<code>$ cd indra</code><br/>
+
<code>$ cd viewer-development</code><br/>
<code>$ ./develop.py</code><br/>
+
<code>$ autobuild build -c OpenSourceRelWithDebInfo</code>
<code>$ cd viewer-linux-i686-relwithdebinfo</code><br/>
+
<code>$ make</code><br/>
+
 
+
After that completes, you should have it all ready for a package in the <code>newview/packaged</code> directory. Copy that directory where you would normally want to execute it from (see YOURBUILTSNOWGLOBEDIR below).
+
 
+
== Snowglobe 32 bit Compatibility on Debian Lenny 64 ==
+
 
+
To prevent assertion failures with the 32 bit pre-compiled libs included above, perform these steps:
+
 
+
<code>$ mkdir /tmp/extralibs</code><br/>
+
<code>$ wget http://ftp.us.debian.org/debian/pool/main/g/gdbm/libgdbm3_1.8.3-3_i386.deb</code><br/>
+
<code>$ wget http://ftp.us.debian.org/debian/pool/main/t/tcp-wrappers/libwrap0_7.6.q-16_i386.deb</code><br/>
+
<code>$ dpkg -x libgdbm3_1.8.3-3_i386.deb /tmp/extralibs</code><br/>
+
<code>$ dpkg -x libwrap0_7.6.q-16_i386.deb /tmp/extralibs</code><br/>
+
<code>$ cd YOURBUILTSNOWGLOBEDIR</code><br/>
+
<code>$ cp /tmp/extralibs/lib/* lib</code><br/>
+
<code>$ cp /tmp/extralibs/usr/lib/* lib</code><br/>
+
 
+
Replace the word YOURBUILTSNOWGLOBEDIR with your final installed/packaged directory (the one that looks like newview/packaged after a successful build and wherever you copied it to).
+
  
32 bit Snowglobe 1.4+/2.0+ binaries then work on Debian Lenny 64
+
After that completes, you should have it all ready in the <code>build-linux-i686/newview/packaged</code> directory. You can zip, tar, copy, etc that directory as needed to run or package your viewer.
  
 
== Standalone 64 bit Compile: Debian Lenny/Squeeze AMD 64 ==
 
== Standalone 64 bit Compile: Debian Lenny/Squeeze AMD 64 ==

Latest revision as of 09:13, 1 May 2015

Step-by-Step 32bit Chroot Compile

Base 32 bit chroot setup

Note: If you have a separate /var partition it will need to be greater than 3.7GB to complete the build.

On Debian, bootstrap "squeeze" for your 32bit chroot:

$ sudo debootstrap --arch i386 squeeze /var/chroot/squeeze-ia32 http://ftp.debian.org/debian/

Once done, make sure you have your schroot entry set properly, mine looks like this in /etc/schroot/schroot.conf

[squeeze]
description=Debian squeeze (stable)
location=/var/chroot/squeeze-ia32
priority=3
groups=dzonatas,root
root-groups=root
aliases=stable,ia32
personality=linux32
type=plain
run-setup-scripts=true
run-exec-scripts=true

Now you can log into your chroot as root to setup the base packages:

$ sudo linux32 schroot -c squeeze -u root

Initialize the packages:

$ apt-get update

Install these packages:

$ apt-get install python g++ subversion unzip bzip2 libx11-dev libxrender-dev libgl1-mesa-dev libxft-dev libxrandr-dev libxcursor-dev libglu-dev libsdl-dev libgtk2.0-bin make cmake bison flex git mercurial

Install Autobuild:

$ cd /tmp && hg clone http://bitbucket.org/lindenlab/autobuild && cd autobuild && python setup.py install

At this point, you can log out of root:

$ exit

The packages are setup.

Sources Setup

Login to your chroot as a regular user:

$ schroot -c squeeze

We can use the /tmp directory for this example, and download the sources.

$ cd /tmp
$ hg clone http://bitbucket.org/lindenlab/viewer-development

Run the Compile

$ cd viewer-development
$ autobuild build -c OpenSourceRelWithDebInfo

After that completes, you should have it all ready in the build-linux-i686/newview/packaged directory. You can zip, tar, copy, etc that directory as needed to run or package your viewer.

Standalone 64 bit Compile: Debian Lenny/Squeeze AMD 64

Here are my notes about the compilation experience:

Lenny comes with cmake 2.6.0, but the experimental version is required:

sudo apt-get install -t sid cmake

Specific cmake builds wouldn't be needed if an universal binary was used, instead.

Downloaded and unpacked Snowglobe source (1.2.4.3008). Not gonna worry about git/hg/svn matters for this annotation.

Downloaded related files as specified in doc/asset_urls.txt: MD5, ART, LIBS_LINUXI386 (see above 32bit compile)

$ cd indra
$ ./develop.py --standalone -m64 configure
$ cd viewer-linux-x86_64-relwithdebinfo
$ make secondlife-bin

Issues:

  • SNOW-240 At this time there is no jsoncpp debian package, so configure fails on this. Downloaded and compiled from sources noted in jira issue. Copied include files to /usr/local/include and libs to /usr/local/lib for temporary fix.
  • SNOW-285 build error: llqtwebkit.h: No such file or directory -- Despite this being a dependency, it should have made the configure fail like above in SNOW-240. The configure failure message could point to a wiki page to resolve the dependency (like an extra deb package for Debian).
  • Somewhere in the attempts to build llqtwebkit, the /usr/lib/libGL.so file got deleted. I can pinpoint here because other programs worked (X, wine, monovida, etc) up until that moment. Very strange for that to happen, yet not totally unexpected (from other people's experience with qt-webkit). The older NVidia drivers that have Xgl support didn't have a deb package, so qt-webkit thought it could overwrite the GL files. Blind installs, like this issue, is exactly what the Debian-Way tries to avoid. I eventually avoided the llqtwebkit build entirely and just used the pre-built 32bit version for now. These plugins could be downloaded by a debian package separate from this build since it really isn't required to build and run secondlife-bin (thanks to LLMediaPlugin work).
  • Upgrade to NVidia 190.42 drivers the Debian-Way.

With the above issues resolved, you can install the built files. Normally, a "make package" would package them for you, yet since this is a "standalone" version this means it is assumed some pieces that were normally put into the package are already installed somewhere else rather than being a static build with secondlife-bin. The "make package" works if you built the plugins.