This post is about the latest Mono release, and its availability for older Linux distributions.

Thankfully, Xamarin provides Mono packages for the most current Linux distributions at http://www.mono-project.com/download/#download-lin.

I am building Mono packages for older Linux distributions, and some constellations not supported by Xamarin.

Here are the Mono 4.6.0.245 packages for CentOS and Fedora:

Here is the list of Mono 4.6.0.245 installed to /opt, for various Linux distributions:

For a summary of packages that I maintain for Mono, see also https://github.com/tpokorra/lbs-mono/wiki

A short status update on MonoDevelop 6:

Tags: ,
Posted in Software Development | Comments Closed

This post is about the latest Mono release, and its availability for older Linux distributions.

Thankfully, Xamarin provides Mono packages for the most current Linux distributions at http://www.mono-project.com/download/#download-lin. The Xamarin packages have not been updated yet, due to migration to a new Jenkins server.

I was not able yet to package MonoDevelop 6:

But here are the Mono 4.4.0.182 packages for CentOS and Fedora:

Here is the list of Mono 4.4.0.182 installed to /opt, for various Linux distributions:

For a summary of packages that I maintain for Mono, see also https://github.com/tpokorra/lbs-mono/wiki

This post is about the latest Mono release, and its availability for older Linux distributions.

Thankfully, Xamarin provides Mono packages for the most current Linux distributions at http://www.mono-project.com/download/#download-lin

