This decription is not very generic and uses hbmk script instead of hbmk2. It has few other problems, too: - lists lots of packages which are not needed for Harbour - overrides default contrib list - sets HB_*_INSTALL which is not very good precedent, and also not needed. - uses patched (?) source code? The example suggest that Harbour hosted sources are wrong. - it's based on Harbour state about a year ago regarding some concepts.
I'd rather fix INSTALL if it's still missing something. Brgds, Viktor On 2009 Dec 19, at 21:58, Massimo Belgrano wrote: > Thanks to elart (add to harbour website) > > > HOW TO BUILD AND INSTALL HARBOUR FROM SOURCE AND CROSS COMPILE HARBOUR > FOR WIN ON LINUX > ======================================================================================= > > *---------------------------------------- > ( Tested on Ubuntu 9.04 and Ubuntu 9.10 ) > *---------------------------------------- > > To get main reference please read the INSTALL file under the harbour > source directory > > You need to be connected to the Net. > > First please enable the "universe" repositories from menu System > → Administration → Software Sources and confirm repositorie > reload > Please install these deb packages... so you have almost all packages to > compile contrib libraries and related stuffs > > Please open a terminal window Applications → Accessories → > Terminal and type or copy and paste (one row a time then press <enter>) > > sudo apt-get update > > When you use "sudo" the system ask you for a password, please typein > your user password: you will not see any feedback (i.e terminal chars) > when you type your password, so type the password, then press enter; > > sudo apt-get install wget cvs rcs build-essential ncurses-dev > libslang2-dev tk8.3-dev unixodbc-dev subversion libncurses-dev > libx11-dev libgpm-dev libcurl4-openssl-dev firebird2.1-dev > libfreeimage-dev libgd2-xpm-dev libmysqlclient15-dev libpq-dev > libqt4-dev liballegro4.2-dev libsqlite3-dev wine dosemu-freedos mingw32 > > Then update from svn Harbour > > 1) - Please open a terminal window Applications → Accessories > → Terminal > 2) - Please check the requested packages are installed see above; > 3) - Type the commands rows below you can also do a copy and paste of the > row, please copy and paste a row a time then press enter; > > mkdir $HOME/src > cd $HOME/src > svn co > https://harbour-project.svn.sourceforge.net/svnroot/harbour-project/trunk/harbour > harbour > cd $HOME/src/harbour > export HB_BIN_INSTALL=/usr/bin > export HB_INSTALL_PREFIX=/usr/bin > export HB_LIB_INSTALL=/usr/lib > export HB_INC_INSTALL=/usr/include > make > sudo -E make install > > When you use "sudo" the system ask you for a password, please typein > your user password: you will not see any feedback (i.e terminal chars) > when you type your password, so type the password, then press enter; > > to verify your build date of harbour, type: > harbour -build > > to generate Harbour for Win > > cd $HOME/src/harbour/; make HB_PLATFORM=win > > export HB_INSTALL_PREFIX=/tmp/hbwin; make install HB_PLATFORM=win > > if you want install hbwin in a different directory than /tmp/hbwin with > more stricted directory permissions... you must use sudo to install it: > > export HB_INSTALL_PREFIX=/usr/bin/hbwin; sudo -E make install > HB_PLATFORM=win > > > *********************************** > Tip: if you want to automate the update and compile from svn please put > this command into a file for example: MBaggharbour2_svn so type > mkdir $HOME/src > cd $HOME/src > > gedit MBaggharbour_svn > > Copy and paste the contents below into the file: > > > #!/bin/bash > clear > echo "----------------------------------------------------------------" > echo "Please wait connecting to svn server to fetch Harbour updates..." > echo "----------------------------------------------------------------" > cd $HOME/src > svn co > https://harbour-project.svn.sourceforge.net/svnroot/harbour-project/trunk/harbour > harbour > > sleep 3 > > cd $HOME/src/harbour > export HB_BIN_INSTALL=/usr/bin > export HB_INSTALL_PREFIX=/usr/bin > export HB_LIB_INSTALL=/usr/lib > export HB_INC_INSTALL=/usr/include > #export HB_CONTRIBLIBS="hbqt hbpgsql hbhpdf rddsql hbsqlit3 hbodbc > gtqtc" > > #hbverfix > > r='n' > > echo "Do you want to run a make clean before to compile sources [Ny] > Please answer in 4 sec" > read -t 4 r > > > if [[ $r == 'Y' || $r == 'y' ]]; then > make clean; make; sudo -E make install > else > make; sudo -E make install > fi > > cw='n' > echo "Do you want to compile Harbour for Win [Ny] Please answer in 30 > sec or press enter" > read -t 30 cw > > if [[ $cw == 'Y' || $cw == 'y' ]]; then > unset cw > cd $HOME/harbour > unset HB_BIN_INSTALL > unset HB_INSTALL_PREFIX > unset HB_LIB_INSTALL > unset HB_INC_INSTALL > old_path=$PATH > export PATH=/tmp/hbwin/bin:$PATH > make HB_PLATFORM=win > export HB_INSTALL_PREFIX=/tmp/hbwin > make install HB_PLATFORM=win > PATH=$old_path > fi > > > > > -------------------------- > Please save and exit from gedit editor then please give to this script > the execute permission, type: > chmod 700 MBaggharbour_svn > > Then to run it... > > cd $HOME/src > ./MBaggharbour_svn > > > then inside /tmp/hbwin/bin you will find hbw* scripts which you can use > to build windows binaries. > > > Point this envvar to the directory where native Harbour executables for > your host platform can be found: > HB_BIN_COMPILE=<HARBOUR_NATIVE_BUILD_DIR>\bin > If you leave this value empty, the make system will try to autodetect it, > so in practice all you have to do is to create a native build first (no > 'install' required), then create the cross-build. If you set this value > manually, it may be useful to know that only harbour, hbpp and hbmk2 > executables are required for a cross-build process to succeed. > > ********************************************************* > Howto compile the harbour/contrib/hbnetio/test/netiotst > ********************************************************** > > # cd $NOME/src/harbour/contrib/hbnetio/tests > > Just add this directory to you PATH, i.e.: > > # export PATH=/tmp/hbwin/bin:$PATH > > to your *nix PATH and then: > > # hbwmk -static -n -w -es2 -mt -gtwin netiotst > > To check the file generated > > # file netiotst.exe > netiotst.exe: PE32 executable for MS Windows (GUI) Intel 80386 32-bit > > To run the test... > > wine ./netiotst.exe > > > > ******************************************************************** >> When all is compiled fine, i must run the complied file inside dosemu... >> right ? > > No. DOSEMU is for pure DOS emulation. Win32 programs should be executed > using WINE, i.e. > wine ./netiotst.exe > ******************************************************************** > > so > > wine ./netiotst.exe > > to debug something > > WINEDEBUG=relay; wine ./netiotst.exe > > or double click using nautilus on the generate exe file > > we can test if the exe is running by typing > ps -el | grep -i netiotst.exe > > You can also register WINE in binfmt and then you can execute windows > programs just like native linux ones if they only have execute attribute > (x). > > > Then please read this > > http://lists.harbour-project.org/pipermail/harbour/2009-September/024351.html > http://lists.harbour-project.org/pipermail/harbour/2009-September/024352.html > > > ********************************************* > To test netio with a server and client app > ********************************************* > > mkdir $HOME/hb_testio > mkdir $HOME/hb_testio/data > cd $HOME/hb_testio > > > We can create 2 prg files... the netio_client.prg and the netio_server.prg > > So we can use gedit to create the netio_client.prg file > > gedit netio_client.prg > > > > -- Then copy and paste the contents below: > > #define DBNAME "net:data/_tst_" > > request DBFCDX > > proc main( cServer, cPort ) > local pSockSrv > > set exclusive off > rddSetDefault( "DBFCDX" ) > ?"start netio app client applications..." > if empty( cServer ) > cServer := '127.0.0.1' > endif > if empty( cPort ) > cPort := '63000' > endif > > ? > ? "NETIO_CONNECT():", cServer, int( val( cPort ) ), netio_connect( > cServer, int( val( cPort ) ) ) > ? > > createdb( DBNAME ) > testdb( DBNAME ) > wait > > return > > proc createdb( cName ) > local n > if !dbExists( DBNAME ) > dbCreate( cName, {{"F1", "C", 20, 0},; > {"F2", "M", 4, 0},; > {"F3", "N", 10, 2},; > {"F4", "T", 8, 0}} ) > ? "create neterr:", neterr(), hb_osError() > use (cName) > ? "use neterr:", neterr(), hb_osError() > while lastrec() < 100 > dbAppend() > n := recno() - 1 > field->F1 := chr( n % 26 + asc( "A" ) ) + " " + time() > field->F2 := field->F1 > field->F3 := n / 100 > field->F4 := hb_dateTime() > enddo > index on field->F1 tag T1 > index on field->F3 tag T3 > index on field->F4 tag T4 > close > ? > else > ? DBNAME, 'Already exists' > endif > return > > proc testdb( cName ) > local i, j > ? > ? 'using:',time() > use (cName) > ? "used:", time(), used() > ? "nterr:", neterr() > ? "alias:", alias() > ? "lastrec:", lastrec() > ? "ordCount:", ordCount() > for i:=1 to ordCount() > ordSetFocus( i ) > ? i, "name:", ordName(), "key:", ordKey(), "keycount:", > ordKeyCount() > next > ordSetFocus( 1 ) > dbgotop() > while !eof() > if ! field->F1 == field->F2 > ? "error at record:", recno() > ? " ! '" + field->F1 + "' == '" + field->F2 + "'" > endif > dbSkip() > enddo > i := row() > j := col() > dbgotop() > > ? 'locking:',time() > ? 'locked:', rlock(), time() > > wait > > browse() > setpos( i, j ) > close > > return > > > > > - Save and exit > > > > > -- Then we must create the netio_server.prg > > gedit netio_server.prg > > > -- Then copy and paste the contents below: > > > > proc main( cServer, cPort ) > local pListenSocket > > if empty( cPort ) > cPort := '63000' > endif > // if empty( cServer ) > // cServer := '127.0.0.1' > // endif > > pListenSocket := netio_mtserver( val( cPort ), cServer ) > if empty( pListenSocket ) > ? "Cannot start server. press a key to exit..." > inkey(0) > else > wait "Press any key to stop NETIO server." > netio_serverstop( pListenSocket ) > pListenSocket := NIL > endif > return > > > > - Save and exit > > Then we must compile them... > > export PATH=/tmp/hbwin/bin:$PATH; hbwmk -static -n -w -es2 -gtwin > netio_client.prg; hbwmk -static -n -w -es2 -gtwin -mt netio_server.prg > > > Then to test the netio apps > > A) If we are on the same pc we must open two terminal (1 e 2) on terminal > (1) type: > wine ./netio_server.exe > > on the terminal 2 type: > wine ./netio_client.exe > > B) if we have two pc on the net (A and B) on pc A open a terminal and > type: > > ifconfig > > to get the ip number, then we can start the server > > wine ./netio_server.exe > > on the pc B we must copy the netio_client.exe and run it > > wine ./netio_client.exe ip_of_pc_where_netio_server_is_running > > > > **************************************************************************************************** > Przemek note... > **************************************************************************************************** > NETIO server application has to be linked with MT HVM version. > Please use -mt hbwmk switch to compile server. > >>> give me the wine app started window with the message it cannot start >>> server... >>> Can you test my app in your enviroment... >>> in attach the hb_testio.tar.gz > It works if you compile netioserver.prg with -mt switch. > I tested Windows and Linux binaries. > BTW for normal usage I suggest to always use native binaries. > If you want to run server on Linux machine then create native > Linux netio server binaries. And of course native client binaries. > Of course you can connect to the one server from different stations > working with WIN, DOS, OS2 or different *nixes. > > And remove from netioserver.prg this code: > > if empty( cServer ) > cServer := '127.0.0.1' > endif > > it reduces connections to 127.0.0.1 only so such server cannot be accessed > remotely. Use empty value or 0.0.0.0 if you want to give access from > different interfaces without any limitation. > **************************************************************************************************** > > 2009/12/19 Massimo Belgrano <[email protected]>: >> How can i get harbour (with qt) for ubuntu 9.10? >> >> -- >> Massimo Belgrano >> > > > > -- > Massimo Belgrano > _______________________________________________ > Harbour mailing list (attachment size limit: 40KB) > [email protected] > http://lists.harbour-project.org/mailman/listinfo/harbour _______________________________________________ Harbour mailing list (attachment size limit: 40KB) [email protected] http://lists.harbour-project.org/mailman/listinfo/harbour
