I promised that I’ll write a post about how you can contribute. There are several ways how to contribute to MySQL, but most of it means modifying packages. And as everything in openSUSE is built using openSUSE Build service, first post will be actually pretty general obs and osc howto. In the next posts, I’ll go deeper into specific details of MySQL packaging.
Find the package
If you want to play with any package in openSUSE Build Service, you need to have a Novell login and preferably the osc command line client for obs. You can do most of the stuff from web as well, but this way is more comfortable 😉 So let’s say that we want to play with MariaDB. First we have to find package we want to update. This can be easily done on the web. Just take a look at packages at server:database
repository. mariadb
is the version currently included in the Factory. If you want to update bleeding edge version, these are named usually something like mariadb-53
for 5.3 branch or mysql-commmunity-server-56
for MySQL Community Server 5.6 branch. So basically if package name doesn’t contain version, it’s package for factory, if it does, it is just for people wanting something that is not in Factory yet (or already).
Get source
As you can’t commit to server:database
directly, you will need to branch this package somewhere you can commit to and check it out. In examples I will use NICK
as a placeholder for the nickname that you got during your registration. Let’s go through example during which we want to play with MariaDB in 5.3 branch. First step is to create our own branch of the code we can commit to:
osc branch server:database mariadb-53 home:NICK
Now we have a copy of mariadb-53
package in our repository in obs. But we want to do some changes locally on the hard drive. So let’s check it out:
osc co home:NICK/mariadb-53
Now we have it in directory home:NICK/mariadb-53
and we can start playing with it and do some changes. How to do some changes will be described in the following blog posts.
Building and testing
After some changes are done, we want to test them, don’t we? Let’s call osc build --ccache
to test whether it builds. --ccache
enables ccache support which takes more space but speeds up built and consequent rebuilds. So it is a good idea to use it especially in MySQL case 😉 If compilation will work well, it will give you several packages to try. And if everything goes well, it’s time to finally contribute all the work back!
Contribute
Few final commands:
osc ar osc vc osc commit
Which marks all new files for addition, deleted files for deletion (osc ar
), document the changes (osc vc
) and commit them (osc commit
). Next step it to wait and see whether it build on server as well (osc results
) and if it does and it still works, it’s time to send it to me using osc sr
command. After that I will get it, take a look at it and either accept it and if it is factory version then also forward it to the Factory (you’ll have your name forever in the changelogs) or I will decline it and tell you what’s wrong. If there is something wrong, you would need to fix it to get you changes accepted. So goto 'Building and testing'
😉
Temporal conclusion
As you have seen, it is quite easy to use osc to contribute to the packages. Well, I left out the most complicated part – actually changing the package, but that will be topic of the next post and you’ll see that even that part isn’t hard 😉