Installing Code::Blocks from source on RPM based distributions: Difference between revisions

From Code::Blocks
 
(122 intermediate revisions by 9 users not shown)
Line 1: Line 1:
=== Compiling the CVS version ===
[[Category:Installing Code::Blocks]]
[[Category:Installing Code::Blocks from source]]


1. You need a fresh CVS version, no ./bootstrap or anything else should be done before in this directory !
== Install Requirements ==


2. add the directory codeblocks to an tar.gz archive named codeblocks-1.0-cvs.tar.gz
Note: Code::Blocks requires GTK+ 2.x. Older distributions might only support GTK+ 1.x.
tar -czf codeblocks-1.0-cvs.tar.gz codeblocks


3. copy the archive in the directory /usr/src/packages/SOURCES and the Specfile to /usr/src/packages/SPECS/codeblocks.spec
Upgrading GTK+ is beyond the scope of this document, easier to upgrade distribution ?


4. build the binary package as root with
=== Install Development Tools ===
rpmbuild -bb /usr/src/packages/SPECS/codeblocks.spec


5. the package will be in one of the subdirectories of /usr/src/packages/RPMS/
This has to be installed before starting:
* zip
* update-desktop-files (only on SUSE)
* make
* gettext
* autoconf >= 2.5
* automake >= 1.7
* libtool >= 1.4
* m4
* intltool
* gcc-c++
* libstdc++-devel


'''Use this as Specfile:'''
In Fedora/CentOS, this can be done with:
<pre>
su -c 'yum groupinstall "Development Tools"'
su -c 'yum install intltool'
</pre>


Name:          codeblocks
==== Install newer autotools versions (if needed) ====
Version:        1.0
Release:        cvs
Summary:        An open source, cross platform, free C++ IDE.
Group:          Development/Tools/IDE
License:        GPL
URL:            https://www.codeblocks.org/
Packager:      Daniel Orb <danielorb2000@yahoo.de>
Source:        %{name}-%{version}-%{release}.tgz
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-buildroot
Provides:      codeblocks
BuildRequires:  zip
BuildRequires:  dos2unix
 
%define pkgdata %{_datadir}/%{name}
%description
Code::Blocks is a free C++ IDE built specifically to meet the most demanding needs of its users. It was designed, right from the  start, to be extensible and configurable.
Built around a plugin framework, Code::Blocks can be extended with plugin DLLs. It includes a plugin wizard so you can compile your  own plugins!
Features:
        Highlights:
            * Open Source! GPL2, no hidden costs.
            * Cross-platform. Runs on Linux or Windows (uses wxWidgets).
            * Made in GNU C++. No interpreted languages or proprietary libs needed.
            * Comes in two presentations: Standalone, and MinGW bundle
            * Devpack support (optional)
            * Extensible thru plugins (SDK available in the downloads section)
        Compiler-related features:
            * Multiple compiler support:
                  o GCC (MingW / Linux GCC)
                  o MSVC++
                  o Digital Mars
                  o Borland C++ 5.5
                  o Open Watcom
            * Compiles directly or with makefiles
            * Predefined project templates
            * Custom template support
            * Uses XML format for project files.
            * Multi-target projects
            * Workspaces support
            * Imports MSVC projects and workspaces
                (NOTE: assembly code and inter-project dependencies not supported yet)
            * Imports Dev-C++ projects
            * Integrates with GDB for debugging
        Interface Features:
            * Syntax highlighting, customizable and extensible
            * Code folding for C++ and XML files.
            * Tabbed interface
            * Code completion plugin
            * Class Browser
            * Smart indent
            * One-key swap between .h and .c/.cpp files
            * Open files list for quick switching between files (optional)
            * External customizable "Tools"
            * To-do list management with different users
%prep
%setup -n codeblocks
%build
  ./bootstrap
  ./configure \
    --prefix=%{_prefix} \
    --exec-prefix=%{_exec_prefix} \
    --datadir=%{_datadir} \
    --sysconfdir=%{_sysconfdir} \
    --with-docdir=%{_docdir} \
    CXXFLAGS="$RPM_OPT_FLAGS" \
    CFLAGS="$RPM_OPT_FLAGS"
  make
%install
  make DESTDIR=$RPM_BUILD_ROOT install
%clean
  test -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != "/" && rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
