[GNC-dev] GnuCash 3.0 wine versus Windoze 10

Geert Janssens geert.gnucash at kobaltwit.be
Fri Apr 20 13:50:23 EDT 2018


Op vrijdag 20 april 2018 19:23:36 CEST schreef jeffrey black:
> On 04/20/2018 11:44 AM, Robin Chattopadhyay wrote:
> 
> > David-
> >
> >
> >
> > Thank you very much for this comprehensive tutorial for building from
> > source. I'm newish to Linux and I want to be able to do this but I've
> > been
> > confused. I managed to muddle through building 3.0 from source the
> > evening
> > before your email came.
> >
> >
> >
> > I have some lingering questions that maybe this group can help with:
> > After downloading the source and extracting the files, I made a second
> > directory for the build, so I had:
> > /home/foo/gnucash-3.0
> > /home/foo/gnucash-build
> >
> >
> >
> > Is this a correct/reasonable/best practice?
> >
> >
> >
> > After I successfully ran cmake and make install and I can run gnucash,
> > what
 if anything, can I or should I delete? Or should I keep the source
> > and build directories?
> >
> >
> >
> > I was running into problems with cmake when I set -D WITH_PYTHON=ON. I
> > didn't capture any of the error messages, but it IIRC it was complaining
> > about not having some test utility. I eventually switched to -D
> > WITH_PYTHON=OFF and I was able to proceed. Is it possible that this is
> > related to not installing the GTEST/GMOCK packages?
> >
> >
> >
> > Thanks,
> > Robin
> >
> >
> >
> > On Fri, Apr 20, 2018 at 3:35 AM, DaveC49 <davidcousens at bigpond.com>
> > wrote:
> >
> >
> >
> >> Jeffrey,
> >>
> >>
> >>
> >> I will start form scratch. The first step is setting up for building. My
> >> apologies if I am teaching you to suck eggs. Linux Mint has an alias of
> >> apt
 defined for apt-get. I am not sure if it is also defined in Ubuntu.
> >> If not substitute apt-get where I have apt in the following.
> >>
> >>
> >>
> >> # first download a copy of the gnucash source code gnucash-3.0.tar.bz2
> >> from
 # https://www.gnucash.org/download.phtml and extract the
> >> gnucash-3.0 source
> >> file. I use a folder called # Applications in my home directory for
> >> programs
> >> and libraries I build from scratch and usually keep the
> >> # sources there so i can easily rebuild if I strike a problem, but that
> >> is
> >> just a personal preference.
> >>
> >>
> >>
> >> #Open a terminal/bash shell and then cd to the extracted folder
> >> gnucash-3.0.
> >>
> >>
> >>
> >> # this loads compilers,dev tools etc as per
> >> https://packages.ubuntu.com/xenial/build-essential
> >> $sudo apt install build essential
> >> $sudo apt install cmake
> >>
> >>
> >>
> >> #the next step is to install the gnucash dependencies as listed in the
> >> README.dependencies file under the #gnucash-3.0 folder. This generally
> >> lists
> >> the minimum version of the libraries required. You will generally find
> >> that
> >> Ubuntu will in most cases load a later version. I will list the command
> >> to
> >> load  followed by the required version as in that file as a #comment
> >> separated by a #. The list on https://wiki.gnucash.org/wiki/Building
> >> lists
> >> the development headers that are required but you may also need to load
> >> the
 libraries as well
