Página 1 de 1

Construyendo mod_harbour_V2 64 bits

Publicado: Mié Feb 02, 2022 5:58 pm
por jvtecheto
Hola :

Si sois tan amables, unas preguntas sobre la construccion del modulo para 64 bits con msvc

1.- Alquien ha construido mod_harbour.V2 ?

2.- Si alguien lo ha hecho, ha cambiado algo del fichero go64.bat ?

( Huelga decir que no estan incluidos en la pregunta Diego, Charly y Cristobal :lol: :lol: )

Manu tampoco, me gustaria incluir a Felix, pero supongo que sigues con la parte oscura y tu mingw

Muchisimas gracias por vuestra ayuda.

Saludos.

Jose Vte.

Re: Construyendo mod_harbour_V2 64 bits

Publicado: Mié Feb 02, 2022 6:33 pm
por charly
Jose,

Si ya has construido harbour con msvc, esto son 2 pasos. Del go64, la mitad sobra

La clave son estas 2 lineas

Código: Seleccionar todo

call "%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64

c:\harbour\bin\win\msvc64\hbmk2 mod_harbour.v2.hbp -comp=msvc64 
El primero te activa la consola de msvc (revisar el path)
El segundo te hace el make (revisa si tienes harbour o harbour.core )

C.

Re: Construyendo mod_harbour_V2 64 bits

Publicado: Vie Feb 04, 2022 4:53 am
por jparada
Como tengo compilado Harbour msvc64, cambié el go64.bat así:

call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64
c:\harbour_msvc\bin\win\msvc64\hbmk2 mod_harbour.v2.hbp -comp=msvc64

Y obtengo estos errores
img1.png
Dónde localizo el manual de compilación que se menciona en otro post? y/o qué me falta?.

Re: Construyendo mod_harbour_V2 64 bits

Publicado: Vie Feb 04, 2022 9:23 am
por jvtecheto
Hola Javier.

Has comprobado que tienes todas las libs que se detallan en el archivo .hbp
ya sabes hbcurl.lib, hbssl.lib, hbhpdf.lib, hbmemio.lib, etc estas son contribuciones de terceros
(carpeta contrib), lo digo porque cuando construyes harbour no te crea estas libs por defecto.

Ya nos cuentas.

Saludos.

Jose Vte.

Re: Construyendo mod_harbour_V2 64 bits

Publicado: Sab Feb 05, 2022 4:24 am
por jparada
Hola José,

Validé lo que me comentas y pues al parecer sí que me faltaban algunas librerías, así que eliminé lo que tenía y luego me descargué del repo de Diego https://github.com/diegofazio/harbour_binaries/ e intentar nuevamente y me sigue dando error:

