Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-pascal / 2022-11

Can't build single package

8 messages · 2 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Luca Olivetti

IIRC I did it in the past but now:

D:\fpc-3.2.2\packages\fcl-web>make
C:/FPC/3.2.2/bin/i386-Win32/ppc386.exe fpmake.pp -n -Fu../../rtl -Fu../../packages/paszlib -Fu../../packages/fcl-process -Fu../../packages/hash -Fu../../packages/libtar
-Fu../../packages/fpmkunit/units_bs/i386-win32
Fatal: Can't find unit system used by fpmake
Fatal: Compilation aborted
make: *** [fpmake.exe] Error 1

D:\fpc-3.2.2\packages\fcl-web>fpc fpmake.pp
Free Pascal Compiler version 3.2.2 [2021/05/15] for i386 Copyright (c) 1993-2021 by Florian Klaempfl and others Target OS: Win32 for i386
Compiling fpmake.pp
Linking fpmake.exe
438 lines compiled, 0.3 sec, 330944 bytes code, 15364 bytes data

D:\fpc-3.2.2\packages\fcl-web>make
./fpmake.exe compile --localunitdir=../.. --globalunitdir=.. --os=win32 --cpu=i386 -o -di386 --compiler=C:/FPC/3.2.2/bin/i386-Win32/ppc386.exe -bu The installer encountered the following error:
Could not find unit directory for dependency package "rtl" required for package
"fcl-web"
make: *** [all] Error 1

Bye

Luca
Luca Olivetti
to Luca Olivetti

El 2/11/22 a les 9:37, Luca Olivetti via fpc-pascal ha escrit:

Show quoted text 10 lines
IIRC I did it in the past but now: D:\fpc-3.2.2\packages\fcl-web>make C:/FPC/3.2.2/bin/i386-Win32/ppc386.exe fpmake.pp -n -Fu../../rtl -Fu../../packages/paszlib -Fu../../packages/fcl-process -Fu../../packages/hash -Fu../../packages/libtar -Fu../../packages/fpmkunit/units_bs/i386-win32 Fatal: Can't find unit system used by fpmake Fatal: Compilation aborted make: *** [fpmake.exe] Error 1

OK, the problem is that I installed the compiler with the windows installer and the makefile expects it to be in its tree (hence the "-n" and the "-Fu" options).
Is there something I can do (other than building and installing the compiler from the source tree)?

Bye

LUca
Tomas Hajny
to Luca Olivetti
Luca Olivetti wrote 17 lines
El 2/11/22 a les 9:37, Luca Olivetti via fpc-pascal ha escrit: > IIRC I did it in the past but now: > > D:\fpc-3.2.2\packages\fcl-web>make > C:/FPC/3.2.2/bin/i386-Win32/ppc386.exe fpmake.pp -n -Fu../../rtl > -Fu../../packages/paszlib -Fu../../packages/fcl-process > -Fu../../packages/hash -Fu../../packages/libtar > -Fu../../packages/fpmkunit/units_bs/i386-win32 > Fatal: Can't find unit system used by fpmake > Fatal: Compilation aborted > make: *** [fpmake.exe] Error 1 OK, the problem is that I installed the compiler with the windows installer and the makefile expects it to be in its tree (hence the "-n" and the "-Fu" options). Is there something I can do (other than building and installing the compiler from the source tree)?

This is not matter of the compiler location (the current directory is the location where you started make.exe). However, you are supposed to have the packages sources together with the rtl sources. The location where you start make seems to be the directory of compiled fcl-web package rather than the directory with the respective sources. Did you copy the fcl-web sources there manually?

Tomas

Luca Olivetti
to Tomas Hajny

El 2/11/22 a les 15:54, Tomas Hajny via fpc-pascal ha escrit:

Show quoted text 12 lines
> OK, the problem is that I installed the compiler with the windows > installer and the makefile expects it to be in its tree (hence the > "-n" and the "-Fu" options). > Is there something I can do (other than building and installing the > compiler from the source tree)? This is not matter of the compiler location (the current directory is the location where you started make.exe). However, you are supposed to have the packages sources together with the rtl sources. The location where you start make seems to be the directory of compiled fcl-web package rather than the directory with the respective sources. Did you copy the fcl-web sources there manually?

