xpra icon
Bug tracker and wiki

Version 7 (modified by Antoine Martin, 5 years ago) (diff)

--

Building Fedora / Enterprise Linux

Overview

There are two types of repo trees that need to be created: build-dependencies and runtime-dependencies. Packages that are in the build-dependency category should only be installed in a mock environment in order to build xpra.

Goals

  • Document build process
  • Make Build process reproducible
  • Build in a clean chroot (this is done with mock)

Mock Config

Use the default config provided by mock: epel-6-x86_64 or fedora-20-x86_64

Add a local repository stanza mock config that is used for build dependencies

[local]
name=local
baseurl=http://pyther.net/xpra-build/el6/x86_64/
#baseurl=file///home/pyther/xpra-build/el6/x86_64/
cost=2000
enabled=1

Creating a Repository

$ createrepo /home/pyther/xpra-build/el6/x86_64/ 
Spawning worker 0 with 16 pkgs
Workers Finished
Gathering worker results

Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

Packages

yasm

  • version that ships with el5 is too old
  • required to build x264, ffmpeg, and libvpx
  • spec taken from EPEL6

x264

  • package structure based on rpmfusion's x264 package
  • configures build options needed for xpra

ffmpeg

  • package structure based on rpmfusion's ffmpeg package
  • configures build options needed for xpra

libvpx

  • required for el5, el6
  • fedora 19 and 20 ship libvpx

libwebp

  • required for el5, el6
  • fedora 19 and 20 ship libvpx

Cython

  • required for el5, el6 - version in epel is too old
  • fedora ships with new enough version

libfakeXinerama

xorg-x11-drv-dummy

EL5

Enterprise Linux 5 (RHEL / Centos)

Build SRPMS: http://pyther.net/xpra-build/el5/src/
Run-time SRPMS: http://pyther.net/xpra/el5/src/

Build Dependencies (we need to build)'

  • yasm
  • x264
  • ffmpeg (depends on x264)
  • libvpx
  • libwebp
  • Cython


Run-time Dependencies (we need to build)'

  • libfakeXinerama
  • netifaces

Building

# xpra build depends
mock -r epel-5-x86_64 --rebuild yasm-1.2.0-1.el6.src.rpm --resultdir  ~/build-el5/ -v
mock -r epel-5-x86_64 --rebuild x264-20140612-1.el6.src.rpm --resultdir  ~/build-el5/ -v
mock -r epel-5-x86_64 --rebuild ffmpeg-2.2.3-1.el6.src.rpm --resultdir  ~/build-el5/ -v
mock -r epel-5-x86_64 --rebuild libvpx-1.3.0-1.el6.src.rpm --resultdir  ~/build-el5/ -v
mock -r epel-5-x86_64 --rebuild libwebp-0.4.0-1.el6.src.rpm --resultdir  ~/build-el5/ -v
mock -r epel-5-x86_64 --rebuild Cython-0.20.1-1.el6.src.rpm --resultdir  ~/build-el5/ -v

# xpra run-time dependencies
mock -r epel-5-x86_64 --rebuild libfakeXinerama-0.1.0-3.el6.src.rpm --resultdir  ~/build-el5/ -v
mock -r epel-5-x86_64 --rebuild netifaces-0.8-2.el6.src.rpm --resultdir  ~/build-el5/ -v

mock -r epel-5-x86_64 --rebuild xpra-0.13.6-0.el6.src.rpm --resultdir  ~/build-el5/ -v

To generate repodata for the el5 repo on el6 use createrepo --checksum sha x86_64/

EL6

Enterprise Linux 6 (RHEL / Centos)

Bulid SRPMS: http://pyther.net/xpra-build/el6/src/
Run-time SRPMS: http://pyther.net/xpra/el6/src/

Build Dependencies (we need to build)'

  • x264
  • ffmpeg (depends on x264)
  • libvpx
  • libwebp
  • Cython


Run-time Dependencies (we need to build)'

  • libfakeXinerama
  • python-lz4
  • netifaces
  • xorg-x11-drv-dummy


Building

# xpra build depends
mock -r epel-6-x86_64 --rebuild x264-20140612-1.el6.src.rpm --resultdir  ~/build-el6/ -v
mock -r epel-6-x86_64 --rebuild ffmpeg-2.2.3-1.el6.src.rpm --resultdir  ~/build-el6/ -v
mock -r epel-6-x86_64 --rebuild libvpx-1.3.0-1.el6.src.rpm --resultdir  ~/build-el6/ -v
mock -r epel-6-x86_64 --rebuild libwebp-0.4.0-1.el6.src.rpm --resultdir  ~/build-el6/ -v
mock -r epel-6-x86_64 --rebuild Cython-0.20.1-1.el6.src.rpm --resultdir  ~/build-el6/ -v

# xpra run-time dependencies 
mock -r epel-6-x86_64 --rebuild libfakeXinerama-0.1.0-3.el6.src.rpm --resultdir  ~/build-el6/ -v
mock -r epel-6-x86_64 --rebuild python-lz4-0.6.1-0.el6.src.rpm --resultdir  ~/build-el6/ -v
mock -r epel-6-x86_64 --rebuild netifaces-0.8-2.src.rpm --resultdir  ~/build-el6/ -v
mock -r epel-6-x86_64 --rebuild xorg-x11-drv-dummy-0.3.6-2.xpra1.el6.src.rpm --resultdir  ~/build-el6/ -v
mock -r epel-6-x86_64 --rebuild xpra-0.13.6-0.el6.src.rpm --resultdir  ~/build-el6/ -v

Fedora 19 / 20

Bulid SRPMS: http://pyther.net/xpra-build/f20/src/
Run-time SRPMS: http://pyther.net/xpra/f20/src/

libvpx, libwebp, and Cython are build dependencies but they are provided by upstream

Build Dependencies (we need to build)

  • x264
  • ffmpeg (depends on x264)


Run-time Dependencies (we need to build)

  • libfakeXinerama
  • python-lz4
  • netifaces
  • xorg-x11-drv-dummy 0.3.6-11


Building

# xpra build depends
mock -r fedora-20-x86_64 --rebuild x264-20140612-1.el6.src.rpm --resultdir  ~/build-f20/
mock -r fedora-20-x86_64 --rebuild ffmpeg-2.2.3-1.el6.src.rpm --resultdir  ~/build-f20/

# xpra run-time dependencies
mock -r fedora-20-x86_64 --rebuild libfakeXinerama-0.1.0-3.el6.src.rpm --resultdir  ~/build-f20/
mock -r fedora-20-x86_64 --rebuild python-lz4-0.6.1-0.el6.src.rpm --resultdir  ~/build-f20/
mock -r fedora-20-x86_64 --rebuild netifaces-0.8-2.src.rpm --resultdir  ~/build-f20/
mock -r fedora-20-x86_64 --rebuild xorg-x11-drv-dummy-0.3.6-11.xpra1.el6.src.rpm --resultdir  ~/build-f20/