I used to build mono-opt for Debian, Ubuntu, CentOS, Fedora and OpenSUSE, since July 2013 (see http://lists.ximian.com/pipermail/mono-list/2013-July/050114.html).

The long-term goal has always been to get Mono integrated directly into the Linux distributions. Therefore I decided to get involved with Fedora and CentOS, which I use for most of my servers.

As a result, we now have Mono 4.0.5 and MonoDevelop 5.9 in Fedora 23, and we (Claudio and myself) are working on getting Mono 4.2 and MonoDevelop 5.10 into Fedora 24. The next step would be to get Mono updated in Epel as well, so that you can use uptodate packages of Mono on CentOS too.

I am glad to see that things are happening on the Debian side as well, with Mono 4.2.1 in the experimental branch: https://packages.debian.org/search?keywords=mono-complete

OpenSUSE has Mono 4.0.4 in Leap 42.1: https://software.opensuse.org/package/mono-complete

So things are looking good!

I decided to use the infrastructure of the Fedora project for the CentOS mono-opt packages. You can find uptodate Mono and MonoDevelop packages for CentOS6 and CentOS7 at https://copr.fedoraproject.org/coprs/tpokorra/mono-opt/. There are also Mono packages for CentOS5, but no MonoDevelop for CentOS5.
This replaces the mono-opt packages for CentOS5 at https://lbs.solidcharity.com/package/tpokorra/mono/mono-opt which I will not be maintaining anymore over there.

For Fedora users, Claudio and myself do maintain a repository with the latest Mono and MonoDevelop here: https://copr.fedoraproject.org/coprs/tpokorra/mono/

For Ubuntu 12.04, Mono llvm does not build anymore, because it requires GCC with at least version 4.7. At the moment I don’t have a reason to build Mono and MonoDevelop for Ubuntu 12.04 anymore. I will also not build packages for Ubuntu non-LTS releases. If you need it, email me, and we can discuss.

So here are the updated packages:

Tags: , ,
Posted in Software Development | Comments Closed

There was a question on the mono IRC about how to Copy&Paste from a Console window when running a console application from within MonoDevelop.

I tried to reproduce that, and first got the error:

cannot execute … File name has not been set

The answer is that you have to install the xterm package. See http://stackoverflow.com/questions/21834612/how-does-one-set-the-filename-in-monodevelop

Actually, here is the source that determines which terminal to use: https://github.com/mono/monodevelop/blob/master/main/src/addins/GnomePlatform/GnomePlatform.cs#L305

So it tries gnome-terminal, mate-terminal and konsole, depending on the environment variables for the desktop (GNOME_DESKTOP_SESSION_ID, MATE_DESKTOP_SESSION_ID, or KDE_SESSION_VERSION). If that fails, it falls back to xterm.

I am using XFCE4, and MonoDevelop falls back to xterm.

Copy&Paste in xterm works like this: just select the text, and then focus the application where you want to paste the text, and hit the middle mouse button. see also http://askubuntu.com/a/237947/194547

Tags: ,
Posted in Software Development | Comments Closed

First I want to say Thanks to Xamarin for providing packages now for Linux again. I am personally using the Mono packages from Xamarin for CentOS7, and the MonoDevelop package for Ubuntu from Xamarin.

I have decided I will not build my own MonoDevelop packages anymore, since the Xamarin packages are sufficient.
There are also some issues that I could not figure out, so at the moment my MonoDevelop packages on OBS do not build at all. I have no intention to fix them, because there is no need for them.

For example, to install the latest MonoDevelop on Ubuntu, you can follow these instructions (see also http://www.monodevelop.com/download/linux/#debian-ubuntu-and-derivatives):

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | tee /etc/apt/sources.list.d/mono-xamarin.list
apt-get update
apt-get install monodevelop monodoc-browser

I also wanted to stop building the Mono packages for various Linux distributions, but there are issues for CentOS6 with libgdiplus and libpng15 with the Xamarin packages (http://lists.ximian.com/pipermail/mono-list/2014-October/051241.html), so I will keep providing Mono packages at the moment.

The latest Mono packages for 3.12.1 are available according to the instructions at http://software.opensuse.org/download.html?project=home%3Atpokorra%3Amono&package=mono-opt

I have added packages for Fedora 21 there recently.

I have also worked on getting Mono 3.12.1 built for CentOS5. This required to use a newer GCC than is available on CentOS5. This meant I cannot build it on OBS since it is not allowed to link in different repositories. Obviously I could try to build a newer GCC on OBS as well, but then it becomes more and more complicated, and others have done this work already (http://people.centos.org/tru/devtools-2/readme)

The solution now works with my own LightBuildServer, and the result can be seen here: https://lbs.solidcharity.com/package/tpokorra/mono/mono-opt
If you want to build Mono on your own LBS, let me know, and I will improve the installation instructions for the LBS. All the code is public already, at https://github.com/SolidCharity/LightBuildServer/
The sources for the RPM packages are maintained here: https://github.com/tpokorra/lbs-mono/tree/master/mono-opt

If you need some paid assistance with Mono packages for your distribution, please contact me via ODesk: https://www.odesk.com/o/profiles/users/_~01e826605fea50faae/

Tags: , ,
Posted in Software Development | Comments Closed
Tags: ,
Posted in Software Development | Comments Closed

I have just finished the work on the latest MonoDevelop packages.

Quite a bit has changed in the build process, so it needed some work to make the build from tarball finish successfully again.
See this thread on the mailinglist: http://lists.ximian.com/pipermail/monodevelop-list/2014-May/016077.html

I have updated the packages at
https://build.opensuse.org/project/monitor/home:tpokorra:mono

MonoDevelop 4.2.5:
http://software.opensuse.org/download.html?project=home%3Atpokorra%3Amono&package=monodevelop-opt

MonoDevelop 4.3.4:
http://software.opensuse.org/download.html?project=home%3Atpokorra%3Amono&package=monodevelop-beta

MonoDevelop 5.1 (nightly build from this morning):
http://software.opensuse.org/download.html?project=home%3Atpokorra%3Amono&package=monodevelop-alpha

By the way, I am working on a new project called LightBuildServer, which is a very light-weight alternative to OBS.
see http://lightbuildserver.org

Tags: , , ,
Posted in Software Development | Comments Closed

My testing environment is a workstation running on a JiffyBox, using X2Go

Here are the steps that I use to setup my machine with OpenSUSE 12.3:

zypper install -t pattern kde4 kde4_basis findutils-locate

Install X2Go as described here:

zypper addrepo http://download.opensuse.org/repositories/X11:RemoteDesktop:x2go/openSUSE_12.3/X11:RemoteDesktop:x2go.repo
zypper refresh
zypper install x2goserver

Then I run these commands so that the login works with a password:

/etc/init.d/x2gocleansessions start
sed -i "s/PasswordAuthentication .*/PasswordAuthentication yes/g" /etc/ssh/sshd_config
/etc/init.d/sshd start
useradd myusername -m
passwd myusername

To install the latest MonoDevelop, follow these instructions:

zypper addrepo http://download.opensuse.org/repositories/home:tpokorra:mono/openSUSE_12.3/home:tpokorra:mono.repo
zypper refresh
zypper install monodevelop-opt

Now I had the problem that MonoDevelop did not start.

I tried everything:

. /opt/mono/env.sh
cd /opt/monodevelop/lib/monodevelop/bin
strace MONO_LOG_LEVEL=debug mono -O=-aot  MonoDevelop.exe

but no error message that I would understand.

Then I tried running monodoc, and this finally gave an error that I could understand:

The program 'browser' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadValue (integer parameter out of range for operation)'.
  (Details: serial 131 error_code 2 request_code 25 minor_code 0)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)

This lead me to this bug report: https://bugs.eclipse.org/bugs/show_bug.cgi?id=386955 which mentions X2Go. At the end of that bug, it says that a specific version of Cairo does not support old XRenderers anymore. It has been fixed in version http://www.cairographics.org/news/cairo-1.12.10/

To build and install that version of Cairo, I followed these steps:

wget http://www.cairographics.org/releases/cairo-1.12.16.tar.xz
tar xf cairo-1.12.16.tar.xz
cd cairo-1.12.16
zypper install gcc libpng-devel libpixman-1-0-devel make libX11-devel libXrender-devel libXext-devel libXt-devel fontconfig-devel
./configure --prefix=/usr --enable-xlib
make
make install

Now MonoDevelop and monodoc start fine on OpenSUSE over a remote connection via X2Go.

Tags: , ,
Posted in Software Development | Comments Closed

In this blog post, I want to describe some of the workarounds I need to do to release the latest mono and monodevelop packages on OBS.

For more details on this project from a using perspective, see:
Easy installation of current Mono and MonoDevelop for all major Linux Distributions

The download of the source files is specified in the _service file, eg. https://build.opensuse.org/package/view_file/home:tpokorra:mono/mono/_service?expand=1

The problem is that sometimes the tarballs are not available on http://download.mono-project.com/sources/mono or http://download.mono-project.com/sources/monodevelop, especially for the Alpha releases.

As long as you can find a tagged release at Github, you can build your own tarball (eg. on CentOS):

Preparations:

wget -O /etc/yum.repos.d/home:tpokorra:mono.repo http://download.opensuse.org/repositories/home:tpokorra:mono/CentOS_CentOS-6/home:tpokorra:mono.repo
yum install git-core automake autoconf libtool tar which gcc-c++ gettext mono-opt bzip2

For Mono:

git clone https://github.com/mono/mono.git
cd mono 
git checkout -b tarball mono-3.2.5
./autogen.sh
. /opt/mono/env.sh
make dist

And for MonoDevelop:

git clone https://github.com/mono/monodevelop.git
cd monodevelop
git branch tarball monodevelop-4.3.0
git checkout tarball
. /opt/mono/env.sh
./configure
make dist

I have uploaded the resulting tarballs to http://download.pokorra.de/mono/tarballs/, and my _service files are now referencing that location if the official source directory is missing the tarball or the tarball is broken.

Tags: , , ,
Posted in Software Development | Comments Closed

This blog post is a repeat of an email that I sent to the Mono mailing list back in July 2013:
http://lists.ximian.com/pipermail/mono-list/2013-July/050114.html

The problem is that there are no recent packages for the major Linux distributions offered at http://www.go-mono.com/mono-downloads/download.html and http://monodevelop.com/Download

I personally use Mono and MonoDevelop for developing and deploying OpenPetra, an open source accounting and contact management system for charities and missions organisations.

I am using the OBS (Open Build Service) from build.opensuse.org to build recent packages of Mono and MonoDevelop for the Linux distributions CentOS, Fedora, Debian, Ubuntu, and openSUSE.

The installation for MonoDevelop is documented here:

http://software.opensuse.org/download/package?project=home:tpokorra:mono&package=monodevelop-opt
This will install Mono as well.

I also have builds of the Beta and the Alpha versions of MonoDevelop.

If you only want to install Mono, see here:

http://software.opensuse.org/download/package?project=home:tpokorra:mono&package=mono-opt

There are also packages for mono-xsp, mod_mono and mono-tools (including monodoc).

Package mono-libgdiplus makes sure that the libgdiplus is linked properly, which is important for GUI applications.

Since you have the right repo from installing Mono already, you can just run this:

#for RPM based distros:
yum install mono-libgdiplus-opt mod_mono-opt mono-xsp-opt mono-tools-opt

or (please note slightly different name for mod_mono-opt, somehow Debian does not like the underscore in the package name…)

#for Debian based distros:
apt-get install mono-libgdiplus-opt modmono-opt mono-xsp-opt mono-tools-opt

MonoDevelop and Mono (and the other mono specific packages) will be installed to /opt to avoid conflict with the Mono version that comes with your Linux distribution.

To run this Mono on the command line, you can add this line to your .bash_profile file:

 . /opt/mono/env.sh

If you are interested in the way how the packages are built, have a look here: https://build.opensuse.org/project/show/home:tpokorra:mono