Compiling 'source\sessions.prg'...
Lines 1778, Functions/Procedures 20
Generating C source output to 'C:\Users\jpara\AppData\Local\Temp\hbmk_0938pa.dir\sessions.c'... Done.
hbmk2: Comando de compilador C/C++:
cl.exe -nologo -c -O2 -Ic:\xampp\apache\include -TC -W4 -wd4127 -FoC:\Users\jpara\AppData\Local\Temp\hbmk_0938pa.dir\ -DHB_DYNLIB -Ic:\harbour_msvc\include -Ic:\harbour_msvc\contrib\hbwin -Ic:\harbour_msvc\contrib\hbhpdf -Ic:\harbour_msvc\contrib\xhb -Ic:\harbour_msvc\contrib\hbct -Ic:\harbour_msvc\contrib\hbtip -Ic:\harbour_msvc\contrib\hbfship -Ic:\harbour_msvc\contrib\hbxpp -Ic:\harbour_msvc\contrib\hbcurl -Ic:\harbour_msvc\contrib\hbmzip -Ic:\harbour_msvc\contrib\hbnetio -Ic:\harbour_msvc\contrib\hbssl C:\Users\jpara\AppData\Local\Temp\hbmk_0938pa.dir\mh_apache.c C:\Users\jpara\AppData\Local\Temp\hbmk_0938pa.dir\ap_func.c C:\Users\jpara\AppData\Local\Temp\hbmk_0938pa.dir\cookies.c C:\Users\jpara\AppData\Local\Temp\hbmk_0938pa.dir\legacy_func.c C:\Users\jpara\AppData\Local\Temp\hbmk_0938pa.dir\main.c C:\Users\jpara\AppData\Local\Temp\hbmk_0938pa.dir\persistence.c C:\Users\jpara\AppData\Local\Temp\hbmk_0938pa.dir\prepro.c C:\Users\jpara\AppData\Local\Temp\hbmk_0938pa.dir\preproPHP.c C:\Users\jpara\AppData\Local\Temp\hbmk_0938pa.dir\trace.c C:\Users\jpara\AppData\Local\Temp\hbmk_0938pa.dir\errorsys.c C:\Users\jpara\AppData\Local\Temp\hbmk_0938pa.dir\sessions.c source\mod_harbour.c source\ap_func_c.c source\legacy_func_c.c
hbmk2[mod_harbour.v2]: Error: Ejecutando compilador C/C++. -1
cl.exe -nologo -c -O2 -Ic:\xampp\apache\include -TC -W4 -wd4127 -FoC:\Users\jpara\AppData\Local\Temp\hbmk_0938pa.dir\ -DHB_DYNLIB -Ic:\harbour_msvc\include -Ic:\harbour_msvc\contrib\hbwin -Ic:\harbour_msvc\contrib\hbhpdf -Ic:\harbour_msvc\contrib\xhb -Ic:\harbour_msvc\contrib\hbct -Ic:\harbour_msvc\contrib\hbtip -Ic:\harbour_msvc\contrib\hbfship -Ic:\harbour_msvc\contrib\hbxpp -Ic:\harbour_msvc\contrib\hbcurl -Ic:\harbour_msvc\contrib\hbmzip -Ic:\harbour_msvc\contrib\hbnetio -Ic:\harbour_msvc\contrib\hbssl C:\Users\jpara\AppData\Local\Temp\hbmk_0938pa.dir\mh_apache.c C:\Users\jpara\AppData\Local\Temp\hbmk_0938pa.dir\ap_func.c C:\Users\jpara\AppData\Local\Temp\hbmk_0938pa.dir\cookies.c C:\Users\jpara\AppData\Local\Temp\hbmk_0938pa.dir\legacy_func.c C:\Users\jpara\AppData\Local\Temp\hbmk_0938pa.dir\main.c C:\Users\jpara\AppData\Local\Temp\hbmk_0938pa.dir\persistence.c C:\Users\jpara\AppData\Local\Temp\hbmk_0938pa.dir\prepro.c C:\Users\jpara\AppData\Local\Temp\hbmk_0938pa.dir\preproPHP.c C:\Users\jpara\AppData\Local\Temp\hbmk_0938pa.dir\trace.c C:\Users\jpara\AppData\Local\Temp\hbmk_0938pa.dir\errorsys.c C:\Users\jpara\AppData\Local\Temp\hbmk_0938pa.dir\sessions.c source\mod_harbour.c source\ap_func_c.c source\legacy_func_c.c
*** Error compile ***

Alguna idea?.

Re: Construyendo mod_harbour_V2 64 bits

Publicado: Sab Feb 05, 2022 6:15 pm
por thefull
¿ Alguna alma caritativa que me ponga para construirlo en Linux ( Ubuntu 18.04 ) ? O en su defecto, que me pase el .so.

La idea es meterlo en un docker, lo tengo todos los pasos, pero me falta solo esta parte ;-(

Re: Construyendo mod_harbour_V2 64 bits

Publicado: Sab Feb 05, 2022 7:48 pm
por angeiras

Re: Construyendo mod_harbour_V2 64 bits

Publicado: Dom Feb 06, 2022 2:36 pm
por thefull
OH!! Perfecto, muchas gracias con la librería funciona !!

Por si alguien quiere tenerlo en un docker;

Create un directorio que contenga lo siguiente;
0) El fichero mod_harbour.v2.so

1 ) Bájate el fichero de configuración, o el que tengas de Apache, más info en https://hub.docker.com/_/httpd
$ docker run --rm httpd:2.4 cat /usr/local/apache2/conf/httpd.conf > my-httpd.conf

2) Abres el fichero my-httpd.conf y le añades la parte de configuración de modHarbourV2
LoadModule harbourV2_module /usr/lib/apache2/modules/mod_harbour.v2.so

<FilesMatch "\.(prg|hrb)$">
SetHandler harbour
</FilesMatch>

3) Copia la carpeta Samples del modHarbourV2 en el directorio, esto es simplemente para que veamos que funciona el mod

4) Crea un fichero llamado Dockerfile que contenga;
FROM httpd:2.4
COPY mod_harbour.v2.so /usr/lib/apache2/modules/mod_harbour.v2.so
COPY ./my-httpd.conf /usr/local/apache2/conf/httpd.conf
COPY ./Samples/ /usr/local/apache2/htdocs/

4) Ejecuta estos comandos, crear un fichero de script si te es más cómodo;
docker build -t my-apache2 .
docker run -dit --name my-harbour-app -p 8080:80 my-apache2

5) Ya tienes el modHarbourV2 dockenizado, ves a la web http://127.0.0.1:8080/hello.prg

Imagen