View Issue Details

IDProjectCategoryView StatusLast Update
0015218Lazarus CCRIDEpublic2014-10-13 16:24
ReporterPhilAssigned ToDmitry Boyarintsev 
PrioritynormalSeveritymajorReproducibilityalways
Status feedbackResolutionreopened 
PlatformWindows and Intel OS XOSWindow / OS XOS VersionXP / 10.5
Summary0015218: Checksum changes when installing package
DescriptionTry installing this package:

http://wiki.lazarus.freepascal.org/THtmlPort

I get an error with a line number that is meaningless (to me):

"htmlview.pas (79,12) Fatal: Can't find unit Htmlview used by HTMLUn2".

Above this it indicates that it's trying to recompile Htmlview because it's checksum changed. But the package was just compiled, so why has the checksum changed?

Others are having what looks like the same problem:

http://www.lazarus.freepascal.org/index.php/topic,8069.msg38593/topicseen.html#new

Note that this occurs on Windows and Intel Mac, but does not occur on PowerPC Mac.

Possibly it has something to do with dependencies:
- htmlun2.pas uses htmlview in its implementation uses.
- htmlview.pas uses htmlun2 in its interface uses.

Maybe Lazarus (FPC?) is getting confused by this.

Thanks.

-Phil
TagsNo tags attached.
WidgetsetCarbon
Attached Files

Relationships

child of 0024121 resolvedJonas Maebe FPC Incorrect PPU file produced: CRC for a 'Use Unit' section wrongly stored into calling unit 

Activities

Dmitry Boyarintsev

2009-11-30 15:01

developer   ~0032593

what fpc version are you using?

* the open the package's compiler options, add "/" at the end of Units output dir.
* try to install the package

Mattias Gaertner

2009-11-30 15:31

manager   ~0032594

Dmitry,

The / is auto appended by the IDE when passed to the compiler. If not, then you found a bug in the IDE.

Installing a package does the same as compiling. If this fixes compiling, then you found a bug in the IDE

About HTMLView:
The checksum can change if some 'inline' procedure or 'generic' type was used before its implementation. Do not use inline procedures when using uses sections in implementation sections.

Dmitry Boyarintsev

2009-11-30 16:33

developer   ~0032595

I'm not sure if "/" is actually a cure or not. But it seems, that compilation goes different if the package compiler options are changed in anyway (i.e. deleting output path made the package compile and install as well).

The component is hard for the compiler itself due to lot of interface/implementation interdependencies

Phil

2009-11-30 16:41

reporter   ~0032597

I tested with Laz 0.9.28.2 / FPC 2.2.4 on both Windows and Intel Mac.

I also built Laz from SVN and FPC 2.5.1 from SVN trunk - same problem.

Mattias: I don't see any use of inline or generic keywords in this code - it's old Delphi code.

Dimitry: I can't find any other package that has "/" at end of output directory and none of them have this problem.

Thanks.

-Phil

Dmitry Boyarintsev

2009-11-30 16:58

developer   ~0032598

Phil,

I can confirm the problem, but i've managed to compile and install the package (OSX Intel, fpc 2.5.1, lazarus trunk) by playing with the compiler options. Try to remove output unit path, and see if it works for you.

Not sure how to fix it or what exactly is causing the problem.

Mattias Gaertner

2009-11-30 17:18

manager   ~0032599

It is an FPC bug.

Dmitry Boyarintsev

2009-11-30 17:56

developer   ~0032600

"no changes required" then? (with the instruction how to make Lazarus to install the package)

Mattias Gaertner

2009-11-30 18:10

manager   ~0032601

Yes.
Compiling a second time "fixed" the problem on my machine.

Create a FPC bug report instead.

Phil

2009-11-30 18:50

reporter   ~0032602

I created an FPC bug report referencing this bug report.

Dimitry: I tried deleting the \units\i386-win32 folder and also added "/" after the directory in the .lpk, but neither made any difference on Windows. Only a second compilation allowed installation to proceed, which is the workaround suggested in the wiki. However, I believe I've seen this problem occur again on subsequent IDE builds, forcing an interruption in the build, going back and recompiling the package, then rebuilding the IDE again.

Thanks.

-Phil

Dmitry Boyarintsev

2009-11-30 21:09

developer   ~0032608

Very well then. The solution is published in the wiki and it's not Lazarus issue.
Please close.

Felipe Monteiro de Carvalho

2011-07-01 15:01

developer   ~0049558

I was having the exact same problem today in fpbrowser, and I solved it with the following things:

1> The project had a hardcoded path to the printers ppus, I removed that and added a correct dependency. fpbrowser is based in the thtmlport examples, so they have this problem.

2> Removed the trailling path delim in the output dir in thtmlport (not sure if this was really necessary)

Felipe Monteiro de Carvalho

2011-07-01 15:36

developer   ~0049560