No, in fact "make clean; make" under linux, with the same tree(*), works:

make clean ; make
./fpmake clean --localunitdir=../.. --globalunitdir=.. --os=linux --cpu=x86_64 -o -Cg -o -dx86_64 --compiler=/usr/local/bin/ppcx64 -bu ./fpmake compile --localunitdir=../.. --globalunitdir=.. --os=linux --cpu=x86_64 -o -Cg -o -dx86_64 --compiler=/usr/local/bin/ppcx64 -bu Start compiling package fcl-web for target x86_64-linux. Compiling BuildUnit_fcl_web.pp
Compiling ./src/base/fpmimetypes.pp
Compiling ./src/base/httpprotocol.pp
.....
Compiling ./src/restbridge/sqldbrestauthini.pp
Compiling ./src/restbridge/sqldbrestmodule.pp
[100%] Compiled package fcl-web

The difference is that under Linux I built and installed fpc from that tree, but there are no compiled units for windows there (only the sources).

(*) when I say "the same" I mean "the same", i.e. linux is the host and windows is a guest VM with the "~/Datos" directory mapped as network drive D:

Bye

Luca
Tomas Hajny
to Luca Olivetti
Luca Olivetti wrote 39 lines
El 2/11/22 a les 15:54, Tomas Hajny via fpc-pascal ha escrit: >> OK, the problem is that I installed the compiler with the windows >> installer and the makefile expects it to be in its tree (hence the >> "-n" and the "-Fu" options). >> Is there something I can do (other than building and installing the >> compiler from the source tree)? > > This is not matter of the compiler location (the current directory is > the location where you started make.exe). However, you are supposed to > have the packages sources together with the rtl sources. The location > where you start make seems to be the directory of compiled fcl-web > package rather than the directory with the respective sources. Did you > copy the fcl-web sources there manually? No, in fact "make clean; make" under linux, with the same tree(*), works: make clean ; make ./fpmake clean --localunitdir=../.. --globalunitdir=.. --os=linux --cpu=x86_64 -o -Cg -o -dx86_64 --compiler=/usr/local/bin/ppcx64 -bu ./fpmake compile --localunitdir=../.. --globalunitdir=.. --os=linux --cpu=x86_64 -o -Cg -o -dx86_64 --compiler=/usr/local/bin/ppcx64 -bu Start compiling package fcl-web for target x86_64-linux. Compiling BuildUnit_fcl_web.pp Compiling ./src/base/fpmimetypes.pp Compiling ./src/base/httpprotocol.pp ..... Compiling ./src/restbridge/sqldbrestauthini.pp Compiling ./src/restbridge/sqldbrestmodule.pp [100%] Compiled package fcl-web The difference is that under Linux I built and installed fpc from that tree, but there are no compiled units for windows there (only the sources). (*) when I say "the same" I mean "the same", i.e. linux is the host and windows is a guest VM with the "~/Datos" directory mapped as network drive D:

I see. This means that you already have the prerequisites fulfilled in the source tree for Linux, but not for Windows. Start by issuing 'make rtl_all packages_all' in D:\fpc-3.2.2. Then try rebuilding fcl-web in the fcl-web directory - I believe that it might work then.

Tomas

Luca Olivetti
to Tomas Hajny

El 2/11/22 a les 17:06, Tomas Hajny via fpc-pascal ha escrit:

Show quoted text 5 lines
I see. This means that you already have the prerequisites fulfilled in the source tree for Linux, but not for Windows. Start by issuing 'make rtl_all packages_all' in D:\fpc-3.2.2. Then try rebuilding fcl-web in the fcl-web directory - I believe that it might work then.

Yes, that worked, but then it caused another problem: I wanted to recompile fcl-web because I couldn't install the lazsqldbrest package

Compile package sqldbrestschemadesigner 0.0: Exit code 1, Errors: 1, Warnings: 1
Warning: Recompiling sqldbrestmodule, checksum changed for C:\FPC\3.2.2\units\i386-win32\fcl-web\fphttp.ppu
build304.pp(19,58) Fatal: Cannot find sqldbrestmodule used by build304. Make sure all ppu files of a package are in its output directory. ppu in wrong directory=C:\FPC\3.2.2\units\i386-win32\fcl-web\sqldbrestmodule.ppu..