%doc README COPYING AUTHORS BUGS COMPILERS TODO NEWS ChangeLog
%{_bindir}/*
%{_libdir}/*
%{_datadir}/application-registry/codeblocks.applications
%{_datadir}/applications/codeblocks.desktop
%{_datadir}/icons/gnome/48x48/mimetypes/gnome-mime-application-x-codeblocks.png
%{_datadir}/mime-info/*
%{_datadir}/mime/packages/codeblocks.xml
%{_datadir}/pixmaps/codeblocks.png
%{pkgdata}/*


=== Compiling the Release Candidate 2 ===
If you have CentOS 3 or RHEL 3, you will need to rebuild "automake17" to use instead of automake-1.6:
* ftp://ftp.redhat.com/pub/redhat/linux/enterprise/4/en/os/i386/SRPMS/automake17-1.7.9-5.src.rpm
<pre>
rpmbuild --rebuild automake17-1.7.9-5.src.rpm
</pre>


# Download the source archive from [https://www.codeblocks.org/downloads.shtml www.codeblocks.org/downloads.shtml]
Then you need to invoke bootstrap like this, both on the commandline and in codeblocks.spec:
<pre>
AUTOMAKE=automake-1.7 ACLOCAL=aclocal-1.7 ACLOCAL_FLAGS="-I /usr/share/aclocal" ./bootstrap
</pre>


# Go through the steps 3. to 5. from above with the only difference of using the following Specfile
=== Setup RPM environment ===


Name:           codeblocks
This has to be installed before starting:
Version:        1.0
* rpm-build
Release:        rc2
 
Summary:        An open source, cross platform, free C++ IDE.
The top work directory for RPM varies between distributions and setups, but you can find your RPM top dir by setting a variable like:
Group:         Development/Tools/IDE
 
License:        GPL
<pre>
URL:            https://www.codeblocks.org/
RPM_TOPDIR=`rpm --eval %{_topdir}`
Packager:      Daniel Orb <danielorb2000@yahoo.de>
echo $RPM_TOPDIR
Source:        %{name}-%{version}%{release}.tgz
</pre>
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-buildroot
 
Provides:      codeblocks
==== Non-root rpmbuild environment (recommended) ====
BuildRequires:  zip
 
BuildRequires:  dos2unix
It is recommended that you don't use the root account to build packages, here is how you set up a minimal user build environment:
 
 
%define pkgdata %{_datadir}/%{name}
<pre>
cd
%description
mkdir rpm
Code::Blocks is a free C++ IDE built specifically to meet the most demanding needs of its users. It was designed, right from the start, to be extensible and configurable.
echo "%_topdir $HOME/rpm" >> .rpmmacros
Built around a plugin framework, Code::Blocks can be extended with plugin DLLs. It includes a plugin wizard so you can compile your  own plugins!
mkdir /tmp/$USER/rpm
echo "%_tmppath /tmp/$USER/rpm" >> .rpmmacros
Features:
cd rpm
mkdir SPECS SOURCES BUILD RPMS SRPMS
        Highlights:
RPM_TOPDIR=`rpm --eval %{_topdir}`
</pre>
            * Open Source! GPL2, no hidden costs.
 
            * Cross-platform. Runs on Linux or Windows (uses wxWidgets).
You can now build packages without being root (assuming that the spec files are correct). You will still need root access to install.
            * Made in GNU C++. No interpreted languages or proprietary libs needed.
 
            * Comes in two presentations: Standalone, and MinGW bundle
=== Install wxWidgets 2.6.x ===
            * Devpack support (optional)
 
            * Extensible thru plugins (SDK available in the downloads section)
''Note: the following section on the required version is out of date; please ''do'' use from the 2.8 branch.''
 
        Compiler-related features:
The build requirements in the source RPM are set to a minimum. So it isn't checked whether wxGTK is installed or not. So you have to take a look at it yourself. Note that currently Code::Blocks requires wxWidgets '''2.6''', not 2.8! So if your distribution only provides packages for wxWidgets 2.8, you need to build wxWidgets 2.6 yourself.
 
            * Multiple compiler support:
This has to be installed:
                  o GCC (MingW / Linux GCC)
# wxGTK >= 2.6.0 and its devel package (see [http://wxwidgets.org wxwidgets.org])
                  o MSVC++
# wxGTK-xrc and its devel package (in some distributions included in the packages of point 1)
                  o Digital Mars
 
                  o Borland C++ 5.5
In later Fedora, this can be done with:
                  o Open Watcom
<pre>
            * Compiles directly or with makefiles
su -c 'yum install wxGTK-devel'
            * Predefined project templates
</pre>
            * Custom template support
 
            * Uses XML format for project files.
==== Build the wxGTK RPM from source (if needed) ====
            * Multi-target projects
 
            * Workspaces support
TODO
            * Imports MSVC projects and workspaces
 
                (NOTE: assembly code and inter-project dependencies not supported yet)
* http://prdownloads.sourceforge.net/wxwindows/wxGTK-2.6.3.tar.gz
            * Imports Dev-C++ projects
* ftp://biolpc22.york.ac.uk/pub/2.6.3/wxWidgets-2.6.3-Patch-2.tar.gz
            * Integrates with GDB for debugging
* http://www.algonet.se/~afb/wx/wxGTK.spec
 
        Interface Features:
RPMS
 
            * Syntax highlighting, customizable and extensible
* wx-base-unicode-2.6.3.0.2-1.i386.rpm
            * Code folding for C++ and XML files.
* wx-base-unicode-devel-2.6.3.0.2-1.i386.rpm
            * Tabbed interface
* wx-gtk2-unicode-2.6.3.0.2-1.i386.rpm
            * Code completion plugin
* wx-gtk2-unicode-devel-2.6.3.0.2-1.i386.rpm
            * Class Browser
* wx-gtk2-unicode-gl-2.6.3.0.2-1.i386.rpm
            * Smart indent
* wx-gtk2-unicode-contrib-2.6.3.0.2-1.i386.rpm
            * One-key swap between .h and .c/.cpp files
* wx-gtk2-unicode-contrib-devel-2.6.3.0.2-1.i386.rpm
            * Open files list for quick switching between files (optional)
* wx-gtk2-unicode-debuginfo-2.6.3.0.2-1.i386.rpm
            * External customizable "Tools"
* wx-i18n-2.6.3.0.2-1.i386.rpm
            * To-do list management with different users
 
=== Install Subversion client ===
%prep
 
This has to be installed before starting:
%setup -n codeblocks-1.0rc2
* subversion >= 1.4.0, (see [http://subversion.tigris.org subversion.tigris.org])
 
%build 
Binary packages for Red Hat Linux 9, Fedora Core 1, CentOS 3, CentOS 4 at:
  find . -type f -and -not -name "*.cpp" -and -not -name "*.h" -and -not -name "*.png" -and -not -name "*.bmp" | sed "s/.*/\"\\0\"/" | xargs dos2unix
 
  chmod a+x bootstrap acinclude.m4 src/update
