OpenELEC exists because of one-man's idea for an appliance-like OS that grew legs and ran. Since the birth of the project in 2009 there have been hundreds of contributors, and the team has a long and positive record of engagement with other upstream projects; notably Kodi where several OE staff are also official Kodi team members. OpenELEC continues to be a community-led effort and donations of user time, effort (and code!) are welcomed.
Development is centered on Github. This is also where "Request for Enhancement's" (RFE's) and triaged issue reports are submitted. You are politely reminded that Github is our development tool; anything posted to Github automatically notifies (or spams, depending on your point of view) the entire OpenELEC developer team. It is an appropriate place for users to provide information on triaged and "confirmed" bugs. The correct place for users to ask for first-help is the forum. Once a problem has been assessed and confirmed as a bug a Github issue report will be accepted. If you submit unconfirmed Github tickets with "I can't get my wireless to work" the ticket will be closed quickly, and often with blunt comments. Please (pretty please) use the forums to confirm bugs first!
OpenELEC developers also hang out in the #openelec IRC channel to discuss project things in addition to providing users with deeper and real-time technical assistance.
After compiling OpenELEC you may want to know how to make changes to the build system. This allows you to make patches and submit pull requests (PR's).
The build system will check in two places for custom options. This makes it so you don't have to touch the stock options.
You can use multiple options files, and they will over ride each other. So you can have a overall options file and project specific options files.
PROJECT being one of the available projects in the projects directory in the source tree.
Here is a description of scripts that you will you while making a patch
This will build a specific package in the build tree
PROJECT=Generic ARCH=x86_64 ./scripts/build kodi
This will clean (remove) a specific package from the build tree
PROJECT=Generic ARCH=x86_64 ./scripts/clean kodi
This will unpack a specific package into the build tree
PROJECT=Generic ARCH=x86_64 ./scripts/unpack kodi
This will pull the source from git/svn and package it for you. This is useful if you want to use a specific version or branch.
This will clean all build folders
This will make a release tarball that can be use to update OpenELEC easily
PROJECT=Generic ARCH=x86_64 make release
This will make an image that can be written directly to a disk
PROJECT=Generic ARCH=x86_64 make image
Making an image requires super user permissions. We are not responsible if something happens to your system.
Here is the workflow to create a patch
PROJECT=Generic ARCH=x86_64 ./scripts/clean kodi PROJECT=Generic ARCH=x86_64 ./scripts/unpack kodi cd build.OpenELEC-Generic.i386-devel cp -r kodi-14-b5dbdb5 kodi-14-b5dbdb5.orig
Make some changes to the kodi-14-b5dbdb5 package, then check the diff
diff -Naur kodi-14-b5dbdb5.orig kodi-14-b5dbdb5
If everything looks good,
diff -Naur kodi-14-b5dbdb5.orig kodi-14-b5dbdb5 > ../packages/mediacenter/kodi/patches/kodi-201-very-descriptive-name.patch cd ..
PROJECT=Generic ARCH=x86_64 ./scripts/clean kodi PROJECT=Generic ARCH=x86_64 ./scripts/build kodi
Patches must follow the same naming convention, however, sometimes different amounts of digits are used. Look at other patches to decide.
Try and make the name descriptive without it being too long
If you want to submit a patch make sure to include you name/email/contact as a comment in the patch!
Adjusting the kernel config is best done by using the tools in the package, not by editing the kernel config directly
PROJECT=Generic ARCH=x86_64 ./scripts/clean linux PROJECT=Generic ARCH=x86_64 ./scripts/unpack linux cd build.OpenELEC-Generic.i386-devel/linux-3.19.0 cp ../../projects/Generic/linux/linux.x86_64.conf .config
then run kernel configuration with
make menuconfig or
make xconfig or
Make the changes you would like. Save them and exit the config utility.
cp .config ../../projects/Generic/linux/linux.x86_64.conf cd ../..
Then build it
PROJECT=Generic ARCH=x86_64 ./scripts/clean linux PROJECT=Generic ARCH=x86_64 ./scripts/build linux