Most probably because I modified some units to correct a couple of bugs. Now, after "make rtl_all packages_all" and copying the fcl-web units to the correct location, I get this

Compile package sqldbrestschemadesigner 0.0: Exit code 1, Errors: 1, Warnings: 1
Warning: Recompiling sqldbrestschema, checksum changed for C:\FPC\3.2.2\units\i386-win32\rtl\classes.ppu
sqldbrestschema.pp(13,55) Fatal: Can't find unit sqldbrestschema used by dlgrestfieldoptions

Might as well build and install fpc from source :-/

Bye

Luca
Tomas Hajny
to Luca Olivetti
Luca Olivetti wrote 37 lines
El 2/11/22 a les 17:06, Tomas Hajny via fpc-pascal ha escrit: > > I see. This means that you already have the prerequisites fulfilled in > the source tree for Linux, but not for Windows. Start by issuing 'make > rtl_all packages_all' in D:\fpc-3.2.2. Then try rebuilding fcl-web in > the fcl-web directory - I believe that it might work then. Yes, that worked, but then it caused another problem: I wanted to recompile fcl-web because I couldn't install the lazsqldbrest package Compile package sqldbrestschemadesigner 0.0: Exit code 1, Errors: 1, Warnings: 1 Warning: Recompiling sqldbrestmodule, checksum changed for C:\FPC\3.2.2\units\i386-win32\fcl-web\fphttp.ppu build304.pp(19,58) Fatal: Cannot find sqldbrestmodule used by build304. Make sure all ppu files of a package are in its output directory. ppu in wrong directory=C:\FPC\3.2.2\units\i386-win32\fcl-web\sqldbrestmodule.ppu.. Most probably because I modified some units to correct a couple of bugs. Now, after "make rtl_all packages_all" and copying the fcl-web units to the correct location, I get this Compile package sqldbrestschemadesigner 0.0: Exit code 1, Errors: 1, Warnings: 1 Warning: Recompiling sqldbrestschema, checksum changed for C:\FPC\3.2.2\units\i386-win32\rtl\classes.ppu sqldbrestschema.pp(13,55) Fatal: Can't find unit sqldbrestschema used by dlgrestfieldoptions Might as well build and install fpc from source :-/

That's always an option, of course. ;-) However, I guess that it would also help to run 'make rtl_clean packages_clean rtl_all packages_all' or even 'make distclean rtl_all packages_all'. Did you combine compilation using an IDE (e.g. Lazarus) with compilation using makefiles? That may easily lead to problems (especially due to compiled files being placed in locations not expected by the makefiles, thus resulting in multiple compiled versions of the same unit in different places)...

Tomas

Luca Olivetti
to Tomas Hajny

El 3/11/22 a les 9:31, Tomas Hajny via fpc-pascal ha escrit:

> Might as well build and install fpc from source :-/ That's always an option, of course. ;-)

For the record (and for my memory, since I'm sure I'll forget), I almost did that (i.e. make rtl_install, make packages_install then copied the resulting units from d: to c:). Probably installing fpc completely would have been less effort :-D

Show quoted text 7 lines
However, I guess that it would also help to run 'make rtl_clean packages_clean rtl_all packages_all' or even 'make distclean rtl_all packages_all'. Did you combine compilation using an IDE (e.g. Lazarus) with compilation using makefiles? That may easily lead to problems (especially due to compiled files being placed in locations not expected by the makefiles, thus resulting in multiple compiled versions of the same unit in different places)...

No, I just use lazarus to install its packages (in fact lazsqldbrest was already installed in lazarus 2.2.2, but I had to uninstall it in order to compile lazarus 2.2.4: since I had modified the units in fcl-web the old lazarus was still working but the new one wouldn't compile). It doesn't help though that, in a futile attempt to avoid useless recompilations, I have this as a global lazarus "Additions and Overrides":

OutDir -> lib/$(PkgName)/$(FPCVer)/$(TargetCPU)-$(TargetOS)/$(BuildMode)

Anyway, for the time being, issue solved.

Bye

Luca