diff --git a/ide/lazarusidestrconsts.pas b/ide/lazarusidestrconsts.pas index 663a8b6fb6..1b9d5cecc7 100644 --- a/ide/lazarusidestrconsts.pas +++ b/ide/lazarusidestrconsts.pas @@ -3342,6 +3342,7 @@ resourcestring lisProjAddThePackageNameIsInvalidPlaseChooseAnExistingPackag = 'The package ' +'name %s%s%s is invalid.%sPlase choose an existing package.'; lisProjAddDependencyAlreadyExists = 'Dependency already exists'; + lisVersionMismatch = 'Version mismatch'; lisProjAddTheProjectHasAlreadyADependency = 'The project has already a ' +'dependency for the package %s%s%s.'; lisProjAddPackageNotFound = 'Package not found'; diff --git a/packager/addtopackagedlg.pas b/packager/addtopackagedlg.pas index dc5fa38ceb..6aa1a168be 100644 --- a/packager/addtopackagedlg.pas +++ b/packager/addtopackagedlg.pas @@ -42,6 +42,7 @@ uses StdCtrls, ExtCtrls, Dialogs, FileUtil, ComCtrls, AVL_Tree, // IDEIntf NewItemIntf, ProjectIntf, PackageIntf, FormEditingIntf, IDEWindowIntf, + IDEDialogs, // IDE LazarusIDEStrConsts, InputHistory, CodeToolManager, IDEDefs, IDEProcs, EnvironmentOpts, PackageSystem, PackageDefs, ComponentReg, @@ -210,9 +211,10 @@ function CheckAddingUnitFilename(LazPackage: TLazPackage; AddFileType: TAddToPkgType; OnGetIDEFileInfo: TGetIDEFileStateEvent; var AFilename: string): boolean; function CheckAddingDependency(LazPackage: TLazPackage; - NewDependency: TPkgDependency): boolean; + NewDependency: TPkgDependency; Quiet, WarnIfAlreadyThere: boolean + ): TModalResult;// mrOk=can be added, mrCancel=do not add, mrIgnore=already there function CheckAddingPkgDependency(LazPackage: TLazPackage; - RequiredPkg: TLazPackage): boolean; + RequiredPkg: TLazPackage; Quiet, WarnIfAlreadyThere: boolean): TModalResult; implementation @@ -251,9 +253,9 @@ begin // check if package is readonly if LazPackage.ReadOnly then begin - MessageDlg(lisAF2PPackageIsReadOnly, + IDEMessageDialog(lisAF2PPackageIsReadOnly, Format(lisAF2PThePackageIsReadOnly, [LazPackage.IDAsString]), - mtError,[mbCancel],0); + mtError,[mbCancel]); exit; end; @@ -264,10 +266,10 @@ begin if LazPackage.HasDirectory then AFilename:=LazPackage.Directory+AFilename else begin - MessageDlg(lisA2PInvalidFilename, + IDEMessageDialog(lisA2PInvalidFilename, Format(lisA2PTheFilenameIsAmbiguousPleaseSpecifiyAFilename, ['"', AFilename, '"', #13]), - mtError,[mbCancel],0); + mtError,[mbCancel]); exit; end; end; @@ -276,9 +278,9 @@ begin if (FilenameIsAbsolute(AFilename)) then begin if (not FileExistsUTF8(AFilename)) then begin if AddFileType=d2ptUnit then begin - MessageDlg(lisFileNotFound, + IDEMessageDialog(lisFileNotFound, Format(lisPkgMangFileNotFound, ['"', AFilename, '"']), - mtError, [mbCancel], 0); + mtError, [mbCancel]); exit; end; end; @@ -291,7 +293,7 @@ begin Msg:=Format(lisA2PFileAlreadyExistsInThePackage, ['"',AFilename,'"']); if PkgFile.Filename<>AFilename then Msg:=Msg+LineEnding+Format(lisA2PExistingFile2, ['"',PkgFile.Filename,'"']); - MessageDlg(lisA2PFileAlreadyExists, Msg, mtError, [mbCancel], 0); + IDEMessageDialog(lisA2PFileAlreadyExists, Msg, mtError, [mbCancel]); exit; end; end; @@ -302,10 +304,10 @@ begin IDEFileFlags:=[]; OnGetIDEFileInfo(nil,AFilename,[ifsPartOfProject],IDEFileFlags); if (ifsPartOfProject in IDEFileFlags) then begin - MessageDlg(lisA2PFileIsUsed, + IDEMessageDialog(lisA2PFileIsUsed, Format(lisA2PTheFileIsPartOfTheCurrentProjectItIsABadIdea, ['"', AFilename, '"', #13]), - mtError,[mbCancel],0); + mtError,[mbCancel]); exit; end; end; @@ -314,9 +316,9 @@ begin // check file extension if AddFileType in [d2ptUnit,d2ptNewComponent,d2ptVirtualUnit] then begin if not FilenameIsPascalUnit(AFilename) then begin - MessageDlg(lisA2PFileNotUnit, + IDEMessageDialog(lisA2PFileNotUnit, lisA2PPascalUnitsMustHaveTheExtensionPPOrPas, - mtWarning,[mbCancel],0); + mtWarning,[mbCancel]); exit; end; end; @@ -325,9 +327,9 @@ begin if AddFileType in [d2ptUnit,d2ptNewComponent,d2ptVirtualUnit] then begin AnUnitName:=ExtractFileNameOnly(AFilename); if not IsValidUnitName(AnUnitName) then begin - MessageDlg(lisA2PFileNotUnit, + IDEMessageDialog(lisA2PFileNotUnit, Format(lisA2PisNotAValidUnitName, ['"', AnUnitName, '"']), - mtWarning,[mbCancel],0); + mtWarning,[mbCancel]); exit; end; @@ -335,26 +337,26 @@ begin PkgFile:=LazPackage.FindUnit(AnUnitName,true,PkgFile); if PkgFile<>nil then begin // a unit with this name already exists in this package => warn - if MessageDlg(lisA2PUnitnameAlreadyExists, + if IDEMessageDialog(lisA2PUnitnameAlreadyExists, Format(lisA2PTheUnitnameAlreadyExistsInThisPackage, ['"',AnUnitName,'"']), - mtError,[mbCancel,mbIgnore],0)<>mrIgnore then exit; + mtError,[mbCancel,mbIgnore])<>mrIgnore then exit; end else begin PkgFile:=PackageGraph.FindUnit(LazPackage,AnUnitName,true,true); if (PkgFile<>nil) and (PkgFile.LazPackage<>LazPackage) then begin // there is already a unit with this name in another package => warn - if MessageDlg(lisA2PUnitnameAlreadyExists, + if IDEMessageDialog(lisA2PUnitnameAlreadyExists, Format(lisA2PTheUnitnameAlreadyExistsInThePackage, ['"', AnUnitName, '"', #13, PkgFile.LazPackage.IDAsString]), - mtWarning,[mbCancel,mbIgnore],0)<>mrIgnore then exit; + mtWarning,[mbCancel,mbIgnore])<>mrIgnore then exit; end; end; // check if unitname is a componentclass if IDEComponentPalette.FindComponent(AnUnitName)<>nil then begin - if MessageDlg(lisA2PAmbiguousUnitName, + if IDEMessageDialog(lisA2PAmbiguousUnitName, Format(lisA2PTheUnitNameIsTheSameAsAnRegisteredComponent, ['"', AnUnitName, '"', #13]), - mtWarning,[mbCancel,mbIgnore],0)<>mrIgnore + mtWarning,[mbCancel,mbIgnore])<>mrIgnore then exit; end; @@ -365,11 +367,14 @@ begin end; function CheckAddingDependency(LazPackage: TLazPackage; - NewDependency: TPkgDependency): boolean; + NewDependency: TPkgDependency; Quiet, WarnIfAlreadyThere: boolean): TModalResult; var NewPkgName: String; + RequiredPackage: TLazPackage; + ProvidingAPackage: TLazPackage; + ConflictDependency: TPkgDependency; begin - Result:=false; + Result:=mrCancel; NewPkgName:=NewDependency.PackageName; @@ -378,50 +383,84 @@ begin and (pdfMaxVersion in NewDependency.Flags) and (NewDependency.MaxVersion.Compare(NewDependency.MinVersion)<0) then begin - MessageDlg(lisProjAddInvalidMinMaxVersion, - lisA2PTheMaximumVersionIsLowerThanTheMinimimVersion, - mtError,[mbCancel],0); - exit; + if not Quiet then + IDEMessageDialog(lisProjAddInvalidMinMaxVersion, + lisA2PTheMaximumVersionIsLowerThanTheMinimimVersion, + mtError,[mbCancel]); + exit(mrCancel); end; // check packagename if (NewPkgName='') or (not IsValidUnitName(NewPkgName)) then begin - MessageDlg(lisProjAddInvalidPackagename, - Format(lisA2PThePackageNameIsInvalidPleaseChooseAnExisting, ['"', NewPkgName, '"', #13]), - mtError,[mbCancel],0); - exit; + if not Quiet then + IDEMessageDialog(lisProjAddInvalidPackagename, + Format(lisA2PThePackageNameIsInvalidPleaseChooseAnExisting, ['"', NewPkgName, '"', #13]), + mtError,[mbCancel]); + exit(mrCancel); end; // check if package is already required - if LazPackage.FindDependencyByName(NewPkgName)<>nil then begin - MessageDlg(lisProjAddDependencyAlreadyExists, - Format(lisA2PThePackageHasAlreadyADependencyForThe, ['"', NewPkgName, '"']), - mtError,[mbCancel],0); - exit; + if (CompareText(NewPkgName,LazPackage.Name)=0) + or (LazPackage.FindDependencyByName(NewPkgName)<>nil) then begin + if WarnIfAlreadyThere then + IDEMessageDialog(lisProjAddDependencyAlreadyExists, + Format(lisA2PThePackageHasAlreadyADependencyForThe, ['"', NewPkgName, '"']), + mtError,[mbCancel]); + exit(mrIgnore); end; - // check if required package exists + // check if required lpk exists if not PackageGraph.DependencyExists(NewDependency,fpfSearchAllExisting) then begin - MessageDlg(lisProjAddPackageNotFound, - Format(lisA2PNoPackageFoundForDependencyPleaseChooseAnExisting, - ['"', NewDependency.AsString, '"', #13]), - mtError,[mbCancel],0); - exit; + if not Quiet then + IDEMessageDialog(lisProjAddPackageNotFound, + Format(lisA2PNoPackageFoundForDependencyPleaseChooseAnExisting, + ['"', NewDependency.AsString, '"', #13]), + mtError,[mbCancel]); + exit(mrCancel); end; - - Result:=true; + + RequiredPackage:=PackageGraph.FindPackageWithName(NewPkgName,nil); + if RequiredPackage<>nil then begin + + // check if there is a dependency, that requires another version + ConflictDependency:=PackageGraph.FindConflictRecursively( + LazPackage.FirstRequiredDependency,RequiredPackage); + if ConflictDependency<>nil then begin + DebugLn(['CheckAddingDependency ',LazPackage.Name,' requiring ',RequiredPackage.IDAsString,' conflicts with ',ConflictDependency.AsString]); + if not Quiet then + IDEMessageDialog(lisVersionMismatch, + 'Unable to add the dependency '+RequiredPackage.IDAsString+', because the package '+LazPackage.Name+' has already a dependency '+ConflictDependency.AsString, + mtError,[mbCancel]); + exit(mrCancel); + end; + end; + + ProvidingAPackage:=PackageGraph.FindPackageProvidingName( + LazPackage.FirstRequiredDependency,NewPkgName); + if ProvidingAPackage<>nil then + begin + // package is already provided by another package + DebugLn(['CheckAddingDependency ',LazPackage.Name,' requiring ',NewPkgName,', but is already provided by ',ProvidingAPackage.IDAsString]); + if WarnIfAlreadyThere then + IDEMessageDialog(lisProjAddDependencyAlreadyExists, + 'Unable to add the dependency '+RequiredPackage.IDAsString+', because the package '+LazPackage.Name+' has already a dependency to '+ProvidingAPackage.Name, + mtError,[mbCancel]); + exit(mrIgnore); + end; + + Result:=mrOk; end; function CheckAddingPkgDependency(LazPackage: TLazPackage; - RequiredPkg: TLazPackage): boolean; + RequiredPkg: TLazPackage; Quiet, WarnIfAlreadyThere: boolean): TModalResult; var NewDependency: TPkgDependency; begin NewDependency:=TPkgDependency.Create; try NewDependency.PackageName:=RequiredPkg.Name; - Result:=CheckAddingDependency(LazPackage,NewDependency); + Result:=CheckAddingDependency(LazPackage,NewDependency,Quiet,WarnIfAlreadyThere); finally NewDependency.Free; end; @@ -514,9 +553,9 @@ begin LazPackage.ShortenFilename(AFilename,true); ComponentUnitFileEdit.Text := AFilename; end else begin - MessageDlg(lisA2PInvalidFile, + IDEMessageDialog(lisA2PInvalidFile, lisA2PAPascalUnitMustHaveTheExtensionPPOrPas, - mtError,[mbCancel],0); + mtError,[mbCancel]); end; end; InputHistories.StoreFileDialogSettings(SaveDialog); @@ -609,10 +648,10 @@ begin if CompareText(CurParams.Unit_Name, ExtractFileNameOnly(CurParams.UnitFilename))<>0 then begin - if MessageDlg(lisA2PInvalidUnitName, + if IDEMessageDialog(lisA2PInvalidUnitName, Format(lisA2PTheUnitNameAndFilenameDiffer, ['"', CurParams.Unit_Name, '"', #13, '"', CurParams.UnitFilename, '"']), - mtError,[mbIgnore,mbCancel],0)<>mrIgnore + mtError,[mbIgnore,mbCancel])<>mrIgnore then begin FilesListView.Items.Delete(i); exit; @@ -770,57 +809,57 @@ begin // check Ancestor Type if not IsValidIdent(Params.AncestorType) then begin - MessageDlg(lisA2PInvalidAncestorType, + IDEMessageDialog(lisA2PInvalidAncestorType, Format(lisA2PTheAncestorTypeIsNotAValidPascalIdentifier, ['"', Params.AncestorType, '"']), - mtError,[mbCancel],0); + mtError,[mbCancel]); exit; end; // check pagename if length(Params.PageName)>100 then begin - MessageDlg(lisA2PPageNameTooLong, + IDEMessageDialog(lisA2PPageNameTooLong, Format(lisA2PThePageNameIsTooLongMax100Chars, ['"', Params.PageName, '"'] ), - mtError,[mbCancel],0); + mtError,[mbCancel]); exit; end; // check unitname - filename redundancy if AnsiCompareText(Params.Unit_name,ExtractFileNameOnly(Params.UnitFilename))<>0 then begin - MessageDlg(lisA2PUnitNameInvalid, + IDEMessageDialog(lisA2PUnitNameInvalid, Format(lisA2PTheUnitNameDoesNotCorrespondToTheFilename, ['"', Params.Unit_Name, '"']), - mtError,[mbCancel],0); + mtError,[mbCancel]); exit; end; // check classname if not IsValidIdent(Params.NewClassName) then begin - MessageDlg(lisA2PInvalidClassName, + IDEMessageDialog(lisA2PInvalidClassName, Format(lisA2PTheClassNameIsNotAValidPascalIdentifier, ['"', Params.NewClassName, '"']), - mtError,[mbCancel],0); + mtError,[mbCancel]); exit; end; // check classname<>ancestortype if AnsiCompareText(Params.NewClassName,Params.AncestorType)=0 then begin - MessageDlg(lisA2PInvalidCircle, + IDEMessageDialog(lisA2PInvalidCircle, Format(lisA2PTheClassNameAndAncestorTypeAreTheSame, ['"', Params.NewClassName, '"', '"', Params.AncestorType, '"']), - mtError,[mbCancel],0); + mtError,[mbCancel]); exit; end; // check ancestor type is not unitname PkgFile:=PackageGraph.FindUnit(LazPackage,Params.AncestorType,true,true); if PkgFile<>nil then begin - if MessageDlg(lisA2PAmbiguousAncestorType, + if IDEMessageDialog(lisA2PAmbiguousAncestorType, Format(lisA2PTheAncestorTypeHasTheSameNameAsTheUnit, ['"', Params.AncestorType, '"', #13, '"', PkgFile.Filename, '"']), - mtError,[mbCancel,mbIgnore],0)<>mrIgnore + mtError,[mbCancel,mbIgnore])<>mrIgnore then exit; end; @@ -828,10 +867,10 @@ begin // check classname does not interfere with an existing unitname PkgFile:=PackageGraph.FindUnit(LazPackage,Params.NewClassName,true,true); if PkgFile<>nil then begin - if MessageDlg(lisA2PAmbiguousClassName, + if IDEMessageDialog(lisA2PAmbiguousClassName, Format(lisA2PTheClassNameHasTheSameNameAsTheUnit, ['"', Params.AncestorType, '"', #13, '"', PkgFile.Filename, '"']), - mtError,[mbCancel,mbIgnore],0)<>mrIgnore + mtError,[mbCancel,mbIgnore])<>mrIgnore then exit; end; @@ -840,11 +879,11 @@ begin PkgComponent:= TPkgComponent(IDEComponentPalette.FindComponent(Params.NewClassname)); if PkgComponent<>nil then begin - if MessageDlg(lisA2PClassNameAlreadyExists, + if IDEMessageDialog(lisA2PClassNameAlreadyExists, Format(lisA2PTheClassNameExistsAlreadyInPackageFile, ['"', Params.NewClassName, '"', #13, PkgComponent.PkgFile.LazPackage.IDAsString, #13, '"', PkgComponent.PkgFile.Filename, '"']), - mtError,[mbCancel,mbIgnore],0)<>mrIgnore + mtError,[mbCancel,mbIgnore])<>mrIgnore then exit; end; @@ -898,10 +937,10 @@ begin if DependMinVersionEdit.Text<>'' then begin if not NewDependency.MinVersion.ReadString(DependMinVersionEdit.Text) then begin - MessageDlg(lisProjAddInvalidVersion, + IDEMessageDialog(lisProjAddInvalidVersion, Format(lisA2PTheMinimumVersionIsInvalidPleaseUseTheFormatMajor, ['"', DependMinVersionEdit.Text, '"', #13, #13]), - mtError,[mbCancel],0); + mtError,[mbCancel]); exit; end; NewDependency.Flags:=NewDependency.Flags+[pdfMinVersion]; @@ -910,17 +949,17 @@ begin if DependMaxVersionEdit.Text<>'' then begin if not NewDependency.MaxVersion.ReadString(DependMaxVersionEdit.Text) then begin - MessageDlg(lisProjAddInvalidVersion, + IDEMessageDialog(lisProjAddInvalidVersion, Format(lisA2PTheMaximumVersionIsInvalidPleaseUseTheFormatMajor, ['"', DependMaxVersionEdit.Text, '"', #13, #13]), - mtError,[mbCancel],0); + mtError,[mbCancel]); exit; end; NewDependency.Flags:=NewDependency.Flags+[pdfMaxVersion]; end; NewDependency.PackageName:=DependPkgNameComboBox.Text; - if not CheckAddingDependency(LazPackage,NewDependency) then exit; + if CheckAddingDependency(LazPackage,NewDependency,false,true)<>mrOk then exit; // ok Params.Dependency:=NewDependency; @@ -940,8 +979,8 @@ begin if (ANode=nil) or (ANode.Data=nil) or (not (TObject(ANode.Data) is TNewItemProjectFile)) then begin - MessageDlg(lisNewDlgNoItemSelected, - lisNewDlgPleaseSelectAnItemFirst, mtInformation, [mbOk], 0); + IDEMessageDialog(lisNewDlgNoItemSelected, + lisNewDlgPleaseSelectAnItemFirst, mtInformation, [mbOk]); exit; end; @@ -1308,9 +1347,9 @@ begin end; except on E: Exception do begin - MessageDlg(lisCCOErrorCaption, + IDEMessageDialog(lisCCOErrorCaption, Format(lisErrorLoadingFile2, [AFilename, #13, E.Message]), mtError, [ - mbCancel], 0); + mbCancel]); ComponentIconSpeedButton.Glyph.Clear; FComponentIconFilename:=''; ComponentIconSpeedButton.Hint:=lisNoneClickToChooseOne; diff --git a/packager/packageeditor.pas b/packager/packageeditor.pas index e24ca005fe..4f595be71d 100644 --- a/packager/packageeditor.pas +++ b/packager/packageeditor.pas @@ -530,9 +530,9 @@ begin end; end else begin Dependency:=GetCurrentDependency(Removed); - if (Dependency<>nil) and (Removed) then begin + if (Dependency<>nil) and Removed then begin // re-add dependency - if not CheckAddingDependency(LazPackage,Dependency) then exit; + if CheckAddingDependency(LazPackage,Dependency,false,true)<>mrOk then exit; LazPackage.RemoveRemovedDependency(Dependency); PackageGraph.AddDependencyToPackage(LazPackage,Dependency); end; diff --git a/packager/pkgmanager.pas b/packager/pkgmanager.pas index 221ae5c6f7..b0b72d94b5 100644 --- a/packager/pkgmanager.pas +++ b/packager/pkgmanager.pas @@ -287,7 +287,6 @@ type OnlyTestIfPossible: boolean = false): TModalResult; override; function GetPackageOfEditorItem(Sender: TObject): TIDEPackage; override; - // package compilation function DoCompileProjectDependencies(AProject: TProject; Flags: TPkgCompileFlags): TModalResult; override; @@ -1901,7 +1900,7 @@ var begin Result:=mrCancel; - // check if there is dependency, that requires another version + // check if there is a dependency, that requires another version ConflictDependency:=PackageGraph.FindConflictRecursively( AProject.FirstRequiredDependency,APackage); if ConflictDependency<>nil then begin @@ -1918,13 +1917,14 @@ begin Result:=mrOk; exit; end; + ProvidingAPackage:=PackageGraph.FindPackageProvidingName( AProject.FirstRequiredDependency,APackage.Name); if ProvidingAPackage<>nil then begin // package is already provided by another package DebugLn(['TPkgManager.AddProjectDependency ',APackage.Name,' is already provided by ',ProvidingAPackage.IDAsString]); - Result:=mrCancel; + Result:=mrOk; exit; end; @@ -2775,18 +2775,23 @@ var begin Result:=LoadAndParseUnitBuf; if Result<>mrOk then exit; - if not CodeToolBoss.FindUsedUnitNames(UnitBuf,MainUsesSection, - ImplementationUsesSection) - then begin - MainIDE.DoJumpToCodeToolBossError; - exit; + MainUsesSection:=nil; + ImplementationUsesSection:=nil; + try + if not CodeToolBoss.FindUsedUnitNames(UnitBuf,MainUsesSection, + ImplementationUsesSection) + then begin + MainIDE.DoJumpToCodeToolBossError; + exit; + end; + for i:=0 to MainUsesSection.Count-1 do begin + j:=UnitNames.IndexOf(MainUsesSection[i]); + if j>=0 then UnitNames.Delete(j); + end; + finally + MainUsesSection.Free; + ImplementationUsesSection.Free; end; - for i:=0 to MainUsesSection.Count-1 do begin - j:=UnitNames.IndexOf(MainUsesSection[i]); - if j>=0 then UnitNames.Delete(j); - end; - MainUsesSection.Free; - ImplementationUsesSection.Free; Result:=mrOk; end; @@ -2855,8 +2860,7 @@ var AddProjectDependency(TProject(UnitOwner),RequiredPackage); end else if UnitOwner is TLazPackage then begin DebugLn('TPkgManager.AddUnitDependenciesForComponentClasses Adding Package Dependency ',TLazPackage(UnitOwner).Name,' -> ',RequiredPackage.Name); - PackageGraph.AddDependencyToPackage(TLazPackage(UnitOwner), - RequiredPackage); + AddPackageDependency(TLazPackage(UnitOwner),RequiredPackage.Name); end; end; end; @@ -3195,6 +3199,7 @@ var Item: TObject; NewDependency: TPkgDependency; ADependency: TPkgDependency; + r: TModalResult; begin if not OnlyTestIfPossible then begin Result:=AddDependencyToOwners(OwnerList,APackage,true); @@ -3212,9 +3217,9 @@ begin NewDependency:=TPkgDependency.Create; try NewDependency.PackageName:=APackage.Name; - if not CheckAddingDependency(TLazPackage(Item),NewDependency) then - exit; - if not OnlyTestIfPossible then begin + r:=CheckAddingDependency(TLazPackage(Item),NewDependency,false,false); + if r=mrCancel then exit; + if (not OnlyTestIfPossible) and (r<>mrIgnore) then begin ADependency:=NewDependency; NewDependency:=nil; PackageGraph.AddDependencyToPackage(TLazPackage(Item),ADependency); @@ -3464,7 +3469,7 @@ begin NewDependency:=TPkgDependency.Create; try NewDependency.PackageName:=ReqPackage; - if not CheckAddingDependency(APackage,NewDependency) then + if CheckAddingDependency(APackage,NewDependency,false,false)<>mrOk then exit; if not OnlyTestIfPossible then begin ADependency:=NewDependency;