> >>
> >>
> >>
> >> sudo apt-get install libtool libltdl-dev
> >> #glib2 >        v2.40.0
> >> sudo apt-get install libglib2.0 libglib2.0-dev
> >> sudo apt-get install icu-devtools libicu-dev
> >> # boost > 1.50.0
> >> sudo apt-get install libboost-all-dev
> >> # guile >=2.0.0
> >> sudo apt-get install guile-2.0 guile-2.0-dev
> >> #swig  >2.0.10
> >> sudo apt-get install swig2.0
> >> sudo apt-get install libxml2 libxml++2.6-dev
> >> sudo apt-get install libxslt1.1 libxslt1-dev
> >> sudo apt-get install xsltproc
> >> sudo apt-get install libgtest-dev
> >> sudo apt-get install gtk+3.0
> >> sudo apt-get install libgtk-3-dev
> >> sudo apt-get install libwebkit2gtk-4.0-37
> >> sudo apt-get install libwebkit2gtk-4.0-dev
> >> sudo apt-get install libdbi1 libdbi-dev
> >> # if you use a database backend  rather than the default XML backaend
> >> # you need to load at least one of the following
> >> # and choose the one relevant to the database you want to use
> >> sudo apt-get install libdbd-pgsql   #PostgreSQL database
> >> sudo apt-get install libdbd-mysql  # MySQL database
> >> sudo -get install libdbd-sqlite3     #Sqlite database
> >> # these are needed if you use online banking tools
> >> sudo apt-get install libofx6 libofx4 libofx-dev
> >> dpkg -lsudo apt-get aqbanking-tools libaqbanking-dev
> >> # this is required on linux systems it may be already installed but will
> >> tell you if it is
> >> sudo apt-get install dconf-cli
> >> #
> >> # you can check out what versions of packages are installed or not using
> >> the
> >> following command
> >> dpkg -l | grep <package name>
> >> # here <package name> can be the actual package name or a substring.
> >> grep
> >> will extract anything
> >> # from the dpkg -l output which contains that substring
> >> #
> >> # The next step is getting googletest setup. The version from the Ubuntu
> >> repository is 1.7.0 and does not
> >> # contain gmock within the gtest download. V1.8.0 has both in the one
> >> repository and is a little bit easier
> >> #  to setup. Google do not recommend using googlemock and googletest as
> >> shared dynamically linked
> >> #  libraries because if a program is compiled with different compiler
> >> flags
 from the libraries links to them
> >> # at run time they can fail something I did not appreciate but I haven't
> >> had
> >> any problems so far.
> >> # To set it up as recommended by Google and the developers, at a
> >> terminal
> >> opened in a suitable folder (e.g. $HOME/Applications is what I use) 
> >> enter:
 #
> >> git clone https://github.com/google/googletest.git
> >> #
> >> #this will create a folder googletest-master which has sub folders
> >> googletest and googlemock
> >> #
> >> cd googletest-master
> >> cmake -D BUILD_GTEST -DBUILD_GMOCK
> >> make
> >> # this creates the gtest and gmock libraries within the
> >> googletest-master
> >> folder but does not install them
> >> # as shared dynamically linked libraries. You then need to create
> >> environment variables pointing to the
> >> # top level folders containing these libraries
> >> export GTEST_ROOT=<path-to-googletest-master>/googletest
> >> export GMOCK_ROOT=<path-to-googletest-master>/googlemock
> >> # where <path-to-googletest-master> is in my case
> >> $HOME/Applications/googletest-master. This allows
> >> # CMake to find the googletest and googlemock libraries and include
> >> files
> >> to
> >> link into the program.
> >> #
> >> # At this point you should be ready to build gnucash. I prefer to
> >> install
> >> it
> >> in the /usr/local folder. This is
> >> # where the linux distros generally install it. If your previous version
> >> was
> >> installed from a Linux
> >> # distribution this is normally where it will be. It can also be
> >> installed
> >> under /opt. The essential step I
> >> # found was to ensure that all traces of any previous version of GnuCash
> >> were removed before doing
> >> # the build.
> >> #If you previously had a version from the Linux distro
> >> sudo apt-get remove gnucash
> >> # should achieve this. If you built a previous version from sources and
> >> still have the build sources
> >> # change to the  build directory (may be the source directory (e.g.
> >> gnucash-2.6.19) or may be directory
> >> # named build, my-build or similar under the source directory) and type
> >> at
> >> the terminal
> >> sudo make uninstall
> >> # to check whether you have been succesful or not type
> >> whereis gnucash
> >> # If nothing is returned then you have removed it successfully. If
> >> whereis
> >> returns any of
> >> /usr/local/bin/gnucash
> >> /usr/local/etc/gnucash
> >> /usr/local/lib/gnucash
> >> # then those directories should be be removed. In this case use
> >> rm -r /usr/local/bin/gnucash
> >> rm-r /usr/local/etc/gnucash
> >> rm -r /usr/local/lib/gnucash
> >> #
> >> # now open a terminal at the toplevel gnucash-3.0 folder
> >> mkdir mybuild
> >> cd mybuild
> >> cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_AQBANKING=OFF -D
> >> WITH_OFX=ON ..
> >> #
> >> # You will find a full list of the option switches( i.e. -D WITH_...)
> >> with
> >> their default values towards the top
> >> # of the Wiki Build page https://wiki.gnucash.org/wiki/Building. I
> >> required
> >> the OFX support for loading
> >> # OFX files but don't use the AQBANKING support as Australian banks
> >> currently don't allow direct access.
> >> # if you are using a database backend e.g. you would require -D
> >> WITH_SQL=ON
 #