Nope, it solved it only temporarely =( It's back again... and on both fpc 2.4.3 and 2.5.1

Phil

2011-07-06 01:32

reporter   ~0049707

Felipe,

I just remembered something about circular dependencies in the Delphi THtmlViewer project. Look at the comments at the top of this file:

http://thtmlviewer.googlecode.com/svn/trunk/source/htmlview.pas

Maybe restructuring the units to eliminate some of the circular dependencies would solve our compile problem.

Thanks.

-Phil

Note: Mantis rejected (and deleted) my note twice so I had to re-open the issue to post this.

Zeljan Rikalo

2011-10-21 18:01

reporter   ~0053246

Changed to 0.9.30.2 to evaluate if this bug still exists, before release

Zeljan Rikalo

2012-02-04 14:24

reporter   ~0056449

Removed target since this issue is fpc specific. Resolve when fpc issue is resolved.

Jonas Maebe

2014-10-12 23:51

manager   ~0078184

FPC no longer recompiles units based on the availability of the bodies of inline functions, see 0024121 . I'm not aware of any outstanding issues that could cause the recompilation of units.

0007370 is about FPC giving a hint when it *doesn't* inline something, and/or about adding functionality to FPC to automatically keep recompiling units until there's nothing left to inline. Neither are required to resolve the issue at hand.

Juha Manninen

2014-10-13 01:02

developer   ~0078186

True, this was connected to a wrong FPC issue. I replaced the link.
Could somebody please test THtmlPort with FPC trunk.

Reinier Olislagers

2014-10-13 14:55

developer   ~0078192

Windows 7
FPC x86 svn r28813
laz svn r46545
htmlport current from laz ccr r3645
Package/compile went ok
Package/install failed:
Build IDE: Exit code 2, Errors: 1, Warnings: 1
Warning: Recompiling htmlview, checksum changed for htmlun2
htmlview.pas(72,12) Fatal: Can't find unit htmlview used by htmlun2

Deleting all thmlport *.ppus, opening loaded package, lpk compile+install gives same result.

Deleting all thmltport *.ppus, opening loaded package, just pressing install (without compile) gives:
Build IDE: Exit code 2, Errors: 1
lazarus.pp(1,1) Fatal: Cannot find unit htmlcomp used by Lazarus. Check if package HtmlComp creates htmlcomp.ppu, check nothing deletes this file and check that no two packages have access to the unit source..

Jonas Maebe

2014-10-13 16:24

manager   ~0078194

Last edited: 2014-10-13 16:24

View 2 revisions

Well, I was wrong earlier, there /is/ one situation left of which I know that it changes the interface crc: if you have a procedure/function declared normally in the interface, or as "forward;" in the implementation, and then later "implement" it as "external". That's not easy to fix though.

Issue History

Date Modified Username Field Change
2009-11-29 23:53 Phil New Issue
2009-11-29 23:53 Phil Widgetset => Carbon
2009-11-30 14:35 Dmitry Boyarintsev Status new => assigned
2009-11-30 14:35 Dmitry Boyarintsev Assigned To => Dmitry Boyarintsev
2009-11-30 15:01 Dmitry Boyarintsev Note Added: 0032593
2009-11-30 15:18 Dmitry Boyarintsev LazTarget => -
2009-11-30 15:18 Dmitry Boyarintsev Status assigned => feedback
2009-11-30 15:18 Dmitry Boyarintsev LazTarget - => 0.9.30
2009-11-30 15:31 Mattias Gaertner Note Added: 0032594
2009-11-30 16:33 Dmitry Boyarintsev Note Added: 0032595
2009-11-30 16:41 Phil Note Added: 0032597
2009-11-30 16:58 Dmitry Boyarintsev Note Added: 0032598
2009-11-30 17:18 Mattias Gaertner Note Added: 0032599
2009-11-30 17:56 Dmitry Boyarintsev Note Added: 0032600
2009-11-30 18:10 Mattias Gaertner Note Added: 0032601
2009-11-30 18:50 Phil Note Added: 0032602
2009-11-30 21:09 Dmitry Boyarintsev Status feedback => resolved
2009-11-30 21:09 Dmitry Boyarintsev Resolution open => no change required
2009-11-30 21:09 Dmitry Boyarintsev Note Added: 0032608
2011-07-01 15:01 Felipe Monteiro de Carvalho Note Added: 0049558
2011-07-01 15:36 Felipe Monteiro de Carvalho Note Added: 0049560
2011-07-01 15:41 Felipe Monteiro de Carvalho Relationship added related to 0007370
2011-07-06 01:32 Phil Status resolved => assigned
2011-07-06 01:32 Phil Resolution no change required => reopened
2011-07-06 01:32 Phil Note Added: 0049707
2011-10-21 18:01 Zeljan Rikalo LazTarget 0.9.30 => 0.9.30.2
2011-10-21 18:01 Zeljan Rikalo Note Added: 0053246
2012-02-04 14:24 Zeljan Rikalo LazTarget 0.9.30.2 => -
2012-02-04 14:24 Zeljan Rikalo Note Added: 0056449
2014-10-12 13:15 Juha Manninen Relationship replaced child of 0007370
2014-10-12 23:51 Jonas Maebe Note Added: 0078184
2014-10-13 01:00 Juha Manninen Relationship added child of 0024121
2014-10-13 01:00 Juha Manninen Relationship deleted child of 0007370
2014-10-13 01:02 Juha Manninen Note Added: 0078186
2014-10-13 01:02 Juha Manninen Status assigned => feedback
2014-10-13 10:15 Juha Manninen Project Lazarus => Lazarus CCR
2014-10-13 14:55 Reinier Olislagers Note Added: 0078192
2014-10-13 16:24 Jonas Maebe Note Added: 0078194
2014-10-13 16:24 Jonas Maebe Note Edited: 0078194 View Revisions