[Ohrrpgce] Android port

Seth Hetu seth.hetu at gmail.com
Wed Jun 5 19:39:26 PDT 2013


There's a "Debug" key that the Android development kit provides for
signing APKs while you are simply developing for your own device. You
could (presumably) hook that if a game developer simply wants to test
out their game on their own phone.

-->Seth

On Wed, Jun 5, 2013 at 9:28 PM, Ralph Versteegen <teeemcee at gmail.com> wrote:
> On 6 June 2013 02:19, James Paige <Bob at hamsterrepublic.com> wrote:
>> On Wed, Jun 05, 2013 at 10:58:28PM +1200, Ralph Versteegen wrote:
>>> Wow, thanks for the help, I didn't actually mean to ask you to perform
>>> all those tests :)
>>>
>>> I only saw garbage on startup in an emulator with hardware (host)
>>> accelerated OpenGL enabled, but none on my device (which has no GPU)
>>> or an emulator without it. So I thought it might be specific to an
>>> (emulated) GPU being available rather than whether or not it's running
>>> on an emulator.
>>>
>>> We normally test interactivetest.rpg using the
>>> testgame/interactivetest.ohrkeys recorded input file, which is fed in
>>> with a commandline argument. Since being able to specify commandline
>>> arguments would be quite useful I just added the ability to do so
>>> (though I haven't tested it under android). You should be able to
>>> place a file called ohrrpgce_arguments.txt in the
>>> com.hamsterrepublic.ohrrpgce.game/files/ directory. (Is this directory
>>> always on the SD card, or will it be there only if the app is
>>> installed on the SD card? And I don't see where the app binary files
>>> are...
>>
>> As far as I understand, yes, this directory will always exist, although
>> the exact location might vary. In Android terminology, /sdcard does
>> *not* refer to an actual removable SD card, it refers to user-writable
>> storage, which may or may not be a removable SD card depending on device
>> implementation (usually not, as far as I have seen)
>
> My own phone has "internal storage", an "internal SD card"
> (/data/HWUserData) and a removable SD card (/sdcard). There is no
> Android folder for app files in /data/HWUserData however. It hadn't
> occurred to me that some devices (tablets?) wouldn't have a removable
> SD card. I tried removing my microSD card, and sure enough /sdcard
> disappears. I had the OHR installed on internal storage, so I could
> launch it, but it crashes. SDL tries to set the working directory to a
> nonexistent directory:
> I/libSDL  (  428): Changing curdir to
> "/mnt/sdcard/Android/data/com.hamsterrepublic.ohrrpgce.game/files"
>
> As a result, the actual working directory is /, which causes lots of
> errors (and death by File Not Found in findfiles :)
>
> I had forgotten that all the ported SDL programs I tried wouldn't run
> until I bought and installed a microSD card. However I think we can
> get by without requiring one. Even on my phone there is 75MB of space
> available in /cache (the total internal storage seems to be about
> 600MB, split into quite a few partitions including the "internal SD
> card").
>
>>> To compile Custom, just specific 'custom' instead of 'game' when
>>> invoking scons. This didn't work before, I just fixed that. Tried it
>>> out now, compiled and ran fine. But the app will still be called
>>> OHRRPGCE Game. I guess we probably don't want to seriously package
>>> Custom for android, so that at least saves the hassle of multiple
>>> project directories and config files. (But what about packaging
>>> individual games?)
>>
>> Ideally, I would like for people to be able to export their game as an
>> android apk from the Distribute Games menu. They would have to install
>> the Android SDK, and they would have to create their own signing key on
>> google play and specify its location to the distribute game settings.
>>
>> Then the Distribute menu could download a pre-built unsigned binary of
>> the OHRRPGCE Game apk. it would add the game to it, add a user-specified
>> icon (I want that for Windows and Mac too, but that is beside the point)
>> and then sign it with their key, ready to upload to the play store.
>>
>> Of course, We also need to be able to change the package name to
>> something other than com.hamsterrepublic.ohrrpgce.game so I don't know
>> how practical that will be to do with a pre-built binary.
>
> I think we should also allow exporting non-signed .apks without
> requiring the SDK to be installed, so that people can at least try out
> their game on their own phone. An .apk is mostly just a .zip, however
> it also seems to have an alignment requirement for file chunks, which
> would probably require a separate utility.
>
> Actually, if you look at build.sh and sign.sh in sdl-android, it seems
> that only two utilities are needed for putting together and signing an
> .apk: jarsigner and zipalign. zipalign is part of the Android project,
> while jarsigner is a Java utility. Maybe we could distribute jarsigner
> too.
>
>> For people who don't have their own domain name, we can provide a
>> namespace like com.hamsterrepublic.ohrrpgce.games.gamename but I would
>> also like to allow people to specify their own namespaces, so for your
>> own game, tmc, you might choose to use
>> com.castleparadox.tmc.foresttemple or maybe Mogri would want to use
>> com.slimesalad.phantomtactics or Harlock might use
>> org.crithit.spellshard
>
> Is there any point to allowing customisation of namespace? I think it
> just has to be unique, eg a com.hamsterrepublic.ohrrpgce.games.
> prefix.
> I see that the Android documentation says "To avoid conflicts with
> other developers, you should use Internet domain ownership as the
> basis for your package names (in reverse)."
>
>>> The Compiling on Android page gives instructions for compiling
>>> commandline programs, which is anything aside from Game and Custom. It
>>> produces binaries in the wip folder which you need to copy to the
>>> device and run manually. When not crosscompiling, "scons test" can be
>>> used to run all test programs and games.
>>>
>>> On 5 June 2013 11:00, Seth Hetu <seth.hetu at gmail.com> wrote:
>>> > Regarding the other tests, I copied interactivetest.rpg to the games
>>> > folder and ran it, but there aren't enough input buttons for me to run
>>> > it manually. (I was able to run it through about six tests). I there a
>>> > way to run it automatically?
>>> >
>>> > For vectortest and reloadtest, I was only able to find some binary
>>> > files in wip. Is this something I should copy to the device and run?
>>> > I'm not really familiar with the OHR's testing framework.
>>> >
>>> > Finally, regarding Custom, I'm in way over my head;
>>> > "MainActivity-debug.apk" seems to only contain Game. Any thoughts on
>>> > how to point sdl-android to Custom as the main Activity?
>>> >
>>> > -->Seth
>>> >
>>> >
>>> > On Mon, Jun 3, 2013 at 10:26 PM, Ralph Versteegen <teeemcee at gmail.com> wrote:
>>> >> Great! Good to hear that I didn't miss anything in the compile instructions.
>>> >>
>>> >> The git clones of the OHR repository on gitorious (both mine and
>>> >> Neo's) are far out of date. I only rarely push anything to gitorious.
>>> >>
>>> >> Do you see garbage on screen when the program starts?
>>> >> There's very little that I've actually tested; I expect that there are
>>> >> lots of problems to be found. Do save files work? Custom?
>>> >> interactivetest?) Do vectortest and reloadtest pass? (Note that they
>>> >> put the terminal into a non-echoing state) I haven't been able to
>>> >> reproduce the test failure I saw before.
>>> >>
>>> >> On 4 June 2013 05:45, Seth Hetu <seth.hetu at gmail.com> wrote:
>>> >>> Ugh, sorry, I'm an idiot. Figured out what I did wrong. I now have
>>> >>> successfully compiled the OHR for Android (am playing WH now). :D
>>> >>>
>>> >>> -->Seth
>>> >>> PS: I'm totally willing to help test out random stuff if you need it.
>>> >>> I've got a Nexus 4, and (finally) a working toolchain.
>>> >>>
>>> >>> On Mon, Jun 3, 2013 at 1:07 PM, Seth Hetu <seth.hetu at gmail.com> wrote:
>>> >>>> I ran into an error in the last phase of compiling the APK; posted it
>>> >>>> to the talk page of the wiki.
>>> >>>>
>>> >>>> That reminds me; is it better to post about these kinds of errors to
>>> >>>> the list or just in the talk page?
>>> >>>>
>>> >>>> -->Seth
>>> >>>>
>>> >>>> On Mon, Jun 3, 2013 at 10:31 AM, Seth Hetu <seth.hetu at gmail.com> wrote:
>>> >>>>> Ah, thanks. I misread "the latest SVN" and picked up the latest git source.
>>> >>>>>
>>> >>>>> -->Seth
>>> >>>>>
>>> >>>>> On Mon, Jun 3, 2013 at 10:13 AM, James Paige <Bob at hamsterrepublic.com> wrote:
>>> >>>>>> That is in the ohrrpgce svn repository
>>> >>>>>>
>>> >>>>>> svn://gilgamesh.hamsterrepublic.com/ohrrpgce
>>> >>>>>>
>>> >>>>>> On Mon, Jun 03, 2013 at 09:22:11AM -0400, Seth Hetu wrote:
>>> >>>>>>> Got a quick question regarding the compiling instructions: "You can
>>> >>>>>>> use the script wip/android/compiling-using-toolchain.sh..."
>>> >>>>>>>
>>> >>>>>>> Where exactly is this? I checked the various repositories I cloned,
>>> >>>>>>> but can't seem to find it. I'm sure there's a really obvious answer...
>>> >>>>>>>
>>> >>>>>>> -->Seth
>>> >>>>>>>
>>> >>>>>>> On Sun, Jun 2, 2013 at 1:59 AM, Ralph Versteegen <teeemcee at gmail.com> wrote:
>>> >>>>>>> > I managed to figure out your makefile problem from the error messages.
>>> >>>>>>> >
>>> >>>>>>> > I'm surprised that Bell of Chaos runs that quickly on your tablet,
>>> >>>>>>> > nearly 5 times faster than my phone. A single core of a high end
>>> >>>>>>> > desktop CPU is nowhere 5 times faster than the lowest end one (well,
>>> >>>>>>> > actually it is if you compare to an Atom instead). I guess that on a
>>> >>>>>>> > device with an actual GPU a lot of CPU is freed up for the
>>> >>>>>>> > application... but if it's running at <4 fps, then there isn't much
>>> >>>>>>> > GPU emulating to do anyway :)
>>> >>>>>>> >
>>> >>>>>>> > I should have specified the button mapping: top left is ESC, top right
>>> >>>>>>> > is Enter, and the other four are arrows. Menu and Search are also
>>> >>>>>>> > Enter, and BACK is Esc.
>>> >>>>>>> >
>>> >>>>>>> > On 2 June 2013 17:30, James Paige <Bob at hamsterrepublic.com> wrote:
>>> >>>>>>> >> No luck compiling tonight, I will try more tomorrow. I tested the apk
>>> >>>>>>> >> and it runs nicely on my Xoom tablet. Sword of Jade ran smooth as butter
>>> >>>>>>> >> (well, 18.2 fps butter anyway) and Bell of Chaos averaged around 16.5
>>> >>>>>>> >> fps. I didn't figure out the SDL button remapping, but that can be a
>>> >>>>>>> >> task for later too :)
>>> >>>>>>> >>
>>> >>>>>>> >> Awesome work, TMC!
>>> >>>>>>> >>
>>> >>>>>>> >> ---
>>> >>>>>>> >> James
>>> >>>>>>> >>
>>> >>>>>>> >> On Sat, Jun 01, 2013 at 09:54:18PM -0700, James Paige wrote:
>>> >>>>>>> >>> Yay! I am excited! :)
>>> >>>>>>> >>>
>>> >>>>>>> >>> I am going to try and compile myself. More comments on the wiki talk
>>> >>>>>>> >>> page :)
>>> >>>>>>> >>>
>>> >>>>>>> >>> ---
>>> >>>>>>> >>> James
>>> >>>>>>> >>>
>>> >>>>>>> >>> On Sat, Jun 01, 2013 at 11:00:54PM +1200, Ralph Versteegen wrote:
>>> >>>>>>> >>> > http://tmc.castleparadox.com/pics/android-shot2.png
>>> >>>>>>> >>> >
>>> >>>>>>> >>> > A few more debugging sessions, and I've gotten the port working on a
>>> >>>>>>> >>> > 2.2 phone and 4.2.2 emulator. So far the only brokenness that I've
>>> >>>>>>> >>> > seen is in the file browser. autotest.rpg passes, though I haven't
>>> >>>>>>> >>> > tried comparing the screenshots. Although I actually got this far a
>>> >>>>>>> >>> > week ago, it took me several days to clean things up, e.g. removing
>>> >>>>>>> >>> > hardcoded paths, fixing the build systems, and fixing various problems
>>> >>>>>>> >>> > with bad path variables I didn't run into before. I've rewritten the
>>> >>>>>>> >>> > compile instructions. Do a git pull on both git repositories and
>>> >>>>>>> >>> > follow the new instructions. Compiling FB actually became more
>>> >>>>>>> >>> > complicated when I did things the proper way.
>>> >>>>>>> >>> > http://rpg.hamsterrepublic.com/ohrrpgce/Compiling_for_Android
>>> >>>>>>> >>> >
>>> >>>>>>> >>> > I put lots of info on the wiki:
>>> >>>>>>> >>> > http://rpg.hamsterrepublic.com/ohrrpgce/Android_Port
>>> >>>>>>> >>> >
>>> >>>>>>> >>> > Here's a precompiled .apk to play with if you want, although it's too
>>> >>>>>>> >>> > early to be asking for testing.
>>> >>>>>>> >>> > http://tmc.castleparadox.com/ohr/ohrrpgce-game-2013-06-01.apk
>>> >>>>>>> >>> > Some of the most obvious problems (see the wiki page for more):
>>> >>>>>>> >>> > -controls are awkward. But at least you can use the builtin SDL
>>> >>>>>>> >>> > configuration menu to adjust key bindings and button sizes and
>>> >>>>>>> >>> > positions
>>> >>>>>>> >>> > -midi doesn't play, simply because I didn't include instrument patches
>>> >>>>>>> >>> > for timidity. The suggested patches are 18MB. Can we find a smaller
>>> >>>>>>> >>> > set?
>>> >>>>>>> >>> > -directories don't appear in the browser
>>> >>>>>>> >>> > -there are long pauses in a couple places
>>> >>>>>>> >>> >
>>> >>>>>>> >>> > On my low end phone I can seemingly play typical games at full speed,
>>> >>>>>>> >>> > although only just. Bell of Chaos runs at less than 4 fps though.
>>> >>>>>>> >>> >
>>> >>>>>>> >>> >
>>> >>>>>>> >>> > On 17 May 2013 07:50, Seth Hetu <seth.hetu at gmail.com> wrote:
>>> >>>>>>> >>> > > Seems pretty similar to my config.mk. Good to know I'm on the right track!
>>> >>>>>>> >>> > > I'll give it another go if I can drum up some motivation later (the sample
>>> >>>>>>> >>> > > sdl-android app is strangely giving me an error).
>>> >>>>>>> >>> > >
>>> >>>>>>> >>> > > -->Seth
>>> >>>>>>> >>> > >
>>> >>>>>>> >>> > >
>>> >>>>>>> >>> > > On Thu, May 16, 2013 at 3:25 PM, Ralph Versteegen <teeemcee at gmail.com>
>>> >>>>>>> >>> > > wrote:
>>> >>>>>>> >>> > >>
>>> >>>>>>> >>> > >> Ah, yes, setting TARGET_ARCH wasn't sufficient. Here is my config.mk.
>>> >>>>>>> >>> > >> I am using a Slackware64 14.0 multilib system. I haven't edited
>>> >>>>>>> >>> > >> anything else:
>>> >>>>>>> >>> > >>
>>> >>>>>>> >>> > >> ENABLE_PREFIX=1
>>> >>>>>>> >>> > >> CFLAGS := -Wfatal-errors -O2 -I/usr/lib/libffi-3.0.11/include/ -g -m32
>>> >>>>>>> >>> > >> TARGET_ARCH=x86
>>> >>>>>>> >>> > >> prefix=/home/ralph/local/fbc-0.90
>>> >>>>>>> >>> > >> V=1
>>> >>>>>>> >>> > >>
>>> >>>>>>> >>> > >> Linking with libffi is optional: you can add -DDISABLE_FFI.
>>> >>>>>>> >>> > >>
>>> >>>>>>> >>> > >> On 17 May 2013 04:10, Seth Hetu <seth.hetu at gmail.com> wrote:
>>> >>>>>>> >>> > >> > While compiling this on a 64-bit system, it seems that setting
>>> >>>>>>> >>> > >> > TARGET_ARCH
>>> >>>>>>> >>> > >> > is not sufficient. In particular:
>>> >>>>>>> >>> > >> >     * gcc will freak out regarding assembly functions and "operand type
>>> >>>>>>> >>> > >> > mismatch" errors.
>>> >>>>>>> >>> > >> >     * gcc won't find libffi (on Ubuntu), as it's in a special
>>> >>>>>>> >>> > >> > "i686-linux-gnu" directory inside "/usr/include".
>>> >>>>>>> >>> > >> >
>>> >>>>>>> >>> > >> > To get around this, I just hacked the makefile, changing:
>>> >>>>>>> >>> > >> >
>>> >>>>>>> >>> > >> > ALLCFLAGS := -Wall -Werror-implicit-function-declaration
>>> >>>>>>> >>> > >> >
>>> >>>>>>> >>> > >> > ..to:
>>> >>>>>>> >>> > >> > ALLCFLAGS := -Wall -Werror-implicit-function-declaration -m32
>>> >>>>>>> >>> > >> > -I/usr/include/i686-linux-gnu
>>> >>>>>>> >>> > >> >
>>> >>>>>>> >>> > >> > If you got this working on a 64-bit system some other way, let me know
>>> >>>>>>> >>> > >> > (I'm
>>> >>>>>>> >>> > >> > really bad at makefiles).
>>> >>>>>>> >>> > >> >
>>> >>>>>>> >>> > >> > -->Seth
>>> >>>>>>> >>> > >> >
>>> >>>>>>> >>> > >> >
>>> >>>>>>> >>> > >> > On Fri, May 10, 2013 at 5:53 PM, Ralph Versteegen <teeemcee at gmail.com>
>>> >>>>>>> >>> > >> > wrote:
>>> >>>>>>> >>> > >> >>
>>> >>>>>>> >>> > >> >> I did some work on the Android port today, and got to the point of
>>> >>>>>>> >>> > >> >> being able to compile everything, create an .apk, and install it. It
>>> >>>>>>> >>> > >> >> currently crashes almost instantly with only the following error
>>> >>>>>>> >>> > >> >> message (an earlier version at least managed to initialise everything
>>> >>>>>>> >>> > >> >> except the native code).
>>> >>>>>>> >>> > >> >>
>>> >>>>>>> >>> > >> >> D/dalvikvm( 9355): Trying to load lib
>>> >>>>>>> >>> > >> >> /data/app-lib/com.hamsterrepublic.ohrrpgce.game-1/libapplication.so
>>> >>>>>>> >>> > >> >> 0x41f5cdf0
>>> >>>>>>> >>> > >> >> I/ActivityManager(  495): Process com.hamsterrepublic.ohrrpgce.game
>>> >>>>>>> >>> > >> >> (pid 9355) has died.
>>> >>>>>>> >>> > >> >>
>>> >>>>>>> >>> > >> >> Instructions are here:
>>> >>>>>>> >>> > >> >> http://rpg.hamsterrepublic.com/ohrrpgce/Compiling_for_Android
>>> >>>>>>> >>> > >> >>
>>> >>>>>>> >>> > >> >> I've automated all the drudgery. Now the hard work remains: debugging,
>>> >>>>>>> >>> > >> >> platform and device differences, Android-specific OHR modifications,
>>> >>>>>>> >>> > >> >> touch input, and lots of customisations to all the stuff in the SDL
>>> >>>>>>> >>> > >> >> port. For example I'm not very happy with the way that emulated
>>> >>>>>>> >>> > >> >> keyboard input works. we will want per-game settings without having to
>>> >>>>>>> >>> > >> >> recompile.
>>> >>>>>>> >>> > >> >>
>>> >>>>>>> >>> > >> >> However I'm taking a break for a while. I have too much else to do.
>>> >>>>>>> >>> > >> >> _______________________________________________
>>> >>>>>>> >>> > >> >> Ohrrpgce mailing list
>>> >>>>>>> >>> > >> >> ohrrpgce at lists.motherhamster.org
>>> >>>>>>> >>> > >> >> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>>> >>>>>>> >>> > >> >
>>> >>>>>>> >>> > >> >
>>> >>>>>>> >>> > >> >
>>> >>>>>>> >>> > >> > _______________________________________________
>>> >>>>>>> >>> > >> > Ohrrpgce mailing list
>>> >>>>>>> >>> > >> > ohrrpgce at lists.motherhamster.org
>>> >>>>>>> >>> > >> > http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>>> >>>>>>> >>> > >> >
>>> >>>>>>> >>> > >> _______________________________________________
>>> >>>>>>> >>> > >> Ohrrpgce mailing list
>>> >>>>>>> >>> > >> ohrrpgce at lists.motherhamster.org
>>> >>>>>>> >>> > >> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>>> >>>>>>> >>> > >
>>> >>>>>>> >>> > >
>>> >>>>>>> >>> > >
>>> >>>>>>> >>> > > _______________________________________________
>>> >>>>>>> >>> > > Ohrrpgce mailing list
>>> >>>>>>> >>> > > ohrrpgce at lists.motherhamster.org
>>> >>>>>>> >>> > > http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>>> >>>>>>> >>> > >
>>> >>>>>>> >>> > _______________________________________________
>>> >>>>>>> >>> > Ohrrpgce mailing list
>>> >>>>>>> >>> > ohrrpgce at lists.motherhamster.org
>>> >>>>>>> >>> > http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>>> >>>>>>> >>> >
>>> >>>>>>> >>> _______________________________________________
>>> >>>>>>> >>> Ohrrpgce mailing list
>>> >>>>>>> >>> ohrrpgce at lists.motherhamster.org
>>> >>>>>>> >>> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>>> >>>>>>> >>>
>>> >>>>>>> >> _______________________________________________
>>> >>>>>>> >> Ohrrpgce mailing list
>>> >>>>>>> >> ohrrpgce at lists.motherhamster.org
>>> >>>>>>> >> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>>> >>>>>>> > _______________________________________________
>>> >>>>>>> > Ohrrpgce mailing list
>>> >>>>>>> > ohrrpgce at lists.motherhamster.org
>>> >>>>>>> > http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>>> >>>>>>> _______________________________________________
>>> >>>>>>> Ohrrpgce mailing list
>>> >>>>>>> ohrrpgce at lists.motherhamster.org
>>> >>>>>>> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>>> >>>>>>>
>>> >>>>>> _______________________________________________
>>> >>>>>> Ohrrpgce mailing list
>>> >>>>>> ohrrpgce at lists.motherhamster.org
>>> >>>>>> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>>> >>> _______________________________________________
>>> >>> Ohrrpgce mailing list
>>> >>> ohrrpgce at lists.motherhamster.org
>>> >>> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>>> >> _______________________________________________
>>> >> Ohrrpgce mailing list
>>> >> ohrrpgce at lists.motherhamster.org
>>> >> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>>> > _______________________________________________
>>> > Ohrrpgce mailing list
>>> > ohrrpgce at lists.motherhamster.org
>>> > http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>>> _______________________________________________
>>> Ohrrpgce mailing list
>>> ohrrpgce at lists.motherhamster.org
>>> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>>>
>> _______________________________________________
>> Ohrrpgce mailing list
>> ohrrpgce at lists.motherhamster.org
>> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
> _______________________________________________
> Ohrrpgce mailing list
> ohrrpgce at lists.motherhamster.org
> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org



More information about the Ohrrpgce mailing list