> >> # cmake should do a lot of checks as it runs and issue sttus messages
> >> and
> >> it
> >> will stop if it encounters any
> >> # problems. At this point come back with the terminal output and I (if
> >> it
> >> is
> >> failry simple) or perhaps one of
> >> # the developers can help sort it out. If it succeeds you will get a
> >> mesaage
> >> saying that it is writing the
> >> # make files into the mybuild directory you created above.  Note there
> >> was
> >> some discussion of the
> >> # mybuild directory having to be outside the gnucash-3.0 directory. This
> >> is
 the case for building the
> >> # documentation I believe, but is not the case for building GnuCash
> >> itself.
 # If cmake completes successfully type at the terminal
> >> make
> >> # to build Gnucash. If make has any errors come back with the terminal
> >> output. The only error i had here
> >> # was with not having uninstalled the previous version fully.  If make
> >> completes without error then
> >> #type in the terminal
> >> sudo make install
> >> # which will install Gnucash
> >> whereis gnucash
> >> # should then return the following
> >> /usr/local/bin/gnucash
> >> /usr/local/etc/gnucash
> >> /usr/local/lib/gnucash.
> >>
> >>
> >>
> >> If you have previously installed from the menu you should have a menu
> >> item
> >> which points to /usr/local/bin/gnucash. If not create a new menu item
> >> for
> >> Gnucash and put gnucash %f as the command and if you can locate a
> >> gnucash
> >> icon set the icon to point to it. There is one in the sources at
> >> ~/gnucash-3.0/data/pixmaps/gnucashicon.ico which you could copy to where
> >> your system installs icons. I think it normally should be copied on
> >> installation but there have been a few posts about it not being copied
> >> possibly on Windows and Macs.
> >>
> >>
> >>
> >> If you have any problems come back on the forum and we will try to sort
> >> it
> >> out from there.
> >>
> >>
> >>
> >> Good luck
> >>
> >>
> >>
> >> David
> >>
> >>
> >>
> >>
> >>
> >>
> >> -----
> >> David Cousens
> >> --
> >> Sent from:
> >> http://gnucash.1415818.n4.nabble.com/GnuCash-Dev-f1435356.html
> >> _______________________________________________
> >> 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
> > .
> >
> >
> 
> David:
> 
> No offense taken.  It's not the first time I have had to have someone 
> hold me by the hand and walk me trough the obvious stuff to build a 
> program.
> 
> I will continue to use the default data structure files.  SQL and I have 
> a tendency to argue with each other.
> 
> I will give your tutorial a try, in a few days.
> 
> Question:
> 
> I would like to run any builds I do under a different program name, 
> keeping a stable version for backup use.  Any idea of how much of a hole 
> I would be digging myself into?  Not as GnuCash but; say MyGnuCashBuild.
> 
> My guess is I would need to set up a VM to have different versions on 
> the same system?  I would probably be better off to use my builds on 
> this Ubuntu tower and continue with the stable on my laptop, with 
> separate data files.
> 
> --JEffrey Black M.B.A

I have always liked that idea, but never got around testing whether this is 
achievable.

Here are a few possible avenues depending on how far you want to go and how 
much you like to experiment.

The easy method is to create a linux softlink named MyGnuCashBuild which 
points at your locally built gnucash executable.
If you put that softlink in a directory that's on your path, you can start 
MyGnuCashBuild directly from the command line.

But other than the name to use to start gnucash, this doesn't change anything 
else.

As you built gnucash yourself, you could also rename the executable file 
itself directly. I think this is picked up at a couple of places in the GUI, 
but definitely not everywhere.

Next if you want to have gnucash appear twice with a different name in your 
desktop environment's menus you can create a personalized gnucash.desktop file 
which you can store in $HOME/.local/share/applications. This was explained by 
me and Colin Law a couple of days ago on the gnucash-devel or gnucash-user 
mailing list.

And lastly (totally untested) you could try and configure your gnucash build 
to use a custom package name by adding -DPACKAGE=MyGnuCashBuild to your cmake 
invocation and rebuilding. The PACKAGE macro is used in *a lot* of places to 
determine names of paths, environment variables, dconf settings and so on. If 
it works (that is if the code never assumes a hardcoded "gnucash" in any of 
those spots) you will have a completely different application, looking for 
different settings in dconf and on the file system ensuring you never alter 
anything that's touched by the stable gnucash. As said, this is totally 
untested so it may not work at all. I'd be interested in the results though so 
if you feel like doing the experiment, be sure to report back!

Regards,

Geert




More information about the gnucash-devel mailing list