[GNC-dev] iOS app
Camille Rizko
camriz at yahoo.com
Tue Apr 28 15:56:22 EDT 2020
Hello Geert, After 2 frustrating and unsuccessful attempts to install development on the Mac, I ended up reverting back to Linux. I have compiled and ran successfully gnucash on Debian. Do you have a preferred IDE that you use on Linux?, I haven't used EMACS for almost 15 years and would rather use a newer IDE/editor. Let me know.
On Thursday, April 23, 2020, 10:09:52 AM PDT, Camille Rizko via gnucash-devel <gnucash-devel at gnucash.org> wrote:
Thank you Geert, I can develop on Linux as well as MacOS. My Linux station is a portable running Debian 9. My macOS is a workstation with a 26" screen, obviously a better choice for me.
I did download the source on Linux and went as far as running the cmake but encountered an error at line 59. Since I prefer the Mac station, I will download the Mac development and see if I have better luck doing a complete build.
Once I have a successful build, I will look into app-utils and see what I can do with it. The objective I assume is to port it to 100% C/C++, for all platforms, and eventually make it portable and usable by my iOS app.
MacOS and iOS are different OS builds, but they share a common compiler set, namely Objective C (superset of C/C++) and now SWIFT. The OBJECTs sometimes differ between MacOS and iOS, but are quite similar otherwise.
On Wednesday, April 22, 2020, 01:37:14 AM PDT, Geert Janssens <geert.gnucash at kobaltwit.be> wrote:
#yiv1000945645 p, #yiv1000945645 li {white-space:pre-wrap;}
Hi Camille,
There is plenty of work on the gnucash project. However I'll focus on your eventual goal of basing your iOS app on the gnucash core.
I think your first step would be to familiarize yourself with the gnucash build system. We have wiki pages describing how to build gnucash on linux, MacOS and Windows [1]. I assume you are developing on MacOS, so I suggest you follow the instructions to setup a gnucash build environment on that platform and make sure you can build gnucash.
When you get to that point, you can start tweaking the build scripts to make them build only only what you need for the iOS app. I would think in the gnucash repo itself that would be the contents of libgnucash.
The biggest caveat here is that libgnucash/app-utils still depends quite a bit on guile, which is not what you'd want for iOS. So here's another opportunity to help out: rework app-utils to no longer depend on guile. I'll be honest; that's pretty involved so maybe not a good starting project.
The alternative approach would be to alter the build scripts such we can specify to build without the gui (already possible by setting WITH_GNUCASH=OFF to gnucash' cmake invocation) and without guile (which requires a new cmake parameter, for example WITH_GUILE). If both are set the build should only include libengine, but then without app-utils. That would probably give you most of what you need for a first version of the iOS app on top of the gnucash logic. As the guile separation goal progresses within the gnucash project, more of app-utils can be included in the minimal build for iOS, giving you even more features to work with.
Besides the gnucash repo there is the gnucash-on-osx repo which contains the build system for all of gnucash' dependencies on that platform. As it currently stands it will build more dependencies than you need for an iOS app. You're most likely not interested in gtk stuff, though you will still need glib (as libgnucash is still using it a lot).
gnucash-on-osx uses the jhbuild build system. To help you build only the parts you need for an iOS app, you can add a new module in gnucash.modules that would only trigger the build of dependencies for libgnucash instead of all of gnucash.
My experience with building on MacOS is limited and I have no experience at all with building for iOS so there are certainly things I am missing or glossing over. For example I have no idea how different the MacOS environment is from the iOS environment (runtime wise), so I can't tell if there will be a porting effort involved. I mean the source code of gnucash and its dependencies have been tweaked to build an run on MacOS. I have no idea whatsoever if extra tweaking will be required to build for and run on iOS. If so that would be another task, though I would first try to get the build system to output only the minimal set of dependencies and gnucash libraries.
I can probably help on the build system side within the gnucash project itself, like adding the extra switch to disable building with guile. I have a reasonable notion of how jhbuild works, but I don't have access to a MacOS system any more. So I can give advice or suggestions on the jhbuild tweaks, but can test any of those.
Skills you'll probably need or need to develop include: working with git [2], understanding cmake, working with jhbuild and obviously C and C++.
All changes you make in gnucash-on-osx or gnucash repositories can be submitted for inclusion via either pull requests on github (preferred) or patches in bugzilla. It goes without saying these changes should be such that they won't break the normal gnucash build.
If you have questions, consult our wiki, ask on irc or the gnucash-devel mailing list.
Other than that, enjoy the ride ! Happy hacking :)
Regards,
Geert
[1] https://wiki.gnucash.org/wiki/Building
[2] https://wiki.gnucash.org/wiki/Git
Op zondag 19 april 2020 21:43:46 CEST schreef Camille Rizko:
> Hello Geert, To help I need guidance and direction. I have never developed
> as part of a project such as gnuCash before. If you can think of a good
> first exercise, I am willing to try. On Sunday, April 19, 2020, 11:00:12 AM
> PDT, Geert Janssens <geert.gnucash at kobaltwit.be> wrote:
>
> #yiv8039829096 p, #yiv8039829096 li {white-space:pre-wrap;}
> Hi Camille,
>
>
>
> Most of the code relevant for your viewer is indeed C/C++. Parts are gnucash
> are also written in guile, but if I understand correctly that language is
> not available on iOS.
>
>
>
> I'm working on separating the guile parts from the non-gui core of gnucash
> specifically to make it easier to port that core to platforms such as iOS
> or Android.
>
>
>
> Unfortunately that work isn't completely done yet so I will concede that at
> this stage it may take some effort to get it going. Perhaps you are
> interested in helping out with this ?
>
>
>
> Regards,
>
>
>
> Geert
>
>
>
> Op zondag 19 april 2020 19:46:11 CEST schreef Camille Rizko:
> > Hello Geert, I can investigate how to read the database using the code
> >
> > base. My app is a viewer, so "read only". I have been using gnucash since
> >
> > 2015, but have not at all looked at the code base. I can probably succeed
> >
> > with some effort if the code is in C or C++ language. On Sunday, April 19,
> >
> > 2020, 06:00:54 AM PDT, Geert Janssens <geert.gnucash at kobaltwit.be> wrote:
> >
> >
> >
> > #yiv2676310034 p, #yiv2676310034 li {white-space:pre-wrap;}
> >
> > Ok. That's fair.
> >
> >
> >
> >
> >
> >
> >
> > Do note GnuCash supports database storage as well as xml and will likely
> >
> > switch to database (sqlite3) as primary storage format somewhere in the
> >
> > future.
> >
> >
> >
> >
> >
> >
> >
> > Also note the data format can change from major release to major release.
> > So
> >
> > if you're not using the gnucash engine code to parse the data files you
> >
> > will have to keep up with these changes over time on your own.
> >
> >
> >
> >
> >
> >
> >
> > Other than that it's still cool to see a gnucash compatible ios app.
> >
> >
> >
> >
> >
> >
> >
> > Regards,
> >
> >
> >
> >
> >
> >
> >
> > Geert
> >
> >
> >
> >
> >
> > Op zondag 19 april 2020 00:45:12 CEST schreef Camille Rizko:
> > > Hello,
> > >
> > >
> > >
> > > It is from scratch, it is written in swift, it decompresses the .gnucash
> > >
> > >
> > >
> > > file then parses the xml file and displays the account tree.
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > Sent from my iPhone
> > >
> > > > On Apr 18, 2020, at 5:37 AM, Geert Janssens
> > > > <geert.gnucash at kobaltwit.be>
> > > >
> > > >
> > > >
> > > > wrote:
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > An iOS app that can view gnucash files is certainly nice.
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > Is it a from-scratch implementation or did you reuse our gnucash code
> > > >
> > > > for
> > > >
> > > >
> > > >
> > > > it (the latter would be really awesome) ?
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > Regards,
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > Geert
> > > >
> > > > Op vrijdag 17 april 2020 18:17:28 CEST schreef Camille Rizko via gnucash-devel:
> > > > > Hello, I developped an iOS app that allows me to view my gnuCash
> > > > > files
> > > > >
> > > > >
> > > > >
> > > > > on
> > > > >
> > > > >
> > > > >
> > > > > iphone or ipad. It shows the list of accounts with totals. It also
> > > > >
> > > > > shows
> > > > >
> > > > >
> > > > >
> > > > > Balance sheet to date, Balance sheet last year, income statement
> > > > > last
> > > > >
> > > > >
> > > > >
> > > > > year
> > > > >
> > > > >
> > > > >
> > > > > and income statement to date. Is this of interest to the community?
> > > > >
> > > > >
> > > > >
> > > > > _______________________________________________
> > > > >
> > > > >
> > > > >
> > > > > gnucash-devel mailing list
> > > > >
> > > > >
> > > > >
> > > > > gnucash-devel at gnucash.org
> > > > >
> > > > >
> > > > >
> > > > > https://lists.gnucash.org/mailman/listinfo/gnucash-devel
> >
> >
> >
> >
> >
> >
>
>
>
>
_______________________________________________
gnucash-devel mailing list
gnucash-devel at gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel
More information about the gnucash-devel
mailing list