Building binary packages

From GeopsyWiki
Jump to navigation Jump to search


In /etc/make.conf


Building crossdev environment for MINGW-32, first install crossdev package

 emerge -av crossdev

Under hardened profile mingw doesn't get compiled, hence switch to default profile before building

 eselect profile set 1
 source /etc/profile

Build MINGW-32 with the latest releases

 crossdev -t i686-mingw32 -P -v

Restore Hardened profile

 eselect profile set 7
 source /etc/profile

Mac OS X

Until now it has not been possible to install a building environment for Mac OS X under Linux. If you have suggestions, they are pretty welcome. Hence a Mac Book pro have been converted to a Mac server (true Mac server do not exist any longer). In fact, two Mac Book pro act as servers: one under the most recent OS (at the time of writing, Mountain Lion, and the other running Snow Leopard to provide binary packages for old OS (Tiger, Leopard and Snow Leopard).

New OS releases

Apple is producing a new major release approximately every year. The new release name must be added at several location inside the building environment. Line numbers are approximative. It may change in the future.

  • include/
    • Add in switch at line 7
  • main.cpp@selfcompress:
    • Add in enum at line 166
    • Add in if at line 179
    • Add in switch at line 236
    • Add in switch at line 311
    • Add in switch at line 347
    • Add in help message at line 443
  • share/selfuncompress@selfcompress:
    • Build selfuncompress-mac-x86-XXX executable under new platform and include it in selfcompress share files.
  • Update building tools in /usr/local/
  • Add in CoreApplicationPrivate::platform()
  • Add in CoreApplicationPrivate::systemInfo()


'pbuilder' is no longer available in gentoo portage. Are there any other solutions?

pbuilder setup

These comments are made on a gentoo distribution and they are based on

Install fakeroot package

 emerge -av fakeroot

Before running pbuilder, you must fix /etc/hostname temporarily (difference between gentoo and debian environments).

 echo "" > /etc/hostname

Don't forget to remove that file at the end. You may encounter problems on next startup of you gentoo box. Check that hostname -f works properly. If not, check /etc/host of gentoo tree.

pbuilder does not run out of the box. Apparently, arch is not properly set and it must be forced with --debootstrapopts.

 pbuilder create --debug --distribution hardy --debootstrapopts --arch=amd64 --mirror "" --othermirror "deb hardy universe multiverse" --debootstrapopts --include=gpgv

Every time you touch /etc/apt/sources.list, don't forget to run apt-get update'.

To modify the build environment:

 pbuilder execute --save-after-exec your_script

Package building

Quick steps:

 cp sesarray-src-2.1.0-snapshot-20081205.tar.gz sesarray_2.1.0.20081205.orig.tar.gz
 tar xvfpz sesarray_2.1.0.20081205.orig.tar.gz

Edit debian directory

* changelog
* control
* copyright
* rules

For each new version, changelog and control must be updated.

To generate .dsc files (as normal user)

 cd sesarray-src-2.1.0-snapshot-20081205
 dpkg-buildpackage -S -rfakeroot

To generate the final .deb package (as root)

 pbuilder build ../sesarray_2.1.0.20081205-2.dsc

or (for debug)

 # Initialization of the build platform
 cd /var/cache/pbuilder/build
 mkdir experimental
 cd experimental
 tar xfpz ../../base.tgz
 # For all tries....
 pbuilder build --no-targz --buildplace /var/cache/pbuilder/build/experimental --preserve-buildplace ../sesarray_2.1.0.20081205-2.dsc

Copy this file to pool/main on repository

Ubuntu repository

apt-ftparchive is not installed with emerge, it is in /usr/local/apt and you must set paths before

export LD_LIBRARY_PATH=/usr/local/apt:$LD_LIBRARY_PATH
export PATH=/usr/local/apt:$PATH
cd softwares/packages/ubuntu
apt-ftparchive generate ../apt-ftparchive.conf
apt-ftparchive -c=../apt-release.conf release dists/hardy > dists/hardy/Release