http://the.earth.li/pub/subversion/summersoft.fay.ar.us/pub/subversion/latest/
  ./bootstrap
 
  ./configure \
In later Fedora, this can be done with:
    --prefix=%{_prefix} \
<pre>
    --exec-prefix=%{_exec_prefix} \
su -c 'yum install subversion'
    --datadir=%{_datadir} \
</pre>
    --sysconfdir=%{_sysconfdir} \
 
    --with-docdir=%{_docdir} \
==== Build Subversion RPM from source (if needed) ====
    CXXFLAGS="$RPM_OPT_FLAGS" \
 
    CFLAGS="$RPM_OPT_FLAGS"
TODO
  make
 
   
* http://subversion.tigris.org/downloads/subversion-1.4.2.tar.gz
%install
* packages/rpm/rhel-3/subversion.spec (CentOS 3)
  make DESTDIR=$RPM_BUILD_ROOT install
* packages/rpm/rhel-4/subversion.spec (CentOS 4)
 
  %clean
RPMS
  test -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != "/" && rm -rf $RPM_BUILD_ROOT
 
   
* subversion-1.4.2-1.i386.rpm
  %files
* subversion-devel-1.4.2-1.i386.rpm
%defattr(-,root,root)
* subversion-perl-1.4.2-1.i386.rpm
%doc README COPYING AUTHORS BUGS COMPILERS TODO NEWS ChangeLog
* subversion-python-1.4.2-1.i386.rpm
* subversion-tools-1.4.2-1.i386.rpm
  %{_bindir}/*
* subversion-debuginfo-1.4.2-1.i386.rpm
 
%{_libdir}/*
== Install Code::Blocks ==
  %{_datadir}/application-registry/codeblocks.applications
 
%{_datadir}/applications/codeblocks.desktop
=== Download the Source RPM ===
  %{_datadir}/icons/gnome/48x48/mimetypes/gnome-mime-application-x-codeblocks.png
 
%{_datadir}/mime-info/*
1. Download the Source RPM from [https://www.codeblocks.org/downloads/source www.codeblocks.org/downloads/source]
%{_datadir}/mime/packages/codeblocks.xml
 
%{_datadir}/pixmaps/codeblocks.png
''Note: SRPM's are for the last stable (10.05); the SVN branch includes the many improvements since then.''
<!-- <span style="color:red">Note: the SRPM is currently unavailable (latest version being the old RC2), use SVN:</span> -->
 
  %{pkgdata}/*
==== Prepare SRPM package from SVN (if needed) ====
 
1. You need to get the latest sources from SVN [https://www.codeblocks.org/downloads/svn www.codeblocks.org/downloads/svn]
 
  svn checkout svn://svn.berlios.de/codeblocks/trunk
 
2. go into ''trunk'', if you haven't already done it.
 
3. run these three commands in this order
  ./bootstrap
  ./configure
  make dist
the last one will create a .tar.gz archive that contains the sources.
 
4. copy the archive to the directory $RPM_TOPDIR/SOURCES
  sudo mv codeblocks-trunk-r*.tar.gz $RPM_TOPDIR/SOURCES
 
5. build the source RPM, or copy spec to $RPM_TOPDIR/SPECS
  rpmbuild -bs codeblocks.spec
 
This will create a source package in the directory $RPM_TOPDIR/SRPMS/.
 
=== Build the RPM package ===
 
1. Build the binary package
  rpmbuild --rebuild codeblocks*.src.rpm
 
This will create several packages in one of the architecture specific subdirectories (i386, x86_64, ppc, ...) of $RPM_TOPDIR/RPMS/.
 
These are:
* codeblocks: main package
* codeblocks-contrib: contrib plugins
* codeblocks-devel: SDK headers
* codeblocks-contrib-devel: headers for contrib-plugins (wxSmith etc.)
* codeblocks-debuginfo: stripped debug information
 
=== Install the RPM package ===
 
Install as root the packages you want (usually codeblocks and codeblocks-contrib) and enjoy Code::Blocks!
  su -c 'rpm -Uvh codeblocks-1.0*.i386.rpm'

Latest revision as of 07:59, 22 September 2012


Install Requirements

Note: Code::Blocks requires GTK+ 2.x. Older distributions might only support GTK+ 1.x.

Upgrading GTK+ is beyond the scope of this document, easier to upgrade distribution ?

Install Development Tools

This has to be installed before starting:

  • zip
  • update-desktop-files (only on SUSE)
  • make
  • gettext
  • autoconf >= 2.5
  • automake >= 1.7
  • libtool >= 1.4
  • m4
  • intltool
  • gcc-c++
  • libstdc++-devel

In Fedora/CentOS, this can be done with:

su -c 'yum groupinstall "Development Tools"'
su -c 'yum install intltool'

Install newer autotools versions (if needed)

If you have CentOS 3 or RHEL 3, you will need to rebuild "automake17" to use instead of automake-1.6:

rpmbuild --rebuild automake17-1.7.9-5.src.rpm

Then you need to invoke bootstrap like this, both on the commandline and in codeblocks.spec:

AUTOMAKE=automake-1.7 ACLOCAL=aclocal-1.7 ACLOCAL_FLAGS="-I /usr/share/aclocal" ./bootstrap

Setup RPM environment

This has to be installed before starting:

  • rpm-build

The top work directory for RPM varies between distributions and setups, but you can find your RPM top dir by setting a variable like:

RPM_TOPDIR=`rpm --eval %{_topdir}`
echo $RPM_TOPDIR

Non-root rpmbuild environment (recommended)

It is recommended that you don't use the root account to build packages, here is how you set up a minimal user build environment:

cd
mkdir rpm
echo "%_topdir $HOME/rpm" >> .rpmmacros
mkdir /tmp/$USER/rpm
echo "%_tmppath /tmp/$USER/rpm" >> .rpmmacros
cd rpm
mkdir SPECS SOURCES BUILD RPMS SRPMS
RPM_TOPDIR=`rpm --eval %{_topdir}`

You can now build packages without being root (assuming that the spec files are correct). You will still need root access to install.

Install wxWidgets 2.6.x

Note: the following section on the required version is out of date; please do use from the 2.8 branch.

The build requirements in the source RPM are set to a minimum. So it isn't checked whether wxGTK is installed or not. So you have to take a look at it yourself. Note that currently Code::Blocks requires wxWidgets 2.6, not 2.8! So if your distribution only provides packages for wxWidgets 2.8, you need to build wxWidgets 2.6 yourself.

This has to be installed:

  1. wxGTK >= 2.6.0 and its devel package (see wxwidgets.org)
  2. wxGTK-xrc and its devel package (in some distributions included in the packages of point 1)

In later Fedora, this can be done with:

su -c 'yum install wxGTK-devel'

Build the wxGTK RPM from source (if needed)

TODO

RPMS

  • wx-base-unicode-2.6.3.0.2-1.i386.rpm
  • wx-base-unicode-devel-2.6.3.0.2-1.i386.rpm
  • wx-gtk2-unicode-2.6.3.0.2-1.i386.rpm
  • wx-gtk2-unicode-devel-2.6.3.0.2-1.i386.rpm
  • wx-gtk2-unicode-gl-2.6.3.0.2-1.i386.rpm
  • wx-gtk2-unicode-contrib-2.6.3.0.2-1.i386.rpm
  • wx-gtk2-unicode-contrib-devel-2.6.3.0.2-1.i386.rpm
  • wx-gtk2-unicode-debuginfo-2.6.3.0.2-1.i386.rpm
  • wx-i18n-2.6.3.0.2-1.i386.rpm

Install Subversion client

This has to be installed before starting:

Binary packages for Red Hat Linux 9, Fedora Core 1, CentOS 3, CentOS 4 at:

http://the.earth.li/pub/subversion/summersoft.fay.ar.us/pub/subversion/latest/

In later Fedora, this can be done with:

su -c 'yum install subversion'

Build Subversion RPM from source (if needed)

TODO

RPMS

  • subversion-1.4.2-1.i386.rpm
  • subversion-devel-1.4.2-1.i386.rpm
  • subversion-perl-1.4.2-1.i386.rpm
  • subversion-python-1.4.2-1.i386.rpm
  • subversion-tools-1.4.2-1.i386.rpm
  • subversion-debuginfo-1.4.2-1.i386.rpm

Install Code::Blocks

Download the Source RPM

1. Download the Source RPM from www.codeblocks.org/downloads/source

Note: SRPM's are for the last stable (10.05); the SVN branch includes the many improvements since then.

Prepare SRPM package from SVN (if needed)

1. You need to get the latest sources from SVN www.codeblocks.org/downloads/svn

svn checkout svn://svn.berlios.de/codeblocks/trunk

2. go into trunk, if you haven't already done it.

3. run these three commands in this order

./bootstrap
./configure
make dist

the last one will create a .tar.gz archive that contains the sources.

4. copy the archive to the directory $RPM_TOPDIR/SOURCES

sudo mv codeblocks-trunk-r*.tar.gz $RPM_TOPDIR/SOURCES

5. build the source RPM, or copy spec to $RPM_TOPDIR/SPECS

rpmbuild -bs codeblocks.spec

This will create a source package in the directory $RPM_TOPDIR/SRPMS/.

Build the RPM package

1. Build the binary package

rpmbuild --rebuild codeblocks*.src.rpm

This will create several packages in one of the architecture specific subdirectories (i386, x86_64, ppc, ...) of $RPM_TOPDIR/RPMS/.

These are:

  • codeblocks: main package
  • codeblocks-contrib: contrib plugins
  • codeblocks-devel: SDK headers
  • codeblocks-contrib-devel: headers for contrib-plugins (wxSmith etc.)
  • codeblocks-debuginfo: stripped debug information

Install the RPM package

Install as root the packages you want (usually codeblocks and codeblocks-contrib) and enjoy Code::Blocks!

su -c 'rpm -Uvh codeblocks-1.0*.i386.rpm'