stable(alpha) version
@Graeme:D What I meant to say is the first alpha that's stable enough for test, but you're right, it's kinda confusing. Point taken, I edited my post.
stable and alpha are two opposites of the scale. I had to laugh when I read that.
@BostjanYes, something similar.
Is this to be something like "NuGet" for MS visual studio ? (https://en.wikipedia.org/wiki/NuGet, https://www.nuget.org/)
Worst part of Delphi/Lazarus for me is that you must hunt various packages across the internet and central repository would be so much better.I agree 100%.
opkman_mainfrm.pas(129,48) Error: Incompatible types: got "<procedure variable type of procedure(TObject;AnsiString;TErrorType;const AnsiString) of object;Register>" expected "<procedure variable type of procedure(TObject;UTF8String;TErrorType;const AnsiString) of object;Register>"
on(That would also allow you to make your own repository in addition to the default ones provided)
Use standard releases for each package and only mantain a list of json that points to another url where the real zip is available (the zip can be in any host service).Yes, I would also advise using existing download locations. And because GitHub and Sourceforge are the most commonly used it would be best to implement downloading directly from there. It would also have the benefit of having the latest version and always be up to date.
If you choose GitHub/Sourceforge you can add as many mantainers you want, simple give them access to put files in the website.
who (or what grouping) has control of the 'official' repositories, what are the criteria for inclusion/rejection of submitted packages, whether some PPA-type system should be in place for addition of private repositories, who will police it in terms of enforcing adherence to the stated policies, and so on.
Decisions about a official or even semi-official package server would perhaps be something for the foundation as well ?
I agree with Phil, so for example I can upload a release on GitHub that in fact is a package,...As I already mentioned in the mailing list, and somebody else mentioned it here... The best approach seems to be whan Delphinus does on Github. Everything is hosted there. Delphinus use the Github API to detect new packages and automatically present those in the IDE. Anybody can add there own packages via Github plus the required JSON file. No central repository or hosting location is needed. This is the best of all worlds. Now simply port it to Lazarus IDE and enjoy. :)
TJSONStringType is an UTF8String in trunk.Fixed! I should have typed "AJSON: TJSONStringType" instead of "AJSON: Ansistring"
Suggestion #1: Making the packages-list more compact. Only expanding when choosing the +Done. I updated the link.
Suggestion #2: Putting the "Online Package Manager" above the "Install/Uninstall packages". I'm very used to be "Install" being the last in that menu :) Although, if this becomes the standard the position at the bottom might be preferred.I will leave it where it is for now, since we are only testing. It can be changed later if necessary.
Question: What packages will be provided in the end.Every package will be accepted in the official repository with one condition, it must be checked first. I will do the work if necessary.
Will the lazarus-ccr packages/components be added?Yes.
I would assume this would be the case. That way, a package author only needs to publicize the URL of the package zip. The user types/pastes this URL into the package manager, which does the rest.I would use a separate .zip for each package. And each .zip would contain its own JSON file for the package. Put a master list of packages elsewhere.I plan to add support for external zip files/repositories, but this is a dangerous game(my only problem with delphinus + the fact, that it force you to use github). The package manager will automatically download/extract the zip, then install it into the IDE. It's a great way to inject a malware into someone's computer. This is why I insist to have an official repository, where the packages can be checked(malware wise + legally as @Phil mentioned). On the other hand, forcing the developers to use only the packages from the official repository it's also wrong, but they must use it at their own risk.
Every package will be accepted in the official repository with one condition, it must be checked first. I will do the work if necessary.
I was hopping that the official repository can be hosted in one of the freepascal.org directory(see fppkg). For now @Leledumbo was kind enough to host the repository on his personal server.
The best approach seems to be whan Delphinus does on Github. Everything is hosted there. Delphinus use the Github API to detect new packages and automatically present those in the IDE.
I plan to add support for external zip files/repositories, but this is a dangerous game(my only problem with delphinus + the fact, that it force you to use github). The package manager will automatically download/extract the zip, then install it into the IDE. It's a great way to inject a malware into someone's computer. This is why I insist to have an official repository, where the packages can be checked(malware wise + legally as @Phil mentioned). On the other hand, forcing the developers to use only the packages from the official repository it's also wrong, but they must use it at their own risk.
(1) Package must have a proper license. If it's the same as LCL or FPC RTL, just state so or point to the FPC modified LGPL doc files. If it's something else, anything, just have a link to it (Eclipse, BSD, etc.). The only thing unacceptable might be if nothing is specified in the JSON file. By clearly stating what license is used, the user of the package manager can decide beforehand whether that's even a package they're interested in.
(2) If the package depends on LCL (ie, has LCL under RequiredPgks in .lpk file), then it must specify what LCL interfaces it has been tested against. I typically test against Carbon, Win32, GTK2 at a minimum so that I can legitimately say that the package is cross-platform.
@JuhaYes, it is a trivial change.
It means your JSON config must support an external URL. It should be a trivial change (ok, I write this without testing your code yet).
It means a package author can make the required ZIP file in his repository and ask you to add it to the list. Files don't need to be copied anywhere.Ok, and what if another user decide to download and install the the package form the list? The package manager will do it automatically, without any sanity check. This might lead to problems.
...Yes, LazAutoUpdate uses direct downloads from Sourceforge.
Do SourceForge etc. allow direct download links for files? I think they do. I remember you claimed the opposite. I must study the issue.
@minesadoradaI'm almost certain it's not a direct download. You have to follow a few redirects. Personally I don't like that, though it's easily doable with TFPHTTPClient.
Yes, LazAutoUpdate uses direct downloads from Sourceforge.
Ok, and what if another user decide to download and install the the package form the list? The package manager will do it automatically, without any sanity check. This might lead to problems.A sanity check is done by you (or other admin) when adding a URL to the JSON configuration file. You must add trusted URLs only.
As an initial step we should make an official repository. I can include a few hundred packages from different location(lazarus ccr, etc...). I think it's more then enough for a start. After that we can add other dependencies/install method and whatnot. We should keep it simple.Yes, that is fine initially.
License: LGPL
License: LGPL
I read that to mean that it does not include the linking exception that LCL and FPC RTL have. If it does, it needs to include that here.
And a suggestion, it should be downloaded himself to get updates of this package manager, not sure if possible but it's something that will be nice.
And show the version number of the package manager somewhere in the window.
Hi GetMem, I'm testing it and works nicely.Thanks for testing, I'm glad it's working.
You can add BGRA-Controls package?Yes, but you have to wait a few days, because:
Package type and Dependencies: You get them automatically right?Not yet, I added manually to the JSON. I hope an automated tool will be ready in week or so. However once the dependencies are loaded from the json it will automatically search and resolve each package dependency. For example VirtualStringTree depends on LCLextension. If you try to check VirtualTreeView and LCLExtension is not checked or installed the package manager will warn you. Please try it!
And a suggestion, it should be downloaded himself to get updates of this package manager, not sure if possible but it's something that will be niceThis is an excellent idea. Since package manager is a package, will work 100%.
@GroffyYes I will add it, but it's not very high on the priority list. For example I just realized that a zip file can contain multiple .lpk files. The package manager can handle it for now. I have to redesign it.
As soon there will be more registered packages, it might be helpfull to introduce categories(?)
Hi,
I decided to implement the online package manager(opkman). The first alpha version is ready and it works like this: the packages are zipped and stored in a webserver(repository) along with a json file. I chose zip to minimize server load. The json file contains all the necessary info about the packages. Once installed into the IDE, the opkman downloads, then serialize the json file into a package list. The list is displayed in a tree. On request the packages can be downloaded or/and installed. For now the repository is read-only, it contains only eight, well known(I guess?) packages. The nature/type of the eight package is irrelevant for now, since we are only testing the functionality of the opkman. Few notes
from user, to community, from community to semi-official to finally end up in official state
I think opkman should save the packages in the same location as Lazarus does to keep things uniform and simple.
opkman should save the packages in the same location as Lazarus does to keep things uniform and simple.No, under Linux it would suck because authentification would be required (Lazarus Components folder is not writable without sudo)
@BBasileI will do my best to support GitHub, BitBucket, SourceForge, but at a later stage.
It looks nice. Why don't you use a GitHub or BitBucket repository ?
@mollyMy thoughts exactly.
Initially it would be more interesting to get things started, and along the way slowly decide what would be better to implement and what not. There is many many many food for thoughts there.
@shobits1 I think it should show the status of the current Installed package more visually, maybe using color codes:Actually this was implemented, but the package manager looked like a cockatoo bird. :D Too many colors, I gave up.
Green: for the already installed packages.
Yellow: for the installed and need update packages.
Neutral: for the other packages.
@shobits1Please see attachment.
It may also be helpful(when the list grows) to have checkbox filter for those status.
@JanRozaUnder linux and osx the component folder sometimes is read only. Even under windows(especially win 10) you can run into privilege issues.
whereas all other packages installed in Lazarus reside in the folder 'components' under the Lazarus folder
Visually it looks pretty good. One minor typo:
Dependecies --> Dependencies.
If a zip has more than one .lpk, will each package have its own checkbox? Eg, lazxproj_src.zip has two .lpk, one runtime, one installable:
https://macpgmr.github.io/MacXPlatform/LazXProj.html
@PhilThanks! Corrected, link updated.
isually it looks pretty good. One minor typo:
Dependecies --> Dependencies.
If a zip has more than one .lpk, will each package have its own checkbox? Eg, lazxproj_src.zip has two .lpk, one runtime, one installable:Yes, each package will have its own checkbox. I have to redesign the serialization.
@lainzOne by default, the others is up to user? Except when one depends on the other. This is getting very complicated fast. :)
Good question. BGRA Bitmap has 4 packages on it, what is installed? the packages are one for lcl, fpgui, nogui and open gl.
It needs a filter for the packages with available new updates.Quote@shobits1Please see attachment.
It may also be helpful(when the list grows) to have checkbox filter for those status.
It works great but I see that packages installed via opkman are placed in a subfolder 'Packages' under the opkman folder whereas all other packages installed in Lazarus reside in the folder 'components' under the Lazarus folder.
GetMem you can host your package manager on GitHub ...
GetMem you can host your package manager on GitHub, so it's easy to get a newer version when you're developing it.I kinda agree with this. Adding packages is a matter of approving merge request then, while maintaining code reviews and other things, with history. Otherwise, I can make my server a git server as well, but it will lack the convenience of github UI.
When this gets integrated with the current package management code, dependencies will be handled by it (I think).Yes.
You have implemented your own code for TZipper, TUnZipper etc. You should use the TZipper provided by FCL :Not quite! I used the same unit provided by FCL, but with a few modifications, this is also true for httpclient. Neither one provides a timeout function. For example when you try to connect to an offline server with httpclient, sometimes it waits 25 - 30 sec before returns an error. The same is true for zip/unzip from Zipper.pas, once started you have to wait until the entire zip process is over, no possibility to abort the process. More over httpclient doesn't even show a download progress. I had to create a thread timer and a modified streamer class to be able to provide a feedback(see opkman_downloader.pas unit). The possibility to show a progress with TZipper is also limited, (although is there) so I had to enhance the function.
http://wiki.freepascal.org/paszlib#TZipper
BTW, your zipper code has a memory leak somewhere.I always develop with "Debug IDE" profile to avoid leaks. I fixed many leaks in my package, obviously I missed something. Thanks.
You have also added a copy of the VirtualTreeview code into your package. Can't it use the VirtualTreeview package as a dependency?Initially I wanted to avoid third party components. Unfortunately TTreeView is so limited in so many ways I decided to switch to VST. The only version which works well in every major widgetset is VST4.8.7R2. The newer one doesn't even compile under osx for example. What if somebody already has a newer version installed? It will lead to conflicts, multiple resource errors, etc. It's not a good practice to force the developers to use a specific version of VST, just to be able to install opkman. So I added VST internally to the package manager, even replaced the resource names with a resource editor to avoid conflicts. This way it can happily coexists with any version of VirtualStringTree. Code duplication again? Perhaps but the benefits outweigh the drawbacks.
@shobits1Ok. I can add this later.
It needs a filter for the packages with available new updates.
Since zipper.pas and httpclient.pas functionality is more then enough in 99% of the cases, fpc core members would not accept a patch just to satisfy the online package manger needs (at least this is what I think).If that is the case they should at least change the source so that you can inherit the code and enhance it. A lot of the time this is not possible due to unnecessary private variables.
@rvkTrue! With my streamer class can do both download/upload progress threaded. @rvk if you find a way to abort a download/upload process via class inheritence let me know. The same is true for a timeout function.
Can't look right now but I think it's the OnDataReceived in dodataread. But it lacks a OnDataSend
I know this is code duplication. Ideally I should create a patch for those units, but when will be accepted(if ever)? Since zipper.pas and httpclient.pas functionality is more then enough in 99% of the cases, fpc core members would not accept a patch just to satisfy the online package manger needs(at least this is what I think).
Good question. BGRA Bitmap has 4 packages on it, what is installed? the packages are one for lcl, fpgui, nogui and open gl.And fpGUI has one for each GUI backend (GDI, X11, Carbon, OS/2 etc)
I made a helper for TFPHTTPClient (for a WebDav client) in which I override the complete SendRequest() to call a special CopyFromStreamToStream() which has a Callback() function for upload-progress. Maybe you implemented it the same way for download (haven't looked yet). It can be easily changed that the Callback() function can receive an Abort-boolean in which case the CopyFromStreamToStream() can abort it's operation.Quote@rvkTrue! With my streamer class can do both download/upload progress threaded. @rvk if you find a way to abort a download/upload process via class inheritence let me know. The same is true for a timeout function.
Can't look right now but I think it's the OnDataReceived in dodataread. But it lacks a OnDataSend
BGRA Bitmap has 4 packages on it, what is installed? the packages are one for lcl, fpgui, nogui and open gl.
@JuhaThat's true, however many big packages(zeos, ibobjects, bgrabitmap) just to mention a few, contains multiple lpk files. Which one should be installed by default? It would be a great help for me if only one package/zip is installed.
I think there should be only one package in a ZIP file.
Having many packages adds a useless extra complication.
[~]$ fppkg list
Name Installed Available
embweb - 0.9.1-968
gecko - 2.9.0-3
jquery - 0.9.0-842
lazmkunit - 0.9.3-1
lnet - 0.6.6-2606
webdesign - 0.9.0-906
Maybe a button to go directly to "Install/Uninstall Packages". Not sure if this is possible (opkman is ShowModal and SPM too). But it can be handy to take a quick look in SPM and escape right back into opkman.
Regarding the multiple packages in one zip/download. Maybe there can be checkboxes per .lpk inside the treeview which to install. Otherwise there should be some dialog after choosing a package as to which package you really want installed. Moving each .lpk into it's own zip/source is not advised because all those .lpk use the same source and multiple "same sources" will eventually get you in trouble when compiling.
BGRA Bitmap has 4 packages on it, what is installed? the packages are one for lcl, fpgui, nogui and open gl.
I think there should be only one package in a ZIP file.
Having many packages adds a useless extra complication.
When I install a package and choose NOT to rebuild and close opkman and open it again... the opkman shows the package as "Already installed" while it is not yet.That's not true, it is installed. Close Opkman(without rebuild), then open "Install/Uninstall packages" and check the installed package list. More over, if you close Lazarus and delete the just installed package directory from the filesystem, on next startup Lazarus will complain about a missing package. You cannot use it until an IDE rebuild but it is installed.
Would the "Downloaded" status be really necessary? When not installing a package and again pressing install, wouldn't re-downloading it and installing it be more logical (you would also have the updated version if any). Or is "Downloaded" also for non-installable packages (like synapse)?Search for ForceDownload and ForceExtract booleans. The user will choose the appropriate action. It is already implemented(false by default), not yet visible in the option dialog though.
"Already installed(Version: 1.0.0.0)". There is no space between installed and (Version). That said... maybe 2 columns with Current version and Online/updated version would be useful. Like the fppkg does with "Installed" and "Available" columns. (See at the bottom of this post)Those are all valid and useful suggestions. I will implement them.
Escape doesn't work to close the opkman. There should probably a Cancel button for that just like in the "Install/Uninstall Packages" to easily exit the dialog.
Maybe a button to go directly to "Install/Uninstall Packages". Not sure if this is possible (opkman is ShowModal and SPM too). But it can be handy to take a quick look in SPM and escape right back into opkman.
An extra column with the (short)description of the package in the folded-view. There is plenty room to move Status (and current and available version #) in a separate column.
Abbreviate "Status" to something simpler. In that case that extra column doesn't need to be that wide. It's hard to see what's available/installed or downloaded at the moment. Just Available, Downloaded and Installed will be sufficient. And it will be easier on the eyes.
After the Downloaded and Installed could be an update status (like " - Updated").
Only make the " - Updated" status bold. All others should be plain. The bold status also makes it hard to read. (Especially when my eyes are tired :) )
When those hundreds of packages are added (good luck with that :P ) a category-pulldown will be useful (I think it was already suggested).:D Ok fair enough, I won't find that many packages but adding one package to the repository will be a matter of seconds, once the automated tool is ready.
Regarding the multiple packages in one zip/download. Maybe there can be checkboxes per .lpk inside the treeview which to install. Otherwise there should be some dialog after choosing a package as to which package you really want installed. Moving each .lpk into it's own zip/source is not advised because all those .lpk use the same source and multiple "same sources" will eventually get you in trouble when compiling.Each lpk will have a checkbox.
Moving the development of the opkman to SourceForge or GitHub is highly appreciated. We (I) can keep track of progress and automatically SVN a new version into my new trunk-compile scripts :) (unless you have Lazarus repo access real soon)Done: https://github.com/getmem/LazOpkMan
BGRA Bitmap has 4 packages on it, what is installed? the packages are one for lcl, fpgui, nogui and open gl.
I think there should be only one package in a ZIP file.
Having many packages adds a useless extra complication.
Yes but why to duplicate the same source code and just for getting a different zip? Maybe for lpk only a file is changed to fit the widgetset, all other files remains the same.
BTW, your zipper code has a memory leak somewhere.
This Lazarus repository will be similar to Debian repositories that have stable, testing and unstable versions of the packages?
@JuhaI was able to reproduce the memory leak. It's caused by "DoOpenPackageFile" function from inside pkgmanager.pas called through packageintf.pas. If I remove the function call the memory leak is gone. Something is not freed inside "DoOpenPackageFile".
It is not in the zipper code.
There is a leak after installing a package and building / restarting the IDE. I could not figure out where exactly.
@lainzI'm working on it. To support multiple packages, I had to redesign a large part of the code.(see attachment). When it will be ready? I cannot tell you exactly. Hopefully soon.
How it is going?
you created the git repositoryYes, I updated my first post a few days ago.
@lainzThanks, noted! The eight packages is for testing purposes only, the whole repository will be recreated.
BGLControls is not BGRAControls! BGLControls is an OpenGL control to use with BGRABitmap for OpenGL.
Please suggest categories, for now I have: Networking, Graphics, Multimedia, Reporting, Miscellaneous. What else? BGRABitmap is graphics, mediaplayer multimedia :D ,
no-brainer so far, but in which category can I include VirtualStringTree for example?
DataControls or GUIContainers perhaps.
@howardpcVirtualStringTree is a GUIContainer. I like that! Thanks.
DataControls or GUIContainers perhaps.
Could I suggest avoiding Miscellaneous altogether? It's as bad as the name 'Anonymous' ;D . Or, if you must, how about Other (it's shorter and no less informative).Done.
Please suggest categories, for now I have: Networking, Graphics, Multimedia, Reporting, Miscellaneous. What else?Take a look at left frame on http://torry.net/pages.php?id=20. You decide if you want such fragmentation, but anyway you will get an idea about possible categories.
@avraThanks avra! It's useful.
Take a look at left frame on http://torry.net/pages.php?id=20. You decide if you want such fragmentation, but anyway you will get an idea about possible categories.
How about category for the IDE related things, like anchor docking, debuggers, ... maybe call it "IDE Enhancement" or something else (I'm not great with naming).Perhaps LazIDEPlugins ?
@circularEach package has a "Home page" and a "Download URL" section(see screenshot from previous page). On request the package manager can download and install the updated package.
I am wondering about updates: how to update the repository with latest version? Let's say I publish a new version of BGRABitmap, how can I update the version number in the package manager?
Hi,Hi, and congratulations for your Delphinus. I plan to study it and get inspiration from it.
I am the author of Delphinus, so i thought i'd give my 2 cents:
Is this to be something like "NuGet" for MS visual studio ? (https://en.wikipedia.org/wiki/NuGet, https://www.nuget.org/)
If so, I think it is really good idea. Worst part of Delphi/Lazarus for me is that you must hunt various packages across the internet and central repository would be so much better.
Each package has a "Home page" and a "Download URL" section(see screenshot from previous page). On request the package manager can download and install the updated package.Oh I see.
@circularThat's the refresh button. Update is not yet implemented.
Update is down by pressing the green cyclic arrows?
The ETA for the next release is monday (24.10.2016). After the release, everyone can create packages for the main repository. Until then a quick preview(win32/64, gtk2, carbon).
D Day!!! :-*
@lainzUnfortunately that feature is not available yet, it will be in the next release though(see attachment). We should populate the central repository with packages first, this is the main purpose of this release + bug fix. However if you really want a personal repository we can make one ;)
OK. I've downloaded the package from GitHub. You will create a wiki or something with info on how to create an own repository (website) with packages?
I'm ready, we have to wait until @Leledumbo updates the repository. So please be patient...
Ah,, thank you...I'm ready, we have to wait until @Leledumbo updates the repository. So please be patient...
Ah,, thank you...No problem! I will post a message when everything is up and running.
sorry I didn't pay much attention -- I started suspecting my crappy internet connection right away.
PS: What about Lazarus Code and Component Repository? Most of the packages are very old. We should include all of them? Who's familiar with the packages inside LCCR?Yes, many of them are in a bad shape. These are the ones that I am using and which I know are fine:
The package bgrabitmap that's in the repository has the wrong category, it must be Graphics.Thanks! The category is not displayed correctly in the three. I will fix it soon.
Congratulation! You're the first one who submits two valid packages. You forget the download links though:Not wanting to play a party pooper there but, how do you know master is in fact the (stable) release of those packages ?
https://github.com/bgrabitmap/bgracontrolsfx/archive/master.zip
https://github.com/bgrabitmap/bgracontrols/archive/master.zip
@mollyI don't, but the package developer does know I suppose :D. The user will decide if he/she updates the package from the external link or use the default one from the main repository. By the way multiple version of the same package is also allowed.
Not wanting to play a party pooper there but, how do you know master is in fact the release of those packages ?
Did you test it @molly? Feedback is welcome.I have now :D
@molly
1) if i press right mouse button to view the json file, i seem unable to 'return' to the initial packager view. All things i tried (click close, escape etc) closes the window (which is not what i wanted).
The two things that annoyed me (sorry, there is no way for me to tell it more gently).Right click again on the JSON memo, a menu should pop up with "Hide JSON" item. This feature was introduced for debugging purposes, I will probably remove it at the end.
1) if i press right mouse button to view the json file, i seem unable to 'return' to the initial packager view. All things i tried (click close, escape etc) closes the window (which is not what i wanted).
2. 2) i chose to automatically extract the package, which automatically seems to popup a windows explorer window at the location where the package was extracted. I absolutely most definitely despise those windows popping up as i do not use Windows explorer _ever_ (which is more my personal problem ofc.) :-)Interestingly enough other people like this feature, but I understand your point. You will be able to set the default behaviour in the options. It's not yet implemented.
In case not already having considered, i would have expected the download location to be part of the options inside the online package manager. At least don't let me start selecting a directory from my computer top-level but in user dir or lazarus dir (i usually install my packages alongside lazarus install dir for lazarus 1.7 series).Under linux, osx the lazarus install dir sometimes is read only.
Question: I assume (?) that you also add support for installing the packages, in which case the question pops up: what if i already installed packages manually ? would the online package manager be able to detect that and not try to install the same package twice ?I will answer with a screenshot.
I have to congratulate you on your progress, as things that work seem to work as expected for me. In that regards never mind my encountered annoyances. Most probably you are aware of them already anyways.Thank you!
Thank you for your hard work on this and actually realizing something that should have been done/implemented ages ago.
Oh, i almost forgot. If no package selected, download button is active. Dunno how hard it would be for virtualTV to determine number of selected items, otherwise can be solved adding a counter at onclick event/on check event and only activate download button when items are actually selected ? Would imho be better than the nice message box you now show :)It would be trivial to implement, not very high on the priority list, but I will do it.
@shobits1When the package has first seen on the server.
What does `available since` means?? (confused)
does it mean when the package has first seen on the server OR it is the update date for updated packages.
@wpI must confess that I did not follow this thread in detail. Your remark indicates that you need a zip file for the Package Manager. This may be a problem. Much of the work that I put into ccr is work in progress, and I only rarely update the released zip files. When I do I will always add a version number to keep the history. The download link, therefore, will change. But of course I could provide a copy of the current release under a standard name, i.e. the current release of fpspreadsheet (fpspreadsheet-1.6.2.zip (https://sourceforge.net/projects/lazarus-ccr/files/FPSpreadsheet/fpspreadsheet-1.6.2.zip/download)) could be provided also as fpspreadsheet.zip, or fpspreadsheet-release.zip.
Thanks! Tomorrow I will add packages to the main repository. I have a question though: when you modify something in one of the packages you replace the zip file? I would like to know if the download link stays the same(this is true on github).
As far as I know SourceForge svn does not create snapshots of the development versions in the individual source folders. So, there is not explicit zip snapshot of the current trunk version of, e.g., fpspreadsheet. There is one big snapshot but it contains the entire ccr repository.This is exactly what I'm looking for(explicit snapshot of the current trunk).
But of course I could provide a copy of the current release under a standard name, i.e. the current release of fpspreadsheet (fpspreadsheet-1.6.2.zip) could be provided also as fpspreadsheet.zip, or fpspreadsheet-release.zip.That would be helpful. Thanks! On github things are much easier.
Have you tried right click -> hide json ????
that works great
Right click again on the JSON memo, a menu should pop up with "Hide JSON" item. This feature was introduced for debugging purposes, I will probably remove it at the end.
In both cases some admin work is required. The JSON file must be updated with the package's version info etc.Quote@mollyI don't, but the package developer does know I suppose :D. The user will decide if he/she updates the package from the external link or use the default one from the main repository. By the way multiple version of the same package is also allowed.
Not wanting to play a party pooper there but, how do you know master is in fact the release of those packages ?
But of course I could provide a copy of the current release under a standard name, i.e. the current release of fpspreadsheet (fpspreadsheet-1.6.2.zip (https://sourceforge.net/projects/lazarus-ccr/files/FPSpreadsheet/fpspreadsheet-1.6.2.zip/download)) could be provided also as fpspreadsheet.zip, or fpspreadsheet-release.zip.It does not make much difference as the JSON file must be updated anyway.
The server containing the repository needs something special? Edit (Seems that not).
Because if not (for example is just a json and zip files) you can use GitHub: create a new git repository and use it as website with github pages, then you can upload new packages using tortoisegit or your favourite tool and the changes are automatic.
If you need help just ask.-
@JuhaThen I fail to see the purpose of the external download link. If the json must be updated each time, it's better to update the package itself, with the automated tool it takes only 1 minute or so. The external link should point to the trunk perhaps? Pointing to a stable version makes no sense at all.
It does not make much difference as the JSON file must be updated anyway.
BTW, you just provided a ZIP-file link to SourceForge server. Clearly it is possible although GetMem doubted it earlier.
Then I fail to see the purpose of the external download link. If the json must be updated each time, it's better to update the package itself, with the automated tool it takes only 1 minute or so. The external link should point to the trunk perhaps? Pointing to a stable version makes no sense at all.Ok, I was thinking of the updated package's version number. I thought it should be visible in the list of available packages. Maybe it is not important, the versions of installed packages are visible anyway.
...
It is better to have a proper server. It allows more options in future, including a server side SW to handle user feedback and grading / voting system.
GitHub can be later supported in the same way that Delphinus does now, as an alternative to the contralized server.
..
If there were only a simple voting system to start with, it would be very useful to potential users.No, initially there will not be even a simple voting system. It requires server side SW.
Environment: Win 10 64-bit
Does it work for others? I can try to debug it.
My system is a 64-bit Manjaro Linux. Could it be a 64-bit issue?
I understood some people used theNo i did not but, i have now :)
Repository -> "Create repository package"
feature of the package manager. Is it so?
is it somehow possible to configure a connection with a proxy in between?Not yet! I will add that option later.
Once I saw that error under linux. It comes from zippper.pp unit(fpc). Please download the latest version, it will display a more meaningful message.It is caused by wrong type of file attributes in the zipper. I always test code with compiler checks and debug flags set, thus an overflow interrupted it.
{
"PackageData0" : {
"Name" : "aggpas",
"Category" : 2,
"RepositoryFileName" : "aggpas.zip",
"RepositoryFileSize" : 2943239,
"RepositoryFileHash" : "aa2d6ca1dd9b54f6d1c607cc260aa588",
"RepositoryDate" : 4.2669000000000000E+004,
"PackageBaseDir" : "aggpas\\\/"
},
"PackageFiles0" : [
{
"Name" : "aggpaslcl.lpk",
"Description" : "AggPas canvas for LCL",
"Author" : "Mattias Gaertner, Milan Marusinec",
"License" : "Permission to copy, use, modify, sell and distribute this software is granted provided this copyright notice appears in all copies.\nThis software is provided \"as is\" without express or implied warranty, and with no claim as to its suitability for any purpose.",
"RelativeFilePath" : "lazarus\\\/",
"VersionAsString" : "1.0.0.0",
"LazCompatibility" : "1.6, Trunk",
"FPCCompatibility" : "2.6.4, 3.0.0",
"SupportedWidgetSet" : "win32\/64, gtk2, carbon",
"PackageType" : 2,
"DependenciesAsString" : "LCL, FCL(1.0.0.0)",
"HomePageLink" : "",
"DownloadLink" : ""
}
]
}
I always test code with compiler checks and debug flags set, thus an overflow interrupted it.Me too, however under Kali Linux(32 bit) the error does not occur.
The same change can be made to your copy.Thanks for the patch, I will apply it soon. I did try the httpclient from FPC trunk once, but there was a reference to another unit. I did not want to copy more then one file.
However I recommend that you create a patch of your new zipper events against the latest FPC trunk which now has many changes related to Unicode and other parts, too.
When it is applied, we can copy the latest version from FPC trunk without worries.
The same goes with your http client fork.
Now that the zipper works, I got a valid ZIP file and also a JSON file.If somebody submits a repository package, the json file will be integrated into the main JSON. I'm not sure yet what would be the optimal solution for remote URL's.
If the idea is to download an extra JSON file from the remote URL then it solves the version number problem.
My understanding is that now only the central server has a JSON file.
@rvk+1. Added.
You might want to add onlinepackagemanager to the repository so we can update the manager itself to the latest version easily :D
How about remembering last download location?QuoteIn case not already having considered, i would have expected the download location to be part of the options inside the online package manager. At least don't let me start selecting a directory from my computer top-level but in user dir or lazarus dir (i usually install my packages alongside lazarus install dir for lazarus 1.7 series).Under linux, osx the lazarus install dir sometimes is read only.
+1. Added.
@avraConsider it done.
How about remembering last download location?
@GroffyYes, but it's not updated yet. I'm still waiting for packages.
Can't see it in the repository. Is the adress http://104.199.177.61/ still correct?
Yes, but it's not updated yet. I'm still waiting for packages.I copy here GetMem's earlier instructions in this same thread. The thread is long and they may get buried and forgotten.
Should this only be done by the maintainer of those packages or can anybody submit random packages?Yes, but it's not updated yet. I'm still waiting for packages.I copy here GetMem's earlier instructions in this same thread. The thread is long and they may get buried and forgotten.
@rvkAnyone can submit any package. In a worse case scenario we will have a few duplicates, I will filter them out. Different versions of the same package is also allowed.
Should this only be done by the maintainer of those packages or can anybody submit random packages?
Also... what to do with packages which don't have maintainers (or maintainers who are not part of the Lazarus community like for Ararat Synapse)?Even more important to submit it. I already added Ararat Synapse because it's a well known package, but my knowledge is limited.
bgra_controls
bgra_controls_fx
bgrabitmap9.2.1
cmdline
colorpalette
csvdocument
dcpcrypt-2.0.4.1
epiktimer
eyecandycontrols_0-9-6
FileMenuHandler
fortes4lazarus 3.24
fortesreport-ce4
fpspreadsheet
HistoryFiles
indy10.6.2.0
jujiboutils
lclextensions-0.6
mplayer0.1.2
OnlinePackageManager
playsoundpackage
plotpanel-lazarus-0.97.1
powerpdf_0.9.14
richmemo1.0
ringwatch
SMNetGradient2.0.6
spktoolbar
synapse40
tvplanit
uniqueinstance
virtualtreeview-4.8.7-R4
virtualtreeview-5.5.3-R1
zeosdbo-7.1.4
PS: We can always extend the package list. There is no time limit. It would be nice though to have 50+ packages to test the functionality of lazopkman.
What about the KControls component suite package? They are really great, coming with a powerful grid component.I would second that. But there is the usual problem of finding the correct sources. The version in ccr is doing fine, but I think it is out-dated. The version on the original site (http://www.tkweb.eu/en/delphicomp/) seems to be last modified in April this year, much more recent. The message is signed by a user "tk". The same name exists also in this forum.
When I used OnlinePackageManager to create a package, it zips up both the /backup and /lib folders if they exist.Don't worry about the /backup and /lib folder, I will remove them manually.
This is obviously not a good idea.I agree. I can add a feature that skips the /backup and /lib folder, however this won't prevent someone with malicious purpose. A manual check is mandatory.
@JuhaWhat about documentation, demos(source only)? The total size of the 34 packages is 26.9 MB, it's less then 1MB/package. With today standard 26.9 MB it's a small footprint. Even 100 MB would be small.
Yes, the Zip file should not contain anything extra. Download traffic should be kept low.
Marc asked me for the needed size and traffic. I could only estimate it is low, even with the DB which will contain only textual data.Perhaps @Leledumbo can give us some info about the traffic. He's running the repository for almost a month.
What about documentation, demos(source only)? The total size of the 34 packages is 26.9 MB, it's less then 1MB/package. With today standard 26.9 MB it's a small footprint. Even 100 MB would be small.Sure they can be included, as well as any resource files needed by a package. I was only worried about compiled binary files included accidentally.
You can create a new repository called packages, create releases and put there the files and that's all. Then instead of having to upload to your server the file uses the github one (you miss the server load in this case, all goes to github) and link it to the package as is currently beign doing for the alternate download, well instead of beign alternate just main.I think the remote URL feature already supports that.
Earlier there was discussion about including snapshots of development versions of some packages.For the first time, I'm not following you :D. If somebody doesn't want to maintain his package, there is little you can do about it.
It is a diffucult issue with packages which don't have a maintainer. Nobody makes release versions of them. The Online Package Manager admin must take some revision from the commit history and "release" it. What if it crashes? Is it his responsibility to find a revision that does not crash?
This issue is a swamp.
Now initially it doesn't matter because everybody is enthusiastic. After some years however people get bored with such admin work. The packages without a maintainer are forgotten even if their master source got some fixes.
The goal is that all packages have a maintainer but it is not realistic. I was surprised to learn that even well-known packages like Synapse have no recent releases. It has a maintainer after all.
We are now solving the same problem that CCR repo tried to solve years ago. The idea was that all Lazarus packages can be found easily in one place. They are under revision control, thus their maintainers can easily develop them.The update feature will be ready tomorrow. Next week I plan to add SVN support. It shouldn't be to difficult. In a month or so the ''personal repository" feature will be also available. Everyone can create a whole repository, store it on GitHub for example. LazOpkman will be able to load multiple repositories at the same time.
Well, it has not worked very well. Most package authors have fleed.
There is a danger that we end up with a similar outdated system. Most packages are not maintained and to get their latest fixes you must use revision control directly anyway.
Maintained packages are our hope. The Online Package Manager should be easy and attractive for their maintainers. That's why the remote URL should be supported, so that trusted sources can be updated as easily as possible.
@lainzDon't trim anything. Although bgracontrols is one of the biggest package, still way below the upper limit. After all is a complex package.
If size needs to be really low I must trim test projects that are most the size of bgracontrols, a lot of tests ::) nothing more than 4 or 3 mb :D
@minesadorada: Thank you for bringing the attention to these nice components (the playsoundpackage has already been included).Hi wp,
A few questions/remarks to these components
lazautoupdate:
I saw that you distribute synapse along with this component. I don't know, but wouldn't it be better if you just provide the download link?
Or even better: As I can see (I may be wrong) you use synapse only to download files from their web sites. You should be able to do this also with fphttpclient that comes along with fpc (see folder packages/fcl-web/base). Reducing external depencies is always a good objective.
In the package file, you add the synapse.lpk package file to the "files" section of the lazupdate section. Why? I fear this will sooner or later cause trouble for those users who already have synapse installed (like myself), because it will end up in a version mixup of the already installed files and the files added by your package.
All packages:
All packages have a requirement of the ideintf package. I think this is not good because it pulls all the designtime code into your application. The correct way, in my opinion, would be to split the stuff into two packages, the runtime package containing all the runtime stuff (your unit code plus LCL), and the designtime package for the work with form editor and object inspector (ideintf plus your aboutbox)
P.S. I know that "my" tvplanit does the same - but these components were written a long time ago by TurboPower when nobody was aware of this issue, it will be fixed in one of the next releases.
They are all LGPL2.This confuses me: You say here that the license is LGPL2, but in the license header of ulazautoupdate you write: "This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License..." - this is GPL v2, LGPL would be "GNU Lesser Library General Public License".
Ah - well spotted! I wrote the code before I properly understood licensing. Being linkable components, they should all be modified GPL of course.They are all LGPL2.This confuses me: You say here that the license is LGPL2, but in the license header of ulazautoupdate you write: "This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License..." - this is GPL v2, LGPL would be "GNU Lesser Library General Public License".
So what is valid? Is there a special reason why you don't select the modified LGPL (with linking exception) which is used for all (?) LCL code?
Ah - well spotted! I wrote the code before I properly understood licensing.Lucky man - I still don't...
1. lazautoupdateIn a few days the main repository will be updated again. We have 40+ packages.
2. longtimer
3. playsoundpackage
4. poweredby
5. scrolltext
GetMem, playsoundpackage is already included, you may have to update it thought.True. Playsoundpackage is already in the list. Luckily opkman won't allow me to add the same lpk twice. I will update the existing one.
Sorry I have not read the whole thread, but installed the package manager and got Invalid JSON file on Packages -> Online Package Manager. That happens after the attempt to download package list.That happened to me.
Closing the manager dialog also gave exception in Lazarus.
Latest 64 bit lazarus trunk / Debian
@minesadoradaSo what is the procedure if I update a package? Up to now I just used TortoiseSVN to commit to the ccr repository.
Thank you! I will add the packages to the main repository:Quote1. lazautoupdateIn a few days the main repository will be updated again. We have 40+ packages.
2. longtimer
3. playsoundpackage
4. poweredby
5. scrolltext
You don't have to do anything. I will download each package with a SVN client and add them manually to the main repository. In a week or so the SVN feature will be ready. Meaning: we provide the SVN link, on request the package manager will checkout, compile, build install the package(see attachment). This is the plan anyway.
@minesadorada
So what is the procedure if I update a package? Up to now I just used TortoiseSVN to commit to the ccr repository.
bgrabitmap9.2.1
bgracontrols-4.3.2
bgracontrolsfx-0.1.6
callite
cmdline
colorpalette
csvdocument
dcpcrypt-2.0.4.1
epiktimer
eyecandycontrols_0-9-6
FileMenuHandler
fortes4lazarus 3.24
fortesreport-ce4
fpspreadsheet
HistoryFiles
indy10.6.2.0
jujiboutils
kcontrols_1.7
lazautoupdate
lazbarcodes
lclextensions-0.6
longtimer
mplayer0.1.2
OnlinePackageManager
playsoundpackage
plotpanel-lazarus-0.97.1
poweredby
powerpdf_0.9.14
richmemo1.0
ringwatch
scrolltext
SMNetGradient2.0.6
spktoolbar
synapse40
synapse41
tvplanit
uniqueinstance
virtualtreeview-4.8.7-R4
virtualtreeview-5.5.3-R1
zeosdbo-7.1.4
@minesadoradaYes. I will add the wiki pages.
All my packages have a wiki page - as do most others. Do you think it would be a good idea to have an [info] link next to the ones that do
Package: "lazupdate.lpk" depends on package: "laz_synapse.lpk". Resolve dependency?
@minesadoradaThe repository is already updated. I can hide LazAutoUpdate if you like.
Can you hold fire on LazAutoUpdate for a bit?
{$if (lcl_major >= 1) and (lcl_minor >= 7)}to
{$if (lcl_major >= 1) and (lcl_minor >= 8)}The package manager will work fine(no compiling feature though). Of course none of this will be a problem after the next release.
Ok LazAutoUpdate is working now (thanks Sourceforge for changing your API!)Quote@minesadoradaThe repository is already updated. I can hide LazAutoUpdate if you like.
Can you hold fire on LazAutoUpdate for a bit?
@minesadoradaIdeally only download the component, but I guess source is always ok. The user should decide the appropriate action.
The question is: How much should OPM do? Ideally it would download the component; the companion non-GUI (source) and the GUI developer maintainer (source).
@minesadoradaAt svn the version is 0.1.28.0 O.P.M. has 0.1.27.0 as the downloadable. Can you update please?
Your package is visible again. Please test it. You should download the source first: https://github.com/getmem/LazOpkMan
At svn the version is 0.1.28.0 O.P.M. has 0.1.27.0 as the downloadable. Can you update please?Consider it done. However I don't know exactly when the next update will be. As I told you previously I'm not hosting the repository.
I notice OPM has 'Update Link'. The update link for lazautoupdate is https://sourceforge.net/projects/lazautoupdate/files/lazautoupdatesource/ - I keep that synchronised with svn. In future, I'll include the version in the package file name.QuoteAt svn the version is 0.1.28.0 O.P.M. has 0.1.27.0 as the downloadable. Can you update please?Consider it done. However I don't know exactly when the next update will be. As I told you previously I'm not hosting the repository.
I notice OPM has 'Update Link'. The update link for lazautoupdate is https://sourceforge.net/projects/lazautoupdate/files/lazautoupdatesource/ - I keep that synchronised with svn. In future, I'll include the version in the package file name.Thanks! This would be helpful.
Full link to zipfile with correct path (\lazautoupdate) : https://sourceforge.net/projects/lazautoupdate/files/lazautoupdatesource/lazautoupdate.zip (https://sourceforge.net/projects/lazautoupdate/files/lazautoupdatesource/lazautoupdate.zip)QuoteI notice OPM has 'Update Link'. The update link for lazautoupdate is https://sourceforge.net/projects/lazautoupdate/files/lazautoupdatesource/ (https://sourceforge.net/projects/lazautoupdate/files/lazautoupdatesource/) - I keep that synchronised with svn. In future, I'll include the version in the package file name.Thanks! This would be helpful.
Please note:
The update link should point to a zip file. The zip structure should be the same as the one in the repository. I mean you can add new files to your project but the path to the lpk file, the main directory name should stay the same, otherwise OPM will fail to load the package.
@minesadoradaThanks.
Done!
...Each package should ideally have a Wiki page (or one constructed for it) as it's 'Home Page'. In that way, OPM can keep it compact, and the wiki page is easily updated by the package author with more information and/or links.
Another wish: Many packages don't contain a description of what the package is good for, but for those which do the description usually runs across several lines. In the package list this desciption, however, is squeezed into a single line. Wouldn't it be better to provide a separate memo for the package description, or to increase the row height of this line to show all lines as a wordwrapped text? The minimum would be a popup hint showing the entire text. The same probably for the license.
As I can see the package list contains also CSVDocument. I don't know if this is a good idea: CSVDocument is included in the fpc installation since version 3.0. At least there should be a comment that the ccr version should be used only for older fpc versions.Thanks! I removed CVSDocument from my local repository. It will take a few days though until the main repository is updated.
Another wish: Many packages don't contain a description of what the package is good for, but for those which do the description usually runs across several lines. In the package list this desciption, however, is squeezed into a single line. Wouldn't it be better to provide a separate memo for the package description, or to increase the row height of this line to show all lines as a wordwrapped text? The minimum would be a popup hint showing the entire text. The same probably for the license.I will add a popup hint, because a variable height row(with a lot of info) would look ugly in my opinion. The tree is already displaying to much info.
Let's not discourage him with loads of 'suggestions/improvements'No no! Please let the suggestions/improvements coming. I like that. I will try to implement most of them(at least the reasonable ones).
It would be nice if OPM showed which IDE tab the component was being installed to. (though sometimes 'hunt the newly-installed component' can be a diversion from an otherwise boring day)Use the: Lazarus Menu-->View-->Components(Ctrl+Alt+P). It takes just a few seconds to locate the newly installed component.
@lainzThanks. You should send me the upload links for the BGRA components. See BgraBitmap9.2.1 and the previous discussion with @minesadorada.
Installed spktoolbar with this tool and it's working well in Trunk. Good job.
Maybe we can create a special release called OnlinePackageManager where you always can grab a zip file we upload when we release the newest version. (If I understand it right). Of course it will have always the same name.Yes, you understood correctly. That special release would be great!
Or you can use the master repository (git) with has the latest sources always (we need to ensure that always compile and is working well). Or we can create a separate branch wich is updated only when we release a new version.I plan to add this feature. The package manager will be able to checkout/update/pull whatever from a SVN repository. The thing is most of the packages out there don't have a zip with the latest version, only a link to a SVN repository. This feature seems more logical then the "update from external zip".
@lainz
Great! I will add the links to the JSON file. One more thing, I noticed that the description and author fields are missing from "bgracontrols.lpk" and "bgracontrolsfx.lpk". Is this by accident?
@wpI updated the package. Thanks.
There's a new release version of CalLite (https://sourceforge.net/projects/lazarus-ccr/files/CalLite/) and a wiki page (http://wiki.lazarus.freepascal.org/CalLite).
Is this a known problem?Not until now. It was a bug. Please test it again: https://github.com/getmem/LazOpkMan
@lainz
I did try to reproduce myself without success.
Good news! Thanks to @varianus the package manager has proxy support. Please test.
Minor annoyance: I installed the DCrypt package, which in itself is pretty cryptic, so I clicked on the help link on OPM, and it points to an obsolete Delphi page which doesn't help at all. I would suggest changing the link to http://wiki.lazarus.freepascal.org/DCPcryptAlthough the obsolete delphi page is the original one, I agree http://wiki.lazarus.freepascal.org/DCPcrypt is more helpful for Lazarus user. Link changed. Thanks!
Just saw, that in Lazarus trunk the onlinepackagemanager moved into the \components folder. This version allows to use a proxy server. Great! After installing and open the manager form, there is a message about an invalid JSON ini file. How to avoid that?This could only happen if you connect to the old repository with outdated JSON. Open options, then change Remote repository to: http://packages.lazarus-ide.org/
This could only happen if you connect to the old repository with outdated JSON. Open options, then change Remote repository to: http://packages.lazarus-ide.org/
@GroffyYou're more then welcome! Feel free to post any bugs you find or suggestions/feature requests.
Thank you for your quick response, I forgot about that. Again thank you for your great work!
Feel free to post any bugs you find or suggestions/feature requests.
Filter functionality seems not fully functional. I just tested to filter by category. With any of the defined categories, the result is an empty listbox.This is a bug, fixed in r53396. Please test.
would be nice to store the last assigned filterThis can be easily implemented, but then the list gets filtered by default. It may lead to confusion. What do you think?
Furthermore there is a filtering by Author, but it seems that the repositiory items do not contain the authors name (at least not visible)Each repository package can contain multiple lpk files. The Author field is located in the lpk node(see attachment).
Makes it sense to manage more than one repository address?Yes. This is in the todo list.
Makes it sense to enable an automatic message when for one of the installed packages an update is available?I can implement this feature for the main repository, however checking updates from external webpage(see update feature) can be dangerous(malware, license issues, etc...). I don't want to automate the process.
This can be easily implemented, but then the list gets filtered by default. It may lead to confusion. What do you think?
Each repository package can contain multiple lpk files. The Author field is located in the lpk node(see attachment).
I can implement this feature for the main repository, however checking updates from external webpage(see update feature) can be dangerous(malware, license issues, etc...). I don't want to automate the process.
The problem with the CCR is that doesn't support the 'update' option, to get the latest sources.All my packages are updateable and downloadable via ccr SVN (https://svn.code.sf.net/p/lazarus-ccr/svn (https://svn.code.sf.net/p/lazarus-ccr/svn)) and also zips maintained at SourceForge that OPM currently uses. I also try to keep the associated Wiki pages up to date. I like Sourceforge and SVN.
Why you (Lazarus mantainers?) don't create a GitHub organization and create a separate repository for each package, so all benefit from it: getting the latest with the Online Package Manager is a download of the master.zip
Edit: I mean only for those in active development, else it has no sense at all.
The problem with the CCR is that doesn't support the 'update' option, to get the latest sources.'svn' command can be used to update latest sources of individual packages there.
Why you (Lazarus mantainers?) don't create a GitHub organization and create a separate repository for each package, so all benefit from it: getting the latest with the Online Package Manager is a download of the master.zipI have a gap in my knowledge. Who makes a master.zip file?
The problem with the CCR is that doesn't support the 'update' option, to get the latest sources.I do it all the time. In Windows, using TortoiseSVN: Right-click on local ccr repository, "SVN Update" - that's it.
The problem with the CCR is that doesn't support the 'update' option, to get the latest sources.I do it all the time. In Windows, using TortoiseSVN: Right-click on local ccr repository, "SVN Update" - that's it.
Ideally OPM will eventually use SVN preferentially for downloads and updates. There is a case to be made for only providing packages with an active svn (or git) repository, however I like the fallback option of using a hosted zip for developers that don't use svn or git - but only for selected packages i.e. ones where the developer is actively maintaining it.The problem with the CCR is that doesn't support the 'update' option, to get the latest sources.I do it all the time. In Windows, using TortoiseSVN: Right-click on local ccr repository, "SVN Update" - that's it.
I know wp, I know, I was talking about the update option of this Online package manager that expects a zip file to get the latest sources with it. Else I don't will use it, for example I installed the spktoolbar, then you added some new themes, if I want them with the online package manager I can't, I must use svn (that of course I have and know to update with it) but that's not the point of using the package manager?
'svn' command can be used to update latest sources of individual packages there.
I have a gap in my knowledge. Who makes a master.zip file?
Maintained packages that have releases, the latest release version must be added to the JSON config file manually now.
I am not sure how GetMem planned to automate the process. There must be a way for the package maintainer to pass the version info without changing download URL (and file name).
This is quite important in future. The online package manager maintainer should have as little admin work as possible. Otherwise we will have an obsolete and outdated package repository in future, years from now.
[Edit] ... or maybe it is not too much maintenance to copy a new package and update the config. Don't know.
In any case it requires action from 2 people: the maintainer of a package and the maintainer of the online package manager.
For easier auto-maintainance, there need to be instructions for developers to make their components 'OPM-friendly'. Some kind of standard versions.txt file that OPM can check (on user request) as well as including/updating the json file when committing/uploading newer versions. The instructions should be in the wiki (with a link from OPM)
Ideally OPM will eventually use SVN preferentially for downloads and updates. There is a case to be made for only providing packages with an active svn (or git) repository, however I like the fallback option of using a hosted zip for developers that don't use svn or git - but only for selected packages i.e. ones where the developer is actively maintaining it.Oops, now the idea went upside down.
So if you have any GitHub repository the zip is already available. It contains the latest sources.Ok, the same thing as getting directly using git command.
That's true. a versions.txt pointing:Updating automatically once per month sounds clumsy. Why not weekly or daily then?
- The latest download source of release in zip (an URL)
- The latest version number
- All the other neccessary stuff
So the package manager database will be updated automatically, say one time per month? Of course there's no one testing the quaility of the packages with this way. Is always a responsability of the user what to trust.
Ok, the same thing as getting directly using git command.
Updating automatically once per month sounds clumsy. Why not weekly or daily then?
Actually this works best with external URLs. The maintenance and hosting is moved to the package maintainer then.
I think the process of acknowledging new versions and copying to package repo should be made smoother but maybe not fully automatic.
Yes, of course it requires no git, but is the same.Ok, I forgot that somehow. Subversion / Git must be installed before they can be used.
If you want I can create the organization and all the repositories, then also I can add every mantainer by mail or by username.Moving the whole CCR to GitHub is not something I can decide or want to decide.
It will be called the same, Lazarus CCR but in github, and instead of only a repository, separate repos for each package.
Sometimes, package writers make a demo/example app (source) to go with a package. Could the .json file include a link field pointing to the location of one, if it exists?Usually the demo applications are located in the root directory of the package, namely in: demo/example or sample folder. Currently almost every repository package has a demo subfolder. Would you like to add a link to an external demo zip file?
I find it very helpful when first installing a package, both to test compatibility and to look at the source and gain some tips on using the package. Most of the built-in packages have example code, and it's very helpful
@minesadoradaAhh, I see. I assumed OPM only zipped the package files in order to save space. So, such a link is unnecessary.QuoteSometimes, package writers make a demo/example app (source) to go with a package. Could the .json file include a link field pointing to the location of one, if it exists?Usually the demo applications are located in the root directory of the package, namely in: demo/example or sample folder. Currently almost every repository package has a demo subfolder. Would you like to add a link to an external demo zip file?
I find it very helpful when first installing a package, both to test compatibility and to look at the source and gain some tips on using the package. Most of the built-in packages have example code, and it's very helpful
Actually I'm mantaining it commiting regularly the changes from the original ccr.Manually or do you use some automated tool?
I'm adding the URL (wiki article) and description for each one, that's the only thing missing. Also maybe I need to create or update the wiki articles to point the mirror.Ok. Perhaps we should also make some experiment with the external JSON. Can you add a JSON file along with the zip? The content of the JSON is irrelevant for now.
Manually or do you use some automated tool?
Ok. Perhaps we should also make some experiment with the external JSON. Can you add a JSON file along with the zip? The content of the JSON is irrelevant for now.
Hi GetMem, here is a copy of the lazarus ccr in GitHub, you already are a memberAs I wrote to lainz in a PM, that is a bad idea, a kind of a brain-fart.
https://github.com/lazarusccr
Actually I'm mantaining it commiting regularly the changes from the original ccr.
Juha Manninen is administrator and if is possible or if they want, can add the original authors that can keep updating his repositories. I already created everything, 60 repos.
Great! I will pause the development and update the JSON to point to the new ccr(where needed).Don't change anything yet!
Again please tell me those what don't want to be moved and I will delete them.You should delete them all except if a maintainer explicitly tells you otherwise.
Again, I will keep it up to date if no one moves to GitHub. At least it works as a mirror for the Online Package Manager.No, we don't need a mirror for the Online Package Manager. We just got a nice and fast server for its packages.
I thought this is just a clone like this one: https://github.com/fpc-svn/lazarus-ccrOk, a fully automatic mirror makes sense. Actually there are now multiple such mirrors for FPC and Lazarus projects.
Apparently it's possible to make an automated tool that syncs with the original repository. The development still remains at sourforge. What's wrong with that? All we have to do is separate each package on the github repository.
I got it. I deleted it.Sorry I expressed my opinion so strongly. You deleted the whole lazarusccr organization. Actually it was a good idea for new hosted projects. Only forking everything from another repo was a problem.
Please sorry if I wasted your time (and other users) with this.
Keep the discussion in the package manager from now, and I will do it the same.
@lainz, if you can create an automatic SourceForge CCR mirror update, that would be great. However it must be separated from the projects hosted in GitHub.
Sorry I expressed my opinion so strongly. You deleted the whole lazarusccr organization. Actually it was a good idea for new hosted projects. Only forking everything from another repo was a problem.
I found a script, seems that's for linux?Typically servers are Linux or Unix systems.
https://github.com/dpocock/sync2git
The ccr has been somewhat anarchic up to now, but OPM offers the Lazarus community an opportunity to 'get it right'.No, actually the CCR repository and the new OPM have different purposes.
I suggest we embrace GetMem's initiative to make a long-term solution that benefits users. @lainz and @JuhaMannien are valuable partners.GetMem's initiative is already embraced. The package manager is in Lazarus trunk SVN sources and a server for package files is established.
The issues seem to be versioning and maintenance.Well, it depends very much on a person who fixes bugs, improves code and makes stable releases when the time is right.
Both need standards that don't rely on a maintainer person to continually oversee them.
The eventual solution needs to be attractive to future contributors and users alike.What solution do you propose?
No, actually the CCR repository and the new OPM have different purposes.OPM (if its included in Laz 1.8 ) will lend respectability to the ccr and other packages. Is that a good or wanted thing? Do Lazarus core developers want to field queries about packages they have no control over? If not, who will take responsibility over new additions?
CCR is a code hosting place for developers and active testers, just like other revision control servers are. Changes in source code happen there.
OPM is for end users to easily find, download and install packages. It is similar to CPAN which partly made Perl so popular years ago. (I believe you remember that time.)
An end user can trust that he gets a well tested bug-free production quality package. That's the idea anyway ...
OPM is not tied to CCR anyhow. Code for the packages can be hosted anywhere. CCR is just one of those places.
GetMem's initiative is already embraced. The package manager is in Lazarus trunk SVN sources and a server for package files is established.Embraced by the Lazarus release team? OPM is kind-of pointless if it's 'just another 3rd-party package'. Will it be in the Lazarus 1.8 distribution? (spoiler: I think it should be)
Well, it depends very much on a person who fixes bugs, improves code and makes stable releases when the time is right.No need for the scare-quotes. Standards are necessarily arbitrary and help collaboration. How is that scary? Standards enable testing and validation - and if they are well-designed they can be automated. Standards are a way to invalidate badly-designed packages that are unsupportable.
How exactly will "standards" help with that?
What solution do you propose?I don't pretend to have the brains nor expertise that you guys have. However I'll continue to make suggestions as long as that doesn't irritate you all too much :)
OPM (if its included in Laz 1.8 ) will lend respectability to the ccr and other packages. Is that a good or wanted thing? Do Lazarus core developers want to field queries about packages they have no control over? If not, who will take responsibility over new additions?Lazarus core developers have no part in (most of) the packages in CCR. They are 3rd party packages.
Embraced by the Lazarus release team? OPM is kind-of pointless if it's 'just another 3rd-party package'. Will it be in the Lazarus 1.8 distribution? (spoiler: I think it should be)Yes it will be in the next distribution. It is not a 3rd-party package, it is now in Lazarus trunk. Everything in Lazarus trunk will be in the next major release. The package manager author, GetMem, is now officially a Lazarus developer, meaning that he has commit access and communicates in the developers mailing list.
No need for the scare-quotes. Standards are necessarily arbitrary and help collaboration. How is that scary? Standards enable testing and validation - and if they are well-designed they can be automated. Standards are a way to invalidate badly-designed packages that are unsupportable.I had no intention to insult you. I only wanted to show what is realistic and what is not.
I don't pretend to have the brains nor expertise that you guys have. However I'll continue to make suggestions as long as that doesn't irritate you all too much :)No irritation here. Suggestions are welcome. Even better, patches for the package manager in Lazarus sources are welcome throught Mantis bug tracker!
Writing a package specifically for OPM (Cryptini) taught me a lot about the issues from the developer's POV. As it stands, it's somewhat cumbersome - but I have faith that OPM can be slick, robust, futureproof and simple for all, given the talents of the team.
Now that Luiz has disabled the ccr version of VirtualTreeView which I did not want to bypass by adding comment braces around the very efficient installation stopper lines I decided to go the future way and get myself the "official" VirtualTreeView 4.8 using the OPM. I uninstalled the old VTV version (which was in a folder shared between a variety of Lazarus installations), then installed the current OPM from Lazarus trunk, checked virtualtreeview-4.8.7-R4 in the OPM and clicked Install. Fine. But the recompilation of the IDE stopped because of "The unit registervirtualtreeview exists twice in the unit path of the IDE." - the message lists the paths of the old and new installations. Using "Package" / "Package Links" I removed the old path from the list of known packages - still the same error.Unfortunately I don't have an answer to your question. I repeatedly reinstalled VST over an existing installation, without errors. The compile/install/rebuild process is done by the IDE through the "PackageIntf" interface, OPM only "asks" the IDE to compile the packages and rebuild itself when needed, if the IDE says there is a duplicate path, probably is somewhere. This is the kind of error message I was afraid of when I decided to add VST internally to the package manager.
What to do? Where do I have access to the "unit path of the IDE" so that I could delete the old directory?Deleting or renaming the old VST directory should solve the problem.
Another point - maybe this already has been suggested, excuse me in this case: When clicking "Install" in the OPM there is no way to control the destination folder. With the VTV issue I know that the installation goes into the profile folder. This is fine in most cases, but I could imagine there are users (like myself) who want to put all third-party components into a common folder which is shared between several Lazarus installations. So, I would appreciate if there were a selection box for the destination directory in the OPM Options dialog.Consider it done. I will try to implement it today.
@minesadoradaIt's already in the to do list for a long time, but there is a problem. Where to submit the packages/JSON/contact Info?
In the Create Package dialog, a button 'Submit Package?' - meaning 'Submit Package for consideration for the public Online Repository' (wouldn't fit on a button!)
This would perhaps trigger a stock dialog, where the submitter is asked various questions (incl. contact info), and the info then gets zapped to the OPM maintainer (currently GetMem)
@wpOk. I'm glad it's working.
As for the VirtualTreeView installation, it is working now. The problem was that I still had installed other components which depend on VTV. After uninstalling them the IDE compiles again, and I finally could install the OPM version of VTV.
3. Upload to a FTP serverYou could ask Marc and Vincent if they can start an FTP server in the same machine where http://packages.lazarus-ide.org/ is.
This is my favorite solution. But upload where? We need a public FTP somewhere.
@GetMem: I just uploaded a new zipped release version of CalLite (version 0.3). In addition, I also added a file callite-current-release.zip which is identical to the 0.3 version file. In future releases the most recent file will always be duplicated under this name. Therefore, if you link the OPM to callite-current-release.zip (https://sourceforge.net/projects/lazarus-ccr/files/CalLite/callite-current-release.zip/download), it will always catch the most recent fileSorry but it does not solve anything. Information about the new version is not passed to the package manager.
When I made the external cryptini.zip 'update file' I put 'cryptini.json' in the same server location. (it's also in the zip of course)@GetMem: I just uploaded a new zipped release version of CalLite (version 0.3). In addition, I also added a file callite-current-release.zip which is identical to the 0.3 version file. In future releases the most recent file will always be duplicated under this name. Therefore, if you link the OPM to callite-current-release.zip (https://sourceforge.net/projects/lazarus-ccr/files/CalLite/callite-current-release.zip/download (https://sourceforge.net/projects/lazarus-ccr/files/CalLite/callite-current-release.zip/download)), it will always catch the most recent fileSorry but it does not solve anything. Information about the new version is not passed to the package manager.
When you update to version 0.4, keeping the same callite-current-release.zip file name, the package manager's JSON file still shows version 0.3. It would have to download and extract the zip file to get its real version, but that is too much traffic.
Earlier I (and others, too) suggested an external JSON file for the version etc. info.
It should be supported to move admin work from GetMem to maintainers of individual packages.
@wpImplemented in r.53424
So, I would appreciate if there were a selection box for the destination directory in the OPM Options dialog.
You could ask Marc and Vincent if they can start an FTP server in the same machine where http://packages.lazarus-ide.org/ is.Ok. I will send a mail to Marc.
The disk space could be limited to prevent huge files uploaded either by accident or intentionally.
Earlier I (and others, too) suggested an external JSON file for the version etc. info.Yes, but the external json idea is not fully implemented + I always thought that the packages from the main repository will be manually added/updated for security reasons. The main repository will contain the most 25 popular packages(or whatever number you find appropriate). If not the whole central repository is pointless. Without a central repository all we need is a master json(make it a txt), that contains the links to the developer's JSON.
It should be supported to move admin work from GetMem to maintainers of individual packages.
@minesadoradaThat JSON is concatenated to the main one from the central repository. It was designed for me, it's not the "external json" that @Juha and @lainz talks about.
When I made the external cryptini.zip 'update file' I put 'cryptini.json' in the same server location. (it's also in the zip of course)
Yes, but the external json idea is not fully implemented...
Where I must download the package manager from now, it is still beign updated on github or I must switch for the lazarus components one? I want to create the json with the latest of course.The master is in Lazarus sources now. It is best the download from there (together with the whole Lazarus trunk maybe).
Where I must download the package manager from now, it is still beign updated on github or I must switch for the lazarus components one? I want to create the json with the latest of course.The master is in Lazarus sources now. It is best the download from there (together with the whole Lazarus trunk maybe).
I have updated the wiki page, too.
@lainzWhile testing the package manager, I installed bgrabitmap/bgracontrols/bgracontrolsfx several times today. It works fine. I also have FPC 3.0.0 + Lazarus trunk. So the answer is yes.
I've downloaded it with Fpcupdeluxe with also trunk of fpc, but bgrabitmap doesn't compile, seems that they're working in changes of assembler and that code is not working in the package.So I need to download FPC 3.0 + lazarus trunk. It will work? I need bgrabitmap for my projects and packages so is the only thing I can do.
You downloaded from sourceforge that is not updated anymore :)Thanks.
Download from here
http://svn.freepascal.org/svn/lazarus/trunk
Download New version from above link
Went to install package and get error
opkman_installer.pas(166,40) Error: identifier idents no member "DoCompilePackage"
in line
function TPackageInstaller.CompilePackage(const AIDEPackage: TIDEPackage; APackageFile: TPackageFile): Integer; begin Result := -1; {$if declared(lcl_version)} {$if (lcl_major >= 1) and (lcl_minor >= 7)} //DoCompilePackage function is only available with Laz 1.7 + DoOnPackageInstallProgress(imCompilePackage, APackageFile); Result := PackageEditingInterface.DoCompilePackage(AIDEPackage, [pcfCleanCompile, pcfDoNotSaveEditorFiles], False); <--------- HERE {$endif} {$endif} end;
@minesadoradaKeep with it @Getmem! I am relying on the team's brains and expertise :)
About the fpc 3.1.1 bug: It's weird that ">=" is not supported. I applied your suggestion in r.53428 since logically it's the same as the old one. Thanks!
About the folder page: There is a default value for each folder, just press the "Restore Defaults" button, or delete the config file. You need to do this once, since I recently changed the config file structure.
About the update feature: The "external json" seems more easier to implement. I believe I found a solution, we can keep the central repository and update the packages from external json. I need 1-2 days to implement the feature.
@wpThe packages in the main repository are stored as a zip file(to minimize server load), the OPM first downloads the zip to the "Archive" directory, then unzip it to the "Local Repository" , from here the packages are installed into the IDE. The same is true for zip files downloaded from the package maintainer site, but instead of the "Archive" it's downloaded to the "Update" folder.
I do understand the Local Repository folder, but what are the Archive and Update directories for?
About the update feature: The "external json" seems more easier to implement. I believe I found a solution, we can keep the central repository and update the packages from external json. I need 1-2 days to implement the feature.
Or even better along with the zip, the maintainer can save the actual version of the package in the first line of a text file(4.7.9.0 for example). When the users press the update button, the OPM reads then displays the version. After a confirmation dialog, the zip is downloaded or the update is canceled. What is wrong with this solution? We don't have to go through each server just to get a version info. The users are only interested in a few preferred package. I add once the package to the main repository, the maintainers update the txt file. Easy for everyone.
Seems the best, so we must (at least in my case) only update a text file.Exactly. This will be true for everyone, not just you.
The url to the text file will be in the generated json?Yes it's already generated for the zip. The txt should be the same name, in your case "master".
@minesadoradaAny comments on mu post#285 as a viable system? It would have picked up my update without you having to do anything.
For now the OPM only shows the version available in the main repository. Currently we try to figure it out, what would be the best approach for updates located at the developers site(see my previous post #295).
Hi Getmem,With an extra layer:
Just curious how the updater will look and how hard it will be navigate when 100's of packages get added?
Would a collapseable tree structure be needed; where the primary list is category; this may also make navigation easier and also possibly adding in a submitters package description as the displayed name.
ie
Graphics Libraries
BGRABitmap ( Cross platform graphics and Image Manipulations Routines, Including GL)
Visual Controls
BGRAControls (Requires BGRABitmap, Blah Blah Blah)
Eye Candy (Track Bars, Buttons etc)
ueControls (Requires BGRABITMAP, LED, visual knobs blah blah blah)
Networking Libraries
Synapse (cross platform routines for email ftp etc.....)
@minesadorada
For now the OPM only shows the version available in the main repository. Currently we try to figure it out, what would be the best approach for updates located at the developers site(see my previous post #295).
With an extra layer:
DesignTime and Runtime
Graphics Libraries
BGRABitmap ( Cross platform graphics and Image Manipulations Routines, Including GL)
Visual Controls
BGRAControls (Requires BGRABitmap, Blah Blah Blah)
Eye Candy (Track Bars, Buttons etc)
ueControls (Requires BGRABITMAP, LED, visual knobs blah blah blah)
Networking Libraries
IPControls
Runtime Only
Networking Libraries
Synapse (cross platform routines for email ftp etc.....)
Graphics
BGRA runtime
...etc.
For now the OPM only shows the version available in the main repository. Currently we try to figure it out, what would be the best approach for updates located at the developers site(see my previous post #295).It will not work! Let's dump it. We now try to mix many ideas and create a half-baked hybrid which is not good for anyone.
@minesadoradaSurely easily solved with ftp permissions, whereby each developer only has write access to their own area? Only needs to be set up once, then it's self-maintaining.
Yes I saw your post, it's a good idea with one major flaw: somebody with malicious intent can overwrite the whole repository in ten minutes.
Quote@wpThe packages in the main repository are stored as a zip file(to minimize server load), the OPM first downloads the zip to the "Archive" directory, then unzip it to the "Local Repository" , from here the packages are installed into the IDE. The same is true for zip files downloaded from the package maintainer site, but instead of the "Archive" it's downloaded to the "Update" folder.
I do understand the Local Repository folder, but what are the Archive and Update directories for?
I choose this multiple folder solution to keep the "Local repository" clean.
OPM repository.
External repository with an external URL.
Development version got directly from a revision control system (SVN, Git, automatic master.zip, whatever).
Well, the first works, so we only need:Why a website? It would require server side SW and is completely useless for this task.
- the automatic generation of the main json
- a submission website for developers
The second I don't know.It may not be needed if number one works well.
The third already works for some packages. Only svn/git is missing.I think you misunderstood my idea. Now the update may work but it is kind of a hack and a hybrid. A master package is in OPM server but then it is not used, the real package is updated from somewhere else.
...or the OPM client could send the generated package to the server with a button click.
My idea is that a package could be defined in OPM configuration to be only a development version copied directly from revision control system.
That is possible using svn, the same I see in Fpcupdeluxe, it makes a fpc and lazarus folder and keeps them updated.Yes.
Also works with GitHub, since GitHub supports getting the sources with svn tools too.With GitHub we don't need any extra tools because it generates master.zip files automatically. That's why you wanted to move everything to GitHub, remember? :)
With GitHub we don't need any extra tools because it generates master.zip files automatically. That's why you wanted to move everything to GitHub, remember? :)
Yes, but if you say that it will get a repository, I think is best instead of getting the master.zip, is less time downloading in each update.Ok yes, true.
@wpA package lifecycle has five stages: Repository-->Downloaded-->Extracted(Local repository)-->Installed(Up To Date) the fifth one is the Error stage, assigned when one of the steps fails. In the screenshot you can see various packages in different stages.
Sorry to overflow you with suggestions. But this one came to my mind when reading your response: What about a checkbox "Delete downloaded zip files after installation/update"? I think the downloaded zip files are not needed any more for anything else, aren't they?
Any chance you could add the download link into your signature; it would make locating this package much easier.A download link for the online package manager. Is it necessary? It is now part of Lazarus sources and everybody knows how to get them. (?)
$ svn co http://svn.freepascal.org/svn/lazarus/trunk/components/onlinepackagemanager OPM
The old repository should be clearly marked as outdated, for example by adding a source line "This is outdated source" that prevents compilation.@josh
The package manager is in Lazarus trunk now.
@Juha
I did synchronized the github version until now, but I will drop the support.
PS: Marked as outdated on github
please don't drop the github support.You don't need to checkout the whole Lazarus trunk as I tried to show earlier.
not everyone uses Lazarus trunk.
@Xor-el
Ok. I will synchronize the github repository, basically it will be a clone of ($LazarusDir)/components/onlinepackagemanager.
I added to the readme.txt that the main development has moved to: http://svn.freepascal.org/svn/lazarus/trunk/components/onlinepackagemanager
See: https://github.com/getmem/LazOpkMan
opkman_installer.pas(166,40) Error: identifier idents no member "DoCompilePackage"
{$if (lcl_major > 0) and (lcl_minor > 6)}to
{$if (lcl_major > 0) and (lcl_minor > 7)}
Just downloaded the latest trunk version of Online Package Manager but when I try to install the package in Lazarus 1.7 (FPC 3.1.1) I get the following error:When using trunk the minimum version is the latest trunk.Quoteopkman_installer.pas(166,40) Error: identifier idents no member "DoCompilePackage"
Any ideas how to solve this? Is there a minimum trunk version of Lazarus I need?
Hi JanRoza,So that only becomes TRUE when Lazarus is at V1.8. How is that testable?
You need Lazarus trunk r53263+ or change the following line(opkman_installer.pas(163) from:Quote{$if (lcl_major > 0) and (lcl_minor > 6)}toQuote{$if (lcl_major > 0) and (lcl_minor > 7)}
So that only becomes TRUE when Lazarus is at V1.8. How is that testable?See, more confusion...
@JuhaManninen: No need to immediately call met stupid. :-[Actually I wrote: "you are doing something stupid". Clearly you were misguided by the confusing OPM mirror situation. Even clever people can be misguided by it. :)
I indeed had an older trunk and looking at the source of the offending opk module it looked as if lazarus 1.7 was sufficient.
Just to stop people calling me stupid :D I made a second Lazarus installation with the latest trunk and in this installation everything seems to be working perfectly.Why a second Lazarus installation? Why not just "svn up"?
Just downloaded the latest trunk version of Online Package Manager but when I try to install the package in Lazarus 1.7 (FPC 3.1.1) I get the following error:When using trunk the minimum version is the latest trunk.Quoteopkman_installer.pas(166,40) Error: identifier idents no member "DoCompilePackage"
Any ideas how to solve this? Is there a minimum trunk version of Lazarus I need?
According to your error message you are doing something stupid now. I think you download OPM from the GitHub mirror and try to install it in an old Lazarus trunk. Am I right?
Hey, OPM is already part of Lazarus trunk!
Still synchronizing the old repository is counter-productive. It only creates confusion (as happened now).
I still think the old repo should be either removed or deprecated.
There are already at least 2 mirrors for the code in GItHub. Explicitly synchronizing a 3rd one makes no sense!
I honestly don't understand why Xor-el suggested it and why GetMem agreed.
I understand your worries, but not everybody wants to download the whole repo just to get a few files.This will get you only the OPM sources:
$ svn co http://svn.freepascal.org/svn/lazarus/trunk/components/onlinepackagemanager OPM
Actually I already wrote it earlier. Later update it with:$ svn up
just like with any repository.Updated CryptINI to V0.1.0. Demo (included) updated to V0.1.2Done. Please test it.
https://sourceforge.net/projects/lazautoupdate/files/otherpackages/cryptini.zip
BTW, when you get to do SVN links in OPM:I don't know the exact date. I still have to implement:
svn checkout svn://svn.code.sf.net/p/cryptini/code/ cryptini-code
or: https://sourceforge.net/p/cryptini/code/HEAD/tree/trunk/latest_stable
- update from external zip(this will be ready soon)I think the whole idea is fishy. Which one is the master file, OPM repo or external? Very confusing. Please see my earlier writing about the same thing.
- voting systemThe server side requires more than patches. It must be deployed to a server machine. I think you should ask about it from Marc and Vincent in advance.
Patches are always welcome!
Done. Please test it.Looking good. Version shows as 0.1.0. Thanks.
I think the whole idea is fishy. Which one is the master file, local or external? Very confusing. Please see my earlier writing about the same thing.I agree with you about the system 'as is' but let's wait and see what GetMem has in mind for package maintainers. There are quite a few options available.
There should be one place for the master file with no ambiguity.
It would be nice for package maintainers if there were a simple 'external json editor' app. IMHO it would make the process of deploying an external update zip + json a lot easier and safer. It doesn't need to be fancy - just a bunch of TLabel + TEdits and 'create', 'load' and 'save as' buttons. A fancier version would check the given URLs were valid before saving.The JSON will be simple, it can be edited manually. Something like this:
I know the 'create package' has similar functionality for new packages, but it's not really suitable for maintenance updates (as I have found)Well I'm using it and apparently works well since the whole central repository was built with it + one more tool. Still room for improvements, a lot of it. I agree!
Let's say as a user, I download and update a component from OPM in my Lazarus 1.8, but...This is why I wanted to avoid external updates, since it's allowed, there is no such things as security, especially under windows and I can prove it. You can convert an exe to a txt file(it will pass any virus detection), when needed the malicious package converts it back to byte array then injects it directly to a process memory, without saving the exe file to disk. The last step(memory injection) can be detected by some of the AV's out there, but most of the time will pass. Anyway we don't have to be paranoid...
..it turns out that the external update zip wasn't hosted on a secure version control server (GitHub, SourceForge etc) and a malaicious person has replaced the update zip with a malware version (without the maintainer's knowledge) Components once installed, have a lot of power. An 'Execute' method (or any method) could do some bad stuff, and quite invisibly too. Few ordinary component users (like me) check all the source code before using an updated component, particularly if it appears 'built-in' to Lazarus (as OPM's packages will appear)
My job is to add the initial package to the central repository + the link to the external json. After that it's up to the user and package maintainer. Still consider it fishy? If yes please explain why.The fishy part is that you add an initial package to central repo but it will not be used after the package author decides to update for the first time.
The fishy part is that you add an initial package to central repo but it will not be used after the package author decides to update for the first time.Because at least half of the packages in the main repository don't have a maintainer, there is no external URL. Another reason: all the packages inside the main repository are safe to use, the update feature is optional.
Then comes a question: why to add the initial version at all? Why not just provide an URL for the external place? Then it would be a purely external package source, not a half-baked mixture of initial OPM repo package + the real package from external source.
Another option is to make updating the repo packages so easy that loading from an external URL is not needed.Then the whole update feature could be dumped.How? You have to provide credentials for that. Without username/password someone with malicious intent will overwrite the whole repo in five minutes. A login system can be done, but it's not a one man job.
So, the FTP must be writable without a password or with a common password which is given to anybody who asks.Exactly, then bad things start to happen immediately.
minesadorada writes about security which is also an important issue.Well second-best is still better then nothing. How about a Sourceforge OPM Components repository? After all, the original source for GetMem was the SourceForge CCR repository.
However the idea of FTP user accounts for every package maintainer has technical difficulties. It requires a server admin (Marc, Vincent or anybody) manage those accounts. We want this to be easy for any new package author, a new step of bureaucracy for every new author is not good. I doubt the admins would accept the whole process idea. So, the FTP must be writable without a password or with a common password which is given to anybody who asks.
@minesadoradaOnce you have the format settled I'm willing to give it a go. Perhaps I'll learn about JSON on the way :) I guess http://wiki.lazarus.freepascal.org/fcl-json is the page to start with.QuoteIt would be nice for package maintainers if there were a simple 'external json editor' app. IMHO it would make the process of deploying an external update zip + json a lot easier and safer. It doesn't need to be fancy - just a bunch of TLabel + TEdits and 'create', 'load' and 'save as' buttons. A fancier version would check the given URLs were valid before saving.The JSON will be simple, it can be edited manually. Something like this:I'm not against a GUI, but somebody has to do it.
{ "Package" : { "Name" : "whatever.zip" "ForceUpdate" : False, "DownloadURL" : "https:\\....", }, "PackageFiles" : [ { "Name" : "aaaa.lpk", "Version" : "1.2.5.0" }, { "Name" : "bbbb.lpk", "Version" : "0.0.5.0" } ] }
How? You have to provide credentials for that. Without username/password someone with malicious intent will overwrite the whole repo in five minutes. A login system can be done, but it's not a one man job.I had the FTP server in mind + a manual check of new packages aided by some admin tools maybe. Yes I know this solution has issues.
QuoteIt would be nice for package maintainers if there were a simple 'external json editor' app. IMHO it would make the process of deploying an external update zip + json a lot easier and safer. It doesn't need to be fancy - just a bunch of TLabel + TEdits and 'create', 'load' and 'save as' buttons. A fancier version would check the given URLs were valid before saving.The JSON will be simple, it can be edited manually. Something like this:I'm not against a GUI, but somebody has to do it.
{ "Package" : { "Name" : "whatever.zip" "ForceUpdate" : False, "DownloadURL" : "https:\\....", }, "PackageFiles" : [ { "Name" : "aaaa.lpk", "Version" : "1.2.5.0" }, { "Name" : "bbbb.lpk", "Version" : "0.0.5.0" } ] }
Thanks @lainz - nice neat code!
It does not output a pretty print version, but it works.
Thanks @lainz - nice neat code!
It does not output a pretty print version, but it works.
Useable as is, but I'll mess around with the GUI if that's OK with you.
Thanks. Play with it, but please keep it working for High DPI screens when you change it! (http://wiki.lazarus.freepascal.org/High_DPI (http://wiki.lazarus.freepascal.org/High_DPI))No worries - just tweaking captions and adding data checks to make it more idiot-proof for folk like me :)
Also change the title to something like OPM External JSON Editor, the name I set is really bad.I've just been tidying up the window-dressing, project options and other stuff. I've attached what I have so far, but I'll have another go tomorrow (it's late here)
BTW, what about scaleability? Is it practical for OPM to offer 200 packages for example? If not - what would be a practical maximum?I tested with 500+ packages(reused the same ones, multiple times). Works well.
Is the DownloadURL fully formed? i.e. does the DownloadURL field contain the full zipfile name?Yes it should contain the full zipfile name.
It does not output a pretty print version, but it works.
You're from Spain? From your mail address I guess..Thanks. The \locale folder wasn't in the zip - could you attach it so we can keep synchronised please?
Here in south america is late too.
Attached a new version:
- corrected executable file name: now it generates only a single .po file for all platforms
- corrected memory leak
- corrected LazFileUtils position to use their functions instead of FileUtils ones
- translated into spanish
I like the new error messages, these are good to upload the json with no errors.here's something I'd like you to look at:
I need to read the code, but it works as far as I tested.
Here it is the updated translation.Bugs:
I see some bugs:
- Remove: it removes the last item not the selected one
- Change language: it always display 'es' as language changed no matter what language I select (so no matter what I click I can't get back to english, even with a restart)
1. I haven't changed the original remove code. I'll have a look at it.
2a. Does your cfg file have an entry 'Language=en'? Does your /locale folder have jsoneditor.en.po (renamed from jsoneditor.po)?
Are you OK with GPL license? Your (excellent) code is the core of the app, so you call the license.
Here it is the updated translation.1. Simpler to change the hint text :)
I see some bugs:
- Remove: it removes the last item not the selected one
- Change language: it always display 'es' as language changed no matter what language I select (so no matter what I click I can't get back to english, even with a restart)
The code can be used directly from FPC libs only when it is included in a version that is the minimum requirement for Lazarus. So this is a long term plan.
If OPM will be available in the next lazarus, also depends if the new FPC for that date is also released, so we must "stay tuned" ::)Everything in Lazarus trunk, including OPM, will be included in next major version release.
The forks are maybe from FPC 3.0. (GetMem, confirm?)Yes.
There is another fork, VirtualTreeView.PS: I wouldn't worry about VirtualTreeView, according to @Luiz we can add any version we like. Once it's added to Lazarus sources, I can remove my fork and link OPM to the one in the Lazarus trunk(10 min. of work).
Its master version may be added and maintained in Lazarus sources later. Now there are many forks and versions, the situation is messy.
... "zipper.pp"", but please be careful not to reintroduce the overflow bug, since it wasn't fixed in FPC trunk.Yes, this one:
I am not sure if the git repository of the OPM still exists. If yes I assume that it is a mirror of the version included in Laz trunk.I think it is now disabled or deprecated. It already created confusion as you can see earlier in this thread.
...Sounds good.
With these modifications, the current version of OPM can be compiled with Laz 1.6
Hi, here it is the updated spanish translation for the external json editor.Thanks for the translation. I have access to the SVN ccr repository (which I use for other components), so if I commit to there, the GitHub will mirror it OK?
Maybe we must upload it in a revision control? I have both accounts in sourceforge and github, we have also the new Lazarus CCR in GitHub, we can upload the first code in there.
Hi, here it is the updated spanish translation for the external json editor.Thanks for the translation. I have access to the SVN ccr repository (which I use for other components), so if I commit to there, the GitHub will mirror it OK?
Maybe we must upload it in a revision control? I have both accounts in sourceforge and github, we have also the new Lazarus CCR in GitHub, we can upload the first code in there.
if you add any fields, can you specify any relevant error checks with them please?You don't have to do any further error checks, it will work fine with the code suggested by @lainz, however please rename DownloadURL to DownloadZipURL(or something similar). I already have a DownloadURL, which now points to the "external JSON". To prevent confusion we should give a different, unique name.
@minesadoradaA global rename from DownloadURL -> DownloadZipURL seemed to do the trick.Quoteif you add any fields, can you specify any relevant error checks with them please?You don't have to do any further error checks, it will work fine with the code suggested by @lainz, however please rename DownloadURL to DownloadZipURL(or something similar). I already have a DownloadURL, which now points to the "external JSON". To prevent confusion we should give a different, unique name.
PS: Today/tomorrow the update feature will be ready.
PS1: I also renamed a few class since I already have similar names. Please download the zip, and replace your main form. Other then a few names is the same unit.
After a quick look,I see only 2 changes - can you confirm?TPackageFiles --> TUpdatePackageFiles
Have you got write access to the ccr svn? I missed your attached zip because I assumed dev was now on lock/checkouts from the svn.No.
It seems to come from this recursive procedure within Form.Create (which I'd like to keep)I did not have time to check it, since I'm busy with OPM. I wil take a look later.
Memory leaks were weird. I had to manually free 2 form members (a TiniFile and TStringList) in the QueryClose method to fix them.It is not weird as Pascal has no garbage collection.
You don't have to comment out that line, only change a few names...I attached the whole project fixed.Thanks for that @GetMem
Hold on.Memory leaks were weird. I had to manually free 2 form members (a TiniFile and TStringList) in the QueryClose method to fix them.It is not weird as Pascal has no garbage collection.
FormDestroy may be more logical place to free them. It makes kind of a pair with FormCreate.
@lainzNo. You just simply zip your source. It can be the master.zip generated by github or your next stable version zipped. It's up you.
A question, the zip must be generated with the OPM or it can be any zip (like master.zip from github)?
The zip must contain inside the normal .json or not?No again. You generate the json with the tool created by you and minesadorada and send me the link. That's it. In fact to make it easier OPM will generate the initial JSON(it's not yet imlemented), this can be later edited by your tool.
Thanks. Well I think once you made the first external json you don't need the tool if you don't change the url or the zip names / package names. Just changing the version information and nothing more.I can't understand the lack of automation here.
If I understand it well, the external json replaces the external zip that was working before. Now it's better because you actually know the new version you will try to download and install.That makes no sense. The external json is trivial in size and quick to download and check. 41 (currently) update json files are no great burden. They point to the location of the external update zipfile, which could be of considerable size and only downloaded on user request. Currently AFAIK the 'master' json is downloaded each time OPM shows,
GetMem already said that is not only the external json because downloading all the json takes more time than downloading the main json from the OPM server.
About updating the main server, that's not resolved yet, so we must wait until they decide how it will be managed. Currently you're right, GetMem is the only updating the packages. But when the package already contains an extenal json you can update it by yourself how many times you want.
Well he tested it and says that takes time (I've readed it somewhere here in this thread If I remember it well), so there is a kind of problem here, real one, or the library for downloading is not as fast, or something else is happening :)Let me see if I understand it correctly:
I like your idea, but I'm not the one that will do it real or takes the decision of making it real. And positions against the automated stuff are always on.I totally agree. "The man who pays the piper calls the tune" :)
On the other hand, if I don't mantain the package anymore and the download get's broken, the repository will not have that component anymore.With the system as proposed: the auto-checking would automatically remove the component from the master tree if the URL went bad. That's correct behavior for unmaintainable/obselete components, surely? That's why many components from the ccr were not included in the initial master list AFAIK.
So is not only merging the main json, but the zip files. This was talked some days or weeks ago in this thread, and there is no consent about how to manage this.Why merge the zip files on the OPM server by default? The initial (vetted) zips can be canonical. The user chooses to update their local repository or not (with a suitable warning). The 'Available' column reflects the 'available update version'. That makes sense for a user. I thought that was the point of the 'force update' option in the update json - where the canonical version is somehow faulty or out-of date and has to be replaced on the server - not default behaviour.
I can't understand the lack of automation here.No. You completely misunderstood the update system, but that's ok since nobody knew how it should work or what would be the optimal solution.
If GetMem is unavailable, currently the update system fails. Am I right there?
Why can't OPM regularly poll the http://<update_url>/<update_componentname>.json list automatically and look for version updates? This could even be in a background thread when OPM loads (as an user-chosen option) All that's needed is a standardised json filename for updates, and json packager provides that as a default.A pull in every 6 sec is ok? Currently is 6000 ms. :D Though I plan to extend a little bit, say 1 minute to minimize traffic load.
Well he tested it and says that takes time (I've readed it somewhere here in this thread If I remember it well), so there is a kind of problem here, real one, or the library for downloading is not as fast, or something else is happening :)True. I said that once, but the problem is now solved. I save the last update value, then from time to time OPM pull the json. For example after you update the external JSON, the user won't see the changes instantaneously, it will take 1-2 min(max). I believe this is more then ok. The pull is done in a background thread, so it won't interfere with the GUI.
@minesadoradaIt's useful when you change something in the source, but don't want to increase the version number yet. This is specially true for trunk, a lot of commits are done before the version number is modified. By setting ForceUpdate to true, you ensure that the user gets the latest updates, even if the version number stays the same.
One question: What do you envision are the consequences of checking the 'force update' option in the update_json file? What are the guidelines?
Now I'm really puzzled.Quote@minesadoradaIt's useful when you change something in the source, but don't want to increase the version number yet. This is specially true for trunk, a lot of commits are done before the version number is modified. By setting ForceUpdate to true, you ensure that the user gets the latest updates, even if the version number stays the same.
One question: What do you envision are the consequences of checking the 'force update' option in the update_json file? What are the guidelines?
So, If I set ForceUpdate=TRUE what does the user see?
According to your scenario, I can make a minor update (with no version number increase) and that can force the user to update. I can make a major update, with many new features and a new version number, but no forceupdate=true, and the user can ignore it.
When should a package maintainer set forceupdate=true, and why?
For example you download now the latest zip right? Then force update is still true. So the dialog keeps saying that there's a new version available?Yes. I believe this is specially useful for your master.zip. You don't have to change the version number, just leave ForceUpdate(ForceNotify) to true. Perhaps we can combine with a date? So the OPM will only notify the user when the date also changes?
Well can be a date time.Sure, no problem. Datetime is perfectly fine. Let's wait and see what other people has to say about this. The collective brain power is always better the the individual one. 8-)
P.S. Just updated OPM from trunk, and tried updating OPM to 'V4.8.7.4' but no luck (see attached). Work-in-progress, so nothing to worry about?It's not ready yet...
2nd screenshot was after clicking OK. It froze at that point.
Perhaps ForceUpdate is the wrong word. I mean you cannot force anything, in the end the user decides if he/she want to update or not. However if you want to notify the user that a new version is available, without actually increasing the version number, you should set ForceUpdate to true. From the users point of view there is no difference between ForceUpdate = true(same version number) or an increased version number, they will see the same "alert" message, namely that a new version is available for download/install. Force update is for the package maintainers, I explained in my previous post why I consider it useful. If you don't like the idea, no problem, we can come up with something better.Now you've explained it, I think it's a good feature as it is. The hint text on the GUI editor is "'This option should only be used for crucial updates or bug-fixed packages. Are you OK with that?'"
However we need a system that makes possible to trigger an update message, without increasing the version number. I' m open to suggestions.
But it stoppes with an information messageboxPlease take the latest trunk version again(I just commited a few changes). After you reinstall the package, go to the OPM Options, then press the "Restore Defaults" button. Your config file points to an older, obsolete repository(hence the error).
furthermore an access violation occured when closing the OPM window
@minesadoradaOK. Done.
You should rename ForceUpdate to ForceNotify both in GUI and in the JSON class(TUpdatePackageData), ForceNotify is more suggestive. You can also send me the link to a json(one of your packages), so we can run a few test.
Hi CharlyTango,
Thanks for testing OPM.QuoteBut it stoppes with an information messageboxPlease take the latest trunk version again(I just commited a few changes). After you reinstall the package, go to the OPM Options, then press the "Restore Defaults" button. Your config file points to an older, obsolete repository(hence the error).
furthermore an access violation occured when closing the OPM window
Using OPM shows a "NEW" mark at onlinepackagemanager indicates that version 1.0.1.0 would be available.Unfortunately the update feature is not yet implemented(we are working on it), for now please ignore it. However you can test all the other functionality.
Installing the new version via OPM failed -- it seems that an old version is downloaded and it does not work.
The version directly from the trunk is ok.
first impression of OPM: Looks fine, but what i miss is a description of the package because i don't know what the seldom used packages do.See screenshot1, however not all package has a detailed description, depends on the package maintainer.
Filtering of installed packages and their update status would be nice too.You can find a lot of filters in the top of the form, I can add more if necessary. See screenshot2
Therefore OPM should have the best support -- Did you thought about a category in bugs.freepascal.org ?Please report at bugs.freepascal.org(category Lazarus/Packages) or here.
Good JobThanks.
@lainz
No worries! This is just for testing purposes, still a long way to go, you can tell @circular later. I will add the link as soon as possible.
PS: Done. I added the ForceNotify version just to trigger a message. Please update to the latest trunk.
@ minesadoradaSorry @GetMem - I've been out playing golf this afternoon in the Tenerife sunshine. (par+2 - yay!) I'll catch up tomorrow as I'm currently celebrating with a very large Scotch :)
Please take the latest version. I'm afraid it's buggy, but at least you can run a few tests.
Self.AutoAdjustLayout(lapAutoAdjustForDPI, 96, Screen.PixelsPerInch, Self.Width, ScaleX(Self.Width, 96), False);
@minesadorada@lainz: On my Laz 1.7 Rev 52081M I don't see a Scaled property in the OI - only a PixelsPerInch property
Hi, when you have time remove the AutoAdjustLayout from OnCreate and just check the option Scaled in the object inspector for the form, now is working really well and is the best from now using Lazarus 1.7 to get HighDPI working well.
re trunk: I'm reluctant to mess with my cross-compiling dev environment, unless you can suggest a way to upgrade to trunk in a simple way. (not fpcup) I have the latest source of trunk - can it be patched in by simply merging with my existing setup somehow?Since you're under windows, just download Tortoise SVN. To upgrade to trunk just press the "Update" button. Initially you have to do a SVN checkout though. This is why version control was introduced in the first place.
@GetMem: Just installed latest OPM and the updating goes flawlessly. Thank you!I'm glad it works. I need to fix a few bugs though.
1. CryptINI updated OK√
2. I tried to install bgracontrols. It flagged the dependency OK√ and started the install, but compilation errored out, and OPM correctly offered to cancel OK√
I find that what is missing in OPM is an 'UnInstall' button for (an) installed package(s). I know the IDE can do this, but OPM would look better for it.First of all there is no interface implemented yet for uninstalling packages, somebody has to do it first. Secondly OPM was not meant to replace all the functionality of "Install/Uninstall packages" dialog, just a quick way to (re)install your favorite packages.
It would be nice if, in the uncollapsed treeview, the 'Installed' column indicated 'Installed' (or not) for single packages. (some other text for partly-installed multi-packages like bgraBitmap) It can be a bit of a fiddle expanding/collapsing the treeview all the time for simple infoOk. This is a good idea. I will implement it today.
Since you're under windows, just download Tortoise SVN. To upgrade to trunk just press the "Update" button. Initially you have to do a SVN checkout though. This is why version control was introduced in the first place.A quick follow-up (I have Tortoise svn)
1. What is the best svn repository URL for trunk?http://svn.freepascal.org/svn/lazarus/trunk
Sure, I can translate that.@lainz Thanks a million!
Edit: here it is. An awesome feature of Poedit is that it remembers the translations you did before, so I was just clicking on the already translated stuff I did before and it get's done in a few minutes. Of course there was new translations but these was easy too.
There is something not translated automatically and these are the headers of the TStringGrid. "lpk filename" and "version (n.n.n.n)". You maybe want to assign the translations by code.
@lainzI don't think is possible since OPM depends on VirtualStringTree and third party components are not added to the pre-installed packages.
I hope you can talk with the lazarus developers (well, with the others, you are one of them now) and include this package as one of the pre-installed with Lazarus, so with that it will become more visible to all developers that open the package menu in the IDE, and more people will use it.
It would be nice if, in the uncollapsed treeview, the 'Installed' column indicated 'Installed' (or not) for single packages. (some other text for partly-installed multi-packages like bgraBitmap) It can be a bit of a fiddle expanding/collapsing the treeview all the time for simple info2. The update is only visible if the package is installed. I hide it because a direct update, without install, although possible is not recommended. The update may fail if dependencies are not found.
{
"UpdatePackageData" : {
"DownloadURL" : "https://sourceforge.net/projects/lazautoupdate/files/otherpackages/cryptini.zip",
"ForceNotify" : false,
"LastNotifyDate" : 4.2689000000000000E+004, <--add this
"Name" : "cryptini" <--cryptini instead of cryptini.zip
},
"UpdatePackageFiles" : [
{
"Name" : "cryptini.lpk",
"Version" : "0.1.1.0"
}
]
Don't worry, maybe there's another way of making it popularI'm not worried at all. OPM it's just a tool, so nothing to worry about.
Do you have any kind of statistics of the downloads of each package? Or that need to be implemented in the server?I have to ask @Marc. He maintains the server on which the repository is stored.
How does OPM know the order in which packages must be compiled/installed?Recursively checks for dependencies both in central repository and locally installed packages. It will warn you before install if an unresolved dependency is found(see screenshot). The install order is decided up on the dependencies. If you are interested about the details, please check:
Does OPM "know" that runtime packages only have to be compiled, while designtime packages must be installed?Yes. Runtime packages are only compiled, designtime packages compiled, installed then the IDE is rebuild.
I am currently converting some more components of the jvcllaz project in ccr (JVCL components). For easier conversion I'll stick to the package structure of the JVCL Delphi version.This is great! I always wondered why such a good component is not converted to Lazarus? Which version exactly are you converting? The newer one are more focused on XE2+ support.
1. I implemented @minesadorada's request(screenshot)Looks good.
2. The update is only visible if the package is installed. I hide it because a direct update, without install, although possible is not recommended. The update may fail if dependencies are not found.
3. Added Help button which points to OPM wikipage
4. Fixed a few bugs.
We should add the LastNotifyDate(TDateTime) to the JSON + remove name.zip because it's not needed, just the name:I'd like to keep the '.zip' in if possible. In jsoneditor it acts as a redundancy check on the URL - which is an easy field to get wrong. If you think it's important, then I suppose the GUI could insist on the .zip but only store the name part in the json, but this would make it inconsistent for manual editing.Quote{
"UpdatePackageData" : {
"DownloadURL" : "https://sourceforge.net/projects/lazautoupdate/files/otherpackages/cryptini.zip (https://sourceforge.net/projects/lazautoupdate/files/otherpackages/cryptini.zip)",
"ForceNotify" : false,
"LastNotifyDate" : 4.2689000000000000E+004, <--add this
"Name" : "cryptini" <--cryptini instead of cryptini.zip
},
"UpdatePackageFiles" : [
{
"Name" : "cryptini.lpk",
"Version" : "0.1.1.0"
}
]
I'd like to keep the '.zip' in if possible. In jsoneditor it acts as a redundancy check on the URL - which is an easy field to get wrong. If you think it's important, then I suppose the GUI could insist on the .zip but only store the name part in the json, but this would make it inconsistent for manual editing.The *.zip is not used internally by OPM, if it's useful for you then feel free to keep it.
With the LastNotifyDate entry, I have a couple of questions:First of all the "ForceNotify" feature will be rarely used, secondly we need a system that prevents continuous alert messages even when ForceNotify is set to true. Consider this:
1. What if I upload a json with LastNotifyDate set for 10 years from now?
2. With the date in TDateTime format (which it has to be), it becomes difficult and error-prone to manually edit the json file (which some users will do)
I assume what is wanted is really an 'expire-by' date (days). If so, then it's probably better to store the current date (internally) and let the user specify a number of days for the NotifyUpdate to apply. This can be stored as a simple integer field. If OPM can parse the filedate of the json, then it doesn't even need the problematical TDateTime field - only the ExpiryDays one.
Why can't OPM read the FileDate of the downloaded json and use that? Am I missing something?The JSON never "touch" the hard disk, it's loaded directly into a memory stream.
@lainzI like this better. What about a meaningful name? InternalVersion is ok?
Edit: or just a regular int to increase. number of notify: 0, 1, 2, 3, 4, and so on.
I am continuing with the version with which the initial porter started. Fortunately I found this in my archive, it is v 3.33, and I can install it in my Delphi 7 to see how things should work.QuoteI am currently converting some more components of the jvcllaz project in ccr (JVCL components). For easier conversion I'll stick to the package structure of the JVCL Delphi version.This is great! I always wondered why such a good component is not converted to Lazarus? Which version exactly are you converting? The newer one are more focused on XE2+ support.
InternalVersion is ok. The most important thing along with the name is the hint you can give to the package mantainer on what it does, and that is done in the wiki or in the json maker minesadorada keeps updating.So what is the consensus? I can update jsoneditor on Sunday once I know:
The currently ported components work in Windows and Linux.After OPM is finished, I would like to contribute by porting those components to OSX.
Add InternalVersion that holds an arbitrary integer set by the package mantainer. Add a spin edit in the GUI. Is arbitrary, so there's no validation, only it must be an integer. The hint text is 'Increase internal version when you have made changes in the source. It works only combined with ForceNotify.'I found an hour to do this this morning.
The last missing, major feature is the voting system. Some of the reply on this thread suggest, that rating packages would be beneficial. What do you think about this?1 to 5 stars I guess. Sounds good.
My thoughts:
- each package can have from 1 to 5 starts
- a user can vote only once/package(we need a login system for this, it can be used later to directly update the main repository)
- a vote can be later edited/modifiedA good point, a user must be able to change his vote as the package improves or his opinion changes.
- OPM will display an avarage for each package
- does the package install correctly or are there any issues encounteredA comment, together with the rating, should be supported. There a user can explain his reasoning.
- does the package work/compile for specific targets or only for some of them
- is the package well maintained or does it take ages for reported bugs to be fixed
- etc.
The idea behind that, was that anyone can offer his/her package but users are able to provide information about the package so that good well written packages/components have perhaps a better chance to get integrated into ccr or similar (simply because they get noticed)
Remember, a package can be single-platform by definition, for example some MS Office OLE-automation package.Of course. I tried to cover that in my writings but apparently that didn't came across as such :-[
Hi GetMem, I've updated the external json of bgracontrols and bgracontrolsfx with the changes minesadorada made to the editor (InternalVersion).Update CryptINI jsons also updated (including cryptini_force.json, with InternalVersion > 1)
{It make sense that each package has it's own ForceNotify, maybe the package maintainers only wants to update one of them not both.
"UpdatePackageData" : {
"DownloadZipURL" : "",
"Name" : "bgracontrols-master"
},
"UpdatePackageFiles" : [
{
"ForceNotify" : true,
"InternalVersion" : 1,
"Name" : "bgracontrols.lpk",
"Version" : "4.3.1.0"
},
{
"ForceNotify" : true,
"InternalVersion" : 1,
"Name" : "bgrapascalscriptcomponent.lpk",
"Version" : "0.0.0.0"
}
]
}
As part of the update/maintenance mechanism I'd like an extra field to temporarily disable users downloading the component (or better still make it invisible in OPM) Perhaps DisableInOPM=True/False? (default=false)Just rename the JSON temporary, OPM will reset every update data, like there is no update. I tested this a few times, works well.
https:\/\/github.com\/bgrabitmap\/bgracontrols\/archive\/master.zipor like
https://github.com/bgrabitmap/bgracontrols/archive/master.zip
Also I'm not sure if the link must be like
As @Luiz said both are valid. I choosed the second one, because it's more easy to edit with a text editor. Let me check what is wrong.
So you're using only FPHTTPClient for secure downloads? That doesn't need some dll's in the executable folder to work?The main repository is http, so we only need the OpenSSL library for external updates. Under windows I have copied the files into the system32 directory. Under linux/osx everything works fine, probably *.so, *.dylib files are preinstalled.
What a problem, I don't even know wich version is running when I use your tool. That's the called 'dll hell' or something like that :DYeah! :D Good you mentioned though, because I already forget it. Perhaps we should store those dll's on the main repository and download when needed.
Is something like Fpcupdeluxe does, it downloads the dll's and place in them in the right folder.When you install a component, Lazarus must rebuild itself so the folder is always writable(at least it shoud be). I added ssl support in r53631. Yet another directory with the same dll's. :D Perhaps is redundant for us, but for those who don't have any ssl library installed is mandatory, without the dlls OPM would crash on update.
The main problem is that the lazarus folder is not always writable?
Edit: I attach some of the NetBeans Plugins window, something like the OPM.Looks great and gives me some ideas about the interface. For example I check for updates in every 6 sec. It's too often, perhaps once/day is more then enough.
It make sense that each package has it's own ForceNotify, maybe the package maintainers only wants to update one of them not both.NP. I'll get on it.
@minesadorada
Please update your project, if you don't have time I will do it later. Again sorry for the inconvenience. Please also regenerate the json's for all your packages and send me links. Thanks.
As part of the update/maintenance mechanism I'd like an extra field to temporarily disable users downloading the component (or better still make it invisible in OPM) Perhaps DisableInOPM=True/False? (default=false)
Just rename the JSON temporary, OPM will reset every update data, like there is no update. I tested this a few times, works well.That would just affect whether an update is shown. I was talking about temporarily changing the visibility of the component itself in OPM.
NP. I'll get on it.Thank you! :)
That would just affect whether an update is shown. I was talking about temporarily changing the visibility of the component itself in OPM.I can do it(in fact all I have to do is set the node visibility to false) but is confusing for the user. From the users point of view a package appears/disappears randomly, without any explanation. It looks like a bug. Are you sure this is what we want?
It would be an unusual and exceptional circumstance (which I explained in the OP) so the user won't see components appearing/disappearing randomly on a regular basis, or even occasionally. But I do think it's a feature that could be important to a package maintainer for the reasons I gave. If a serious bug is found in an OPM package (or external factors render it obselete) do you think it's a good idea for users to keep downloading it whilst the maintainer fixes it?QuoteThat would just affect whether an update is shown. I was talking about temporarily changing the visibility of the component itself in OPM.I can do it(in fact all I have to do is set the node visibility to false) but is confusing for the user. From the users point of view a package appears/disappears randomly, without any explanation. It looks like a bug. Are you sure this is what we want?
I don't think it's an update feature that would be used often (like ForceNotify), but can we build it into the spec anyway?Ok. Please add it to your project JSON structure, I will add it to OPM:
{I will implement the functionality soon(in worst case tomorrow).
"UpdatePackageData" : {
"DownloadZipURL" : "",
"DisableInOPM" : false,
"Name" : "bgrabitmap-master"
},
"UpdatePackageFiles" : [
{
"ForceNotify" : false,
"InternalVersion" : 1,
"Name" : "bglcontrols.lpk",
"Version" : "1.1.0.0"
},
{
"ForceNotify" : false,
"InternalVersion" : 1,
"Name" : "bgrabitmappack.lpk",
"Version" : "9.2.3.0"
}
]
}
I can do it(in fact all I have to do is set the node visibility to false) but is confusing for the user. From the users point of view a package appears/disappears randomly, without any explanation. It looks like a bug. Are you sure this is what we want?If this is really needed then at least don't hide the package but mark it clearly as disabled by its author.
OK. That suggestion makes sense - as long as the download/install functionality is disabled.I can do it(in fact all I have to do is set the node visibility to false) but is confusing for the user. From the users point of view a package appears/disappears randomly, without any explanation. It looks like a bug. Are you sure this is what we want?If this is really needed then at least don't hide the package but mark it clearly as disabled by its author.
Make its text font grey or use other colors to make it distinctive. Otherwise we will get bug reports and for a reason as it would be a confusing feature.
If this is really needed then at least don't hide the package but mark it clearly as disabled by its author.Good idea! I must add the info to the wiki. OPM now has a help button, when pressed the wiki page opens.
Make its text font grey or use other colors to make it distinctive. Otherwise we will get bug reports and for a reason as it would be a confusing feature.
@minesadoradaI'm not sure if you mean Version or InternalVersion. Just attach the cryptini jsons you want for testing, and I'll upload them.
Please try to increase the version number(cryptini) in the json to trigger a message alert.
I'm not sure if you mean Version or InternalVersion. Just attach the cryptini jsons you want for testing, and I'll upload them.Internal version must be used in combination with ForceNotify. We all agreed, that you don't like the forcenotify option and is set to false(cryptini). The other valid trigger method is to increase the version number. So please increase it in your json file and watch OPM for the new message(this is for testing purposes, you don't have to update to the new version). Alternatively leave the version as it is and set forcenotify to true. You should also see a message. In fact please try both methods.
If this is really needed then at least don't hide the package but mark it clearly as disabled by its author.
Make its text font grey or use other colors to make it distinctive. Otherwise we will get bug reports and for a reason as it would be a confusing feature.
Same result: CryptINI column shows Version at 0.1.1.0 and Update column as 'New' but.. not greyed out.The JSON looks ok, you probably did not update to the latest trunk.
*An obscure bug: After uploading, starting OPM and before step (5) if I clicked 'Refresh' OPM locked up at 'Parsing JSON' forcing a restart of Lazarus. Once the new info was showing, 'Refresh' works without problems.I fixed this in r. 53640.
You're right! I forget to commit something. Please try one more time: r. 53641
{
"UpdatePackageData" : {
"DownloadZipURL" : "https://sourceforge.net/projects/lazautoupdate/files/otherpackages/cryptini.zip",
"DisableInOPM" : true,
"Name" : "cryptini.zip"
},
"UpdatePackageFiles" : [
{
"ForceNotify" : false,
"InternalVersion" : 1,
"Name" : "cryptini.lpk",
"Version" : "0.1.1.0"
}
]
}
There's a new version of bgrabitmap 9.3 that you can update in the repository. I tell circular about the external json but I did not receive a response from him.Ok. I will do it tomorrow(It's late now here).
I think I will use it as is:This is correct! Please note: even when you set ForceNotify to false, don't decrease/reset the InternalVersion , because it's remembered locally by OPM, so when you enable again ForceNotify, the internal version from the external json must be greater then the local version(to trigger an update alert).
- If I do a new version I will disable the ForceNotify and just increase the Version
- If I do some new commits with fixes I will enable the ForceNotify and increase the InternalVersion
A thing I see:You're right again. In order to update you must install the package first. I made this restriction to prevent unresolved dependencies error. For example, if you try to update bgracontrols directly from the external link and bgrabitmap is not installed the update will fail. After the package is installed you can update any time, if not then it's a bug.
- When you install for the first time is not allowed to download directly from the updates button.
Edit: How you fixed the github bug? I need to fix it to for some of my applications that auto-updates from GitHub.TFPHTTPClient sometimes raise an exception even when the operation was successful. You should catch the exception first, then check if the ResponseStatusCode differs or not from 200(OK). If it's 200, just ignore the exception and continue.
A minor niggle: In the updated lpk, I had altered the description field to describe an updated feature, but after the update OPM still shows the 'old' description. Is this intended behaviour?The package description is stored on the main repository(the main JSON). After update OPM still reads the description/license from the main repository not from the updated lpk. This feature must be implemented.
An update should update lpk Description and especially License fields (untested by me) in OPM - a developer may change the license conditions in an update which is important.
The package description is stored on the main repository(the main JSON). After update OPM still reads the description/license from the main repository not from the updated lpk. This feature must be implemented.OK. Let me know when it's implemented and I'll do a ForceNotify update for cryptini.
OK. Let me know when it's implemented and I'll do a ForceNotify update for cryptini.Implemented in r. 53650. You don't have to use ForceNotify for this. OPM will automatically read the package info(license/description) from lpk, after an update/install.
Wow - impressive.QuoteOK. Let me know when it's implemented and I'll do a ForceNotify update for cryptini.Implemented in r. 53650. You don't have to use ForceNotify for this. OPM will automatically read the package info(license/description) from lpk, after an update/install.
@RayvenhausSuggestion: Single-click? Most linux users would expect it, and Windows users just get 2 instances of the browser if they double-click :) I was fooled.
Just move the mouse over link: http://www.cityinthesky.co.uk (http://www.cityinthesky.co.uk)...., the color should change to blue then double click it. If another behavior would be more logical...I'm open to suggestions.
Perhaps a link to my GUI app when it's finished?Yes, the link to your project its a must. I will add it when you're ready. In fact you can edit anytime you like. All you need is wiki account or perhaps you already have one?
It's guaranteed to produce a usable update_json file that will be compatible with OPM.
I can update the wiki with information as I understand it, if that's OK.
Things can look very different between a developer and a user sometimes.True.
Suggestion: Single-click?With single click you select the current row. Every selection would open a new browser window. Not good. :D
I like the control arrays, but if its a big problem for you I can redesign. Most components will only have 1 or 2 packages.No problem at all. Feel free to keep it.
Here is attached the latest translation for the json editor.Looks great - thanks!
I have tried to install KControld on osx and it fails to compileIt compiles fine on Linux.
kfunctions.pas(1489,23) Error Incompatible types: got TThreadID expected Longword
kfunctions.pas(2307,30) Error Incompatible types: got LongWord expected TThreadID
Is this just a osx issue of does kcontrols not compile on win/nix as well.
GetMem, do all package maintainers know their packages are available from OPM and that they should provide new versions?No. At least third of the packages don't have a maintainer, some of the packages are maintained but the authors don't visit this forum. When I add a package to the main repository, I always check if it compiles under windows. However checking for every single platform would be a tremendous task(I cannot do this alone).
No. At least third of the packages don't have a maintainer, some of the packages are maintained but the authors don't visit this forum.For packages that have a maintainer, this package manager should be advertised.
@JuhaFor approximately 10 out of 41 packages the update system is up and running(the external JSON we talked about in previous posts). Later hopefully more package maintainer will join in.
For packages that have a maintainer, this package manager should be advertised.
What would I need to change to get kcontrols to compile and run on osx?I think it is obvious. Use the right type (TThreadID) for MainThreadID.
For approximately 10 out of 41 packages the update system is up and running(the external JSON we talked about in previous posts). Later hopefully more package maintainer will join in.I didn't mean the external JSON thing only. I meant the authors and maintainers should also deliver new versions for the master repository. That is the "official" place after all.
I implemented voting system partially(r. 53697), for now it only works locally. Please test!Hey, let's document things first for a change. What will the server SW do? Could you at least make a bullet point list please. I can try to make a sequence diagram after it.
What will be on server side, is not yet decided, at least not entirely(database server, etc). Communication between a desktop application(Lazarus/OPM) and a remote database is not safe, unless another layer of security is added. It can be done through a php server or free pascal based fastcgi. The second one would be a nice show case for free pascal, but is more difficult to implement. Somebody has experience with fastcgi? I can do the implementation with php.
I didn't mean the external JSON thing only. I meant the authors and maintainers should also deliver new versions for the master repository. That is the "official" place after all.That was my original idea, a well maintained central repository, but then everyone wanted updates :D. Anyway, once the database server is up and running(I already discussed with Marc about the details), we can give rights to package maintainers, so in the end a direct upload to the central repository will be possible in the future.
The external JSON update still looks like a little confusing design oddity to me, but no worries, I believe it is needed.Every major package system works in a similar way. Maybe you didn't follow the latest post, but almost every limitation is lifted now. The package maintainer doesn't have to follow any naming convention, zip structure, etc. Just generate a JSON with OPM, fill in two items, and that's all there is to it. If someone can came up with more simple design I'm open to suggestions.
Hey, let's document things first for a change. What will the server SW do? Could you at least make a bullet point list please. I can try to make a sequence diagram after it.I do not understand the question, I mean what list should I create? The server SW is only needed as a gateway between OPM and the database(it will be PostgreSQL), since a direct connection is not safe.
Re:Voting systemOk, but we all must agree on the list, because it can be very subjective. For example in your list after 4(which is still a crapy level) comes 5 Pefection :D
Could we have a TPopupNotifier or similar show over each star graphic showing what it means? That way, the voting would be equitable.
..something like:
Popup text over 1 : "Unuseable. Buggy and/or obselete"
Popup text over 2 : "Compiles/Installs, but has many unfixed bugs"
Popup text over 3 : "OK, but poor support for fixes and/or updates"
Popup text over 4 : "OK, but unsuitable for production"
Popup text over 5 : "Perfection!"
That was my original idea, a well maintained central repository, but then everyone wanted updates :D. Anyway, once the database server is up and running(I already discussed with Marc about the details), we can give rights to package maintainers, so in the end a direct upload to the central repository will be possible in the future.Sometimes it makes sense to follow your vision and not listen to others (much).
Every major package system works in a similar way.Not really. They usually have only a central repository. Then you can see if your local package is up-to-date or not. Easy, logical and intuitive.
I do not understand the question, I mean what list should I create? The server SW is only needed as a gateway between OPM and the database(it will be PostgreSQL), since a direct connection is not safe.List the technical details of what the gateway does. Protocols used over the net, data formats, authentication methods (is the forum user account still the plan).
Popup text over 1 : "Unuseable. Buggy and/or obselete"Such explanations are not needed. The quality is always a subjective matter and it must be so. There is an infinite number of criteria by which people can judge a package. Trying to fit them all into those short explanations is a swamp.
Popup text over 2 : "Compiles/Installs, but has many unfixed bugs"
Popup text over 3 : "OK, but poor support for fixes and/or updates"
Popup text over 4 : "OK, but unsuitable for production"
Popup text over 5 : "Perfection!"
I'm willing to be convinced. Let's see how the voting system works out without explanations...Popup text over 1 : "Unuseable. Buggy and/or obselete"Such explanations are not needed. The quality is always a subjective matter and it must be so. There is an infinite number of criteria by which people can judge a package. Trying to fit them all into those short explanations is a swamp.
Popup text over 2 : "Compiles/Installs, but has many unfixed bugs"
Popup text over 3 : "OK, but poor support for fixes and/or updates"
Popup text over 4 : "OK, but unsuitable for production"
Popup text over 5 : "Perfection!"
If you look at other sites that allow voting, they also don't try to explain the scale.
For example SourceForge allows voting for different properties:each having from 1 to 5 starts. The star-scale however is not explained because (I guess) it is so obvious.
- Ease
- Features
- Design
- Support
1 star means bad and 5 stars mean good.
That is a sufficient explanation for our case, too. A scale from bad to good.
BTW, your texts already raise questions. No package can reach "Perfection!", thus 5 stars cannot be used. Even 4 stars is still unsuitable for production, thus no Lazarus package can be used in production. :(
Not really. They usually have a central repository. Then you can see if your local package is up-to-date or not. Easy, logical and intuitive.The thing is we have an update system now, we can't put the toothpaste back to the tube. :) Seriously it would be a shame to drop it.
With our hybrid system a local package can be up-to-date with the central repository but not with an external update source. Not logical nor intuitive.
List the technical details of what the gateway does. Protocols used over the net, data formats, authentication methods (is the forum user account still the plan). How do you ensure the secure connection? Protocols and libraries used for it? Etc...OPM with TFPHtmlClient sends Post/Get requests to the web server like any web browser would do. The protocol is https. It's logical to use it, since the traffic is already encrypted + the database can be also accessed with a browser. The web server can be Apache or a full fpc based server. A third possibility is an Apache with a FastCGI coded in fpc. FastCGi basically it's a interface between a program and a web server. The data format is simple, just basic command for the database: "Ïnsert into TableName(...) values(...)". I cannot tell you more details about the actual implementation until it's not decided what to use: php vs. fpc fastCGI vs full fpc server(it's an overkill for a small project like this). If we choose php I can do all the coding alone, if not I need help because I have little experience in server side coding with fpc. It would be fun to learn, but I'm busy implementing other stuff in OPM. The database server is PostgreSQL, according to Marc is very efficient and secure. I use firebird in my applications. Regarding the forum user account, it can be used, but since we create a new db. with users and passwors for voting/uploding packages to central repository it make sense to use the new username and password.
Think you are delegating the job to me and you must explain what must be done.
@RayvenhausYes, please update from SVN. I almost every day commit something new, it would be an overkill to update the central repository each day. More over, I think I will remove OPM from the repository. It make no sense to keep it there since it's part of lazarus.
So, the best way to update OPM at this time is to use SVN? It's not showing any updates from inside OPM for OPM.
The thing is we have an update system now, we can't put the toothpaste back to the tube. :) Seriously it would be a shame to drop it.Yes. I am not even suggesting that.
Regarding the forum user account, it can be used, but since we create a new db. with users and passwors for voting/uploding packages to central repository it make sense to use the new username and password.So your client GUI will have an option to create a new user account? That is OK.
I have a question, once the system is ready, for example I create an account it counts for voting and uploading packages, what's the limit? For example I can upload multiple packages, upload duplicate packages, upload some malware. Or it will be like is now moderated?Direct upload must be allowed only for few and selected people. There will be some admin work involved when the write access is given to them.
@lainzYes, it must be moderated to prevent spam, malware etc.
I have a question, once the system is ready, for example I create an account it counts for voting and uploading packages, what's the limit? For example I can upload multiple packages, upload duplicate packages, upload some malware. Or it will be like is now moderated?
A suggestion -> when there's a new version available in the repository show it in bold, the same as when there's a new external version.Done r. 53704. Please test.
@Juha:D This is funny!
It got 60 ratings and all of them full 5 stars. Uhhh! In reality it is a horrible language. I guess 60 people in the world like it and they all went to rate it.
It got 60 ratings and all of them full 5 stars. Uhhh! In reality it is a horrible language. I guess 60 people in the world like it and they all went to rate it.This can be the problem. In a 5-star system, voting stars 2,3,and 4 are pretty meaningless without explanation, so people usually vote nothing or 1 (bad) or 5 (good) - a bit like the FaceBook 'like' button.
Initial Wiki page for the External JSON Editor:You should add a link to your wikipage: http://wiki.freepascal.org/Online_Package_Manager#Create_JSON_for_upates
http://wiki.lazarus.freepascal.org/opmjsonupdateeditor
OPM Rev 53704:The screenshots are OK. There should be no difference visually between ForceNotify and a Version change(except the version number).
Screenshot 1 - after a ForceNotify
Screenshot 2 - after a version change
Question: Is there a process planned for merging updates into the main repository after a suitable period?Yes. Most likely will be an option to directly upload a package to main repository. Authentication needed.
About this articleWhat is your suggestion to choose? (One is the application title, the other is more descriptive. The filename is jsoneditor.)
http://wiki.freepascal.org/opmjsonupdateeditor (http://wiki.freepascal.org/opmjsonupdateeditor)
I only need to say that must be consistent the naming of the tool.
"opmjsonupdateeditor"
"Online Package Manager External Update json Editor"
"External OPM JSON package editor"
Please just choose one and only one.
"OPM External Update json Editor" - I suggest shorter one "OPM Editor", "OPM Helper", "OPM Assistant"I thank you for the suggestions, but the app is very specific - it edits only external update jsons, and is not part of OPM itself. If I was selling it then marketing and brand/product recognition via a snappy title would probably be more important... Treat it as an ugly but useful gift.
Now i see listview with items captions:The packages names are given by the package maintainers, besides each package can have multiple versions(see virtual tree).
-fortes4lazarus 3.24
-indy10.6.2
-eyecandycontrols_0-9-6
my wish is: show NICE titles in column-0:
-Fortes for Lazarus
-Indy
-EyeCandyControls
And also i see bug on Today's trunk:I don't have ubuntu, but I did test it on kali linux and I cannot reproduce the error. Can you please debug it and tell me which line cause the error? Thanks.
i just move mouse over listview, and IDE shows
"List index out of bounds (-1)"; before i resized header column-0 to wider size.
maybe caused by none selection in list.
Ubuntu 14.04 x64
I found how to make my ATButtons.zip. How to send it to OPM?Just paste the link to your package(s), I will add them tomorrow.
Pls disallow Github ZIP links, which I filled before (url of master zip)Done.
For CalLite, i click item in column Status/data, url at wiki, but Firefox dont openClick-->Select row
For my comp's I want to fill "wiki" infos: url of Laz wiki, not url of Github homepage (both needed, GH+wiki)Paste here the home package link and I will add it to them main JSON, you should also fill the update link.
You can add .git and .svn folders too.+1
Excellent work - thanks!Thank you.
Is there a regression? After an update, I note that the description and license fields are once again unchanged from the original.Yes it is! Fixed in r. 53750.
I was able to create a package with just the Category field filled out (no display name, home page nor update link)Well those field are not mandatory. OPM can work without them. I updated the wiki a few days ago: http://wiki.freepascal.org/Online_Package_Manager#Create_repository_package
No fields yet to indicate compatibility (min fpc version, min laz version supported OS/WidgetSet)Click to each child node(*lpk files), you will see those fields and even correct them if necessary.
A component may be useless without a clear understanding of its license (which may not be specified in the lpk) How can OPM handle this?The license/description is loaded from the *.lpk file. Editing directly from OPM would be confusing. Which is the real license?
No dialog as to what to do next once the zip and json has been createdThe plan is to upload the packages directly to the main repository, however in order for the upload to work we need somekind of gateway, accessing the database directly is not safe. A fpc based FastCGI implementation would be ideal.
I had to add some exclusion filters; here's the set that works for most packages in ccr (note /updates which is created by the Json Updates editor)Thank you! Please copy all your filters from your configuration file and paste here.
Yes it is! Fixed in r. 53750.Thanks. Tested OK.
The license/description is loaded from the *.lpk file. Editing directly from OPM would be confusing. Which is the real license?If the lpk licence entry is empty then 'Create Package' could offer options, or at least a warning (it would be the package author creating the OPM entry) I think it's important enough to implement.
Click to each child node(*lpk files), you will see those fields and even correct them if necessaryThis needs to be in the update json spec, since an update could modify compatibility.
The plan is to upload the packages directly to the main repository, however in order for the upload to work we need somekind of gateway, accessing the database directly is not safe. A fpc based FastCGI implementation would be ideal.Did you read my post about a 'sandbox' repository? Possibly hosted by SourceForge and accessible via svn? A sandbox repository addresses most security concerns.
Please copy all your filters from your configuration file and paste here.I thought the screenshot +lainz's post said it all. If not, I can do as you suggest.
If the lpk licence entry is empty then 'Create Package' could offer options. I think it's important enough to implement.You forget that we talk about package maintainers here not beginners. Ok I'm not against it, if somebody implements it...
Did you read my post about a 'sandbox' repository? Possibly hosted by SourceForge? A sandbox repository addresses most security concerns.We have a dedicated VM just for OPM on lazarus official page, why should we in involve sourceforge? Everyone(after a login) will be able to upload files, the packages will be visible/available for download only after moderation. It's the same system as you described in your post(mostly).
I think it's an extremely bad idea to allow anyone but the OPM moderator access to the main repository.
I thought the screenshot +lainz's post said it all. If not, I can do as you suggest.The screenshot is clear but to prevent errors it would be much easier to copy/paste. Anyway I did it, I will commit it tomorrow. Thanks.
This needs to be in the update json spec, since an update could modify compatibility.Again I agree, but then we have to redesign the whole external json structure + retest it from scratch. :) A quick shortcut is to read the lpk after install/update, this is exactly what OPM does now for description and license. I can extend it for other items too.
What would I need to change to get kcontrols to compile and run on osx?
I noticed this forum already before but did not try the package manager yet.
From the screenshot I can see there is KControls 1.7. This is last "stable", but very old already.
(I still don't have everything ready what I planned for KControls 1.8 )
Is there any option to add a link to the repository for the included package (to give the option to download newer version)Check out the wiki: http://wiki.lazarus.freepascal.org/Online_Package_Manager#Create_JSON_for_updates (http://wiki.lazarus.freepascal.org/Online_Package_Manager#Create_JSON_for_updates) It's really easy to deploy updates with OPM.
Is there any option to add a link to the repository for the included package (to give the option to download newer version) or maybe to its forum as well?Yes, basically you have to:
>If the lpk licence entry is empty then 'Create Package' could offer options, or at least a warning
I noticed this forum already before but did not try the package manager yet.You can release a bug fix dot-release, say 1.7.5.
From the screenshot I can see there is KControls 1.7. This is last "stable", but very old already.
(I still don't have everything ready what I planned for KControls 1.8 )
Is there any option to add a link to the repository for the included package (to give the option to download newer version) or maybe to its forum as well?You should create a repository package of your new KControls 1.7.5 release and send it to GetMem.
These maybe will not be updated a lot so for now I will not mantain an external json.That's ok. The update feature is a possibility not mandatory.
@tk Hi there. Thanks for your good work. Is KControls 1.8 ready for production use?
@tk Hi there. Thanks for your good work. Is KControls 1.8 ready for production use?
Not yet. I still need some time to implement planned features.
I also fixe BGRABitmap in the central repository by adding LCLPlatformDef to the uses clauses for BGRAText unit. Apparently some things where moved around lately. Since BGRABitmap is used a lot, I thought I fix it.Yes.
PS: I also updated KControls to the latest version.I still see version 1.7. I understood it is the latest version so far.
The OPM client creates a 100% CPU load for one processor core. It looks like OnIdle load because it does not slow anything down, but it will kill laptop batteries quickly.Fixed in r. 53769. Please test.
Any ideas? It will work in Lazarus 1.8, so I need something in the uses clause that adds the unit only in 1.8 or 1.7 trunk, never in 1.6.x
I am getting the same error when the IF condition is in the interface section. It works when it is in the implementation section.Hi GetMem, I tried with your code but it gives me an error, with FPC 3.0
{$IF LCL_FULLVERSION >= 1070000} LCLPlatformDef; {$ENDIF}
bgratext.pas(35,7) Error: Incompatible types: got "AnsiString" expected "Int64"
Add LCLVersion to the first uses, then it works in the second one:Yes, then it works in the implementation uses section.
uses GraphType, Math, BGRABlend, BGRAUTF8, {$IF LCL_FULLVERSION > 1060000} LCLPlatformDef{$ENDIF};
and you must use ">" instead of ">= " since ">=" won't work in FPC 3.1.1. I have no idea why.It must be a bug. Somebody should report it.
Fixed in r. 53769. Please test.Works well now. Thanks.
It must be a bug. Somebody should report it.I can report it later, maybe they fixed already. I have to check fpc 3.1.1 again or perhaps somebody has 3.1.1 installed and can do a quick test?
bgratext.pas(119,76) Fatal: no puedo encontrar LCLPlatformDefutilizado por BGRAText de paquete BGRABitmapPack.
Yes, basically you have to:
1. Create a JSON file with OPM
...
I installed the OPM now and read the wiki, it looks already very good at first look.Thank you.
1. From what I've read, it still does not provide a direct connection to Bitbucket? There I maintain the main repository of KControls (locally via Mercurial). So without this support the OPM can now only work with "stable" or "bugfix" releases stored somewhere on my website?I'm not sure what you mean by direct connection. There is no implementation that support Bitbucket api, however OPM can download from Bitbucket. For example I see that the download link to the latest version is: https://bitbucket.org/tkweb/kcontrols/get/d35ac14451b2.zip. With the following JSON, OPM can update KControls whenever is necessary. What is in the zip file is up to you, you can feed stable or trunk version.
{All you have to do is upload this JSON wherever you like(bitbucket, personal site etc) and send me the link so I can update the main repository. When a new version is out, just change "DownloadZipURL" and increase "Version". OPM will automatically notify the user about a new version.
"UpdatePackageData" : {
"DisableInOPM" : false,
"DownloadZipURL" : "https://bitbucket.org/tkweb/kcontrols/get/d35ac14451b2.zip",
"Name" : "kcontrols_1.7"
},
"UpdatePackageFiles" : [
{
"ForceNotify" : false,
"InternalVersion" : 1,
"Name" : "kcontrolsbase.lpk",
"Version" : "1.7.0.0"
},
{
"ForceNotify" : false,
"InternalVersion" : 1,
"Name" : "kcontrolslaz.lpk",
"Version" : "1.7.0.0"
}
]
}
2. Does it support private packages? I have several packages stored in my private cloud drive and I must always install them manually. It would be great to automate this task via the OPM.Yes. Please send as many package you like. You can use the "Create repository package" menu item from OPM, or just paste the link to your package herre and I will add them manually. Make sure your lpk contains a good description and a license info, also please specify the supported widgetset.
...however OPM can download from Bitbucket.
Yes. Please send as many package you like.
@tk In OPM/Options you can switch repositories at will.
@minesadorada
Thanks for confirming. In this case we should report it.
I meant private packages with proprietary code created/used in our company, I cannot disclose them. I meant something like adding another (private) remote repository to the OPM settings and add these packages to this repository. OPM would then manage two repositories eg.:Oh, I see! I misunderstood the question. Private repositories are not supported yet, I plan to add it later(most likely in the beginning of January).
1. http://packages.lazarus-ide.org
2. http://ourprivaterepository.ourdomain.com
If there's a bug in that functionality better I don't add the unit fix to bgra sources until 1.8 gets real, else it will add more problems to these that are using 3.1 and trunk, only for making it compatible with 1.6 (something that already is).Yes, that's a good idea. Those who use Lazarus trunk can tweak the source anyway.
The highest scope this can go is after the unit's Interface Uses clauseWe came to the same conclusion, but is a bug an should be reported. I will ask in the devlist later, maybe somebody knows more about this issue.
Do you mean the ">=" operator works also in FPC trunk after all?
interface uses lclversion, <other stuff> ; {$IF LCL_FULLVERSION >= 1070000} {$DEFINE LAZ17} {$ENDIF}
I had understood the bug was ">=" operator not working.QuoteThe highest scope this can go is after the unit's Interface Uses clauseWe came to the same conclusion, but is a bug an should be reported. I will ask in the devlist later, maybe somebody knows more about this issue.
You mean you add support for multiple repositories? Tk's second URL could have any domain, makes no difference.QuoteI meant private packages with proprietary code created/used in our company, I cannot disclose them. I meant something like adding another (private) remote repository to the OPM settings and add these packages to this repository. OPM would then manage two repositories eg.:Oh, I see! I misunderstood the question. Private repositories are not supported yet, I plan to add it later(most likely in the beginning of January).
1. http://packages.lazarus-ide.org
2. http://ourprivaterepository.ourdomain.com
You mean you add support for multiple repositories? Tk's second URL could have any domain, makes no difference.Yes, support for multiple repositories. If the repository owner decide to share it it's public otherwise is private.
Private directories / packages are not in the scope of an online package manager.
The next important step will be tight integration with Lazarus package system. Now it does not know about online packages until they are installed.I don't know about this. Although they have similar functionality the two system are completely different. Mixing them would be like mixing bananas with oranges. Mattias use critical sections when loading the packages syncing those with my threaded system is a non-trivial operation. When searching for dependencies the local package manager has all the info needed in lpks, OPM has to rely on limited info available in the main JSON. For this to work everything has to be moved inside the packager folder, OPM once again completely redesigned, the two dialogs somehow mixed to become one. The benefits? Some lazy user don't have to open a second dialog to check if a package is available online. OPM was not meant to replace the "Install/Uninstall packages" dialog, it's just a tool to install as many packages you like with a button click. Until now you had to open each package, press the compile then the install button. Another benefit is that all the packages are in one place, with the latest updates available you don't have to go through the maintainers site.
The Lazarus package graph already can resolve dependencies between packages it knows about. The goal is to let it know about available online packages which would then become part of that package graph.
Lazarus components/ already contains packages with external dependencies, for example TAChartBgra. Now trying to install it gives an error. In future it would automatically install BgraBitmapPack from online repo.
In the same way an external package can depend on a package in Lazarus components/. Then you must dump your current dependency handling code and integrate it with the package graph.
Details must be discussed in Lazarus devel list. Mattias is the most knowledgeable person about package graph.
I don't know about this. Although they have similar functionality the two system are completely different. Mixing them would be like mixing bananas with oranges.No, they both deal with Lazarus packages and their dependencies and installation. Conceptually the same thing. OPM is a front-end to external packages, Lazarus has front-end code for packages in local file system. The common code installs them and maintains a package graph.
Mattias use critical sections when loading the packages syncing those with my threaded system is a non-trivial operation. When searching for dependencies the local package manager has all the info needed in lpks, OPM has to rely on limited info available in the main JSON.What info is missing from the JSON? I think it is pretty complete.
For this to work everything has to be moved inside the packager folder, OPM once again completely redesigned, the two dialogs somehow mixed to become one.No no! The package-API must be extended to support it. Don't worry, I am not asking you to do it. :)
The benefits? Some lazy user don't have to open a second dialog to check if a package is available online. OPM was not meant to replace the "Install/Uninstall packages" dialog, it's just a tool to install as many packages you like with a button click. Until now you had to open each package, press the compile then the install button.Now you confuse the package system (dependency management + installation etc.) and its GUI front-ends.
Another benefit is that all the packages are in one place, with the latest updates available you don't have to go through the maintainers site.Yes, it is the benefit of an online package manager. It is the whole point of having OPM.
PS: Before anything somebody must implement that fpc based cgi/fastcgi, so the database server can be used for maintaining the main repository + implement the voting system.This is a separate and independent project from the package system integration.
1. OPM already preinstalled in Lazarus (to save one Lazarus rebuild for installing the OPM).OPM contains a third party component(VirtualStringTree) so it cannot be preinstalled in Lazarus yet, VST must be added first.
2. Manage packages listed in 'available for installation' list box with OPM and delete them from Lazarus distribution (to keep Lazarus distribution smaller).Good idea, though I'm not the one who decide this.
OPM contains a third party component(VirtualStringTree) so it cannot be preinstalled in Lazarus yet, VST must be added first.You have the VirtualStringTree fork there already. It could be included in BigIde in future.
I moved the Industrial package. Other packages must be discussed.Quote2. Manage packages listed in 'available for installation' list box with OPM and delete them from Lazarus distribution (to keep Lazarus distribution smaller).Good idea, though I'm not the one who decide this.
How did other people manage to send you files?
SourceForge, GitHub, personal websiteOk, I read the instructions poorly in
I moved the Industrial package. Other packages must be discussed.By sheer coincidence I used one of the Industrial package components for the first time today in a project. Not much documentation, but nice controls. Are they maintained?
Are they maintained?Not very actively but I put my name on the wiki page as a maintainer.
You have the VirtualStringTree fork there already. It could be included in BigIde in future.Ok. This is good news. In the devlist there was a discussion about adding VST to Lazarus. After that I can remove the dependencies from OPM. This would be the best solution in my opinion.
This becomes a question before the next major release ( 1.8 ). Trunk users will install it separately anyway.
GetMem, I tried to send you an Opkman package but mail servers rejected it as dangerous. I tested with 2 different mail accounts, one being GMail. We must find a reliable way to transfer the files ASAP!Marc is very strict about the upload policy, he does not allow any public upload to the main repository(I agree with him, it's too risky). First we have to implement that pascal cgi/fastcgi or it's php equivalent. Until then we can use my own personal ftp server, but here comes the annoying part, fpc does not have any native component to send ftp. In order to implement the feature, I have to add another third party component. The code is ready, I did it with indy, works well, but I really don't want to add one more component, so I did not commit the changes. Another solution is to upload the files to a free web server. This can be done with fphttpclient, the implementation is almost ready.
To me the FTP server sounded very good. Write access to everybody, then an admin publishes packages that he approves. If there is too much garbage/spam then we think again. Easy peacy...
Now I attach the files here. I had to rename the .json file to .txt because it was rejected also here. Please add to online repository.Thanks. I will add it soon to the main repository.
Another solution is to upload the files to a free web server. This can be done with fphttpclient, the implementation is almost ready.How about a newly-created SourceForge OPM_CCR project? All the heavy lifting (including virus-scanning) is done for you.
@minesadoradaSimple. In order to contribute a new component, you must register a SourceForge account. This account is then added to the OPM_CCR project via an email to the OPM moderator then added (as 'developer') in order to upload files.
How do you plan to upload the files(from OPM) to source forge? FTP? HTTP? Whatever method you choose you have to provide a username and password, since Lazarus is open source everyone can read the password. How do you plan to solve this issue?
Anyone can create a new repository in their own accounts and then send you the mail (like I did for all my packages).My point is: they don't need to create a repository outside of the OPM_CCR one. All they need is a SF username and OPM_CCR access for uploads and svn commit. Their 'stable_release' code is held in OPM_CCR. If they want to copy it from some other repository, that's not part of the OPM equation.
We discussed this before, if a login system must be used then better implement our own and host it in the Lazarus server. Using a third party hosting doesn't look to good in my opinion, even if sourceforge and github are more then professional services. It's like microsoft servers running on linux not IIS.Fair enough - I sort-of agree. But a SF-based system can easily be migrated when resources are available. I can't see your objection to a 3rd-party supplier like SF or GitHub as important enough to delay setting up an initial system. As I have said before, CCR has been hosted by SF for ages without complaint and it formed the basis for the initial OPM packages.
Until somebody implements the login system we need a temporal solution, even if it's not 100% secure.
The assumption I would question is: Why is a Lazarus server more 'professional' than a SourceForge server? Both are open-source providers. Which would you trust more if you had never heard of the Lazarus project, and which could you be more sure to continue to host your code in 10 year's time?Probably the servers are less professional since it's an open source project with limited founding, but that's the whole point, if we manage to make a pascal based, safe login/package managment system, lazarus/fpc would look more professional to other people
Sorry for my lack of knowledge, a database can contain zip files and json files?Blob fields can contain any binary format.
The language you want to do the server side is FPC or PHP for example?If I had the possibility to choose php, the loging system would be long implemented. However some core developer insist to be fpc as a showcase. I have little experience coding server side stuff with fpc, I hopping somebody with more experience will help me. Another solution is to learn it myself, but since my time is limited the progress will be slow.
Probably the servers are less professional since it's an open source project with limited founding, but that's the whole point, if we manage to make a pascal based, safe login/package managment system, lazarus/fpc would look more professional to other peopleWell, I guess it's what I argued for many posts ago on this thread, so I do agree. Good luck with implementing as secure and user-friendly a system in-house as SourceForge before Laz1.8 comes out. You know that SF gives you a free online DB - not that it would be needed for the sandbox system as I proposed.
I keep stressing it's a 'dual' system. The sandbox in Sourceforge, but the 'real' server written in pascal and hosted in-house (this would include the voting system and DB) The best of both worlds, with all the security risks and version control faffle borne by SourceForge and administered by a trusted person who is the only one with access to the 'real' server.Yes, this can be done. Move all the possible crap to sourceforge, and keep just the links in a db located in lazarus server + voting system + users.
@minesadoradaI think you are distracted by automation. Why should OPM manage the upload?
As a temporary solution we can use sourceforge, but without a login system. We need a public account, with limited storage place(100 Mb), where everyone can upload files, but only 1-2 person can delete. The upload must be done through OPMs "Create repository package" dialog? Forget the secure part, I know is not secure as a temporary solution is ok.
The only automation OPM could usefully do is send an email with the SF username to add to the OPM_CCR project.There is no native component to send mails in fpc/lazarus. I cannot use third party components since OPM is part of lazarus.
@GetMemQuoteThe only automation OPM could usefully do is send an email with the SF username to add to the OPM_CCR project.There is no native component to send mails in fpc/lazarus. I cannot use third party components since OPM is part of lazarus.
@lainzQuoteSorry for my lack of knowledge, a database can contain zip files and json files?Blob fields can contain any binary format.QuoteThe language you want to do the server side is FPC or PHP for example?If I had the possibility to choose php, the loging system would be long implemented. However some core developer insist to be fpc as a showcase. I have little experience coding server side stuff with fpc, I hopping somebody with more experience will help me. Another solution is to learn it myself, but since my time is limited the progress will be slow.
All the OPM 'action' is in the OPM_CCR SF repository under svn version control. It is however a 'sandbox' and no-one but the OPM moderator can alter the official online repository. Direct uploads would be a disaster-in-waiting.Now there is a misunderstanding somewhere. The only task now is to transfer a package generated by the Opkman to the server repository, through the admin's approval.
I stress 'version control' because I feel this essential to successful OPM deployment in Laz 1.8, and @GetMem has rightly handled it well for installation and updates.
I would suggest that your main worry is being too busy to un-vet a crap component that doesn't compile and is full of bugs that will never be fixed. This could happen with an over-automated system, and would reflect badly on Lazarus 1.8. I have no idea what a solution for that would look like but my 'SF sandbox' proposal minimises the chance - proposed components 'sit there' until the OPM moderator has time and energy to vet them.No, we don't need another layer for security and maintainability. We already have such a layer, namely a human inspection.
@Juha's ideas are sound if applied to the in-house server. I am suggesting an extra 'sandbox' layer for security and maintainability and above all - to maintain the Lazarus reputation for solid bug-free built-in components.
If I had the possibility to choose php, the loging system would be long implemented. However some core developer insist to be fpc as a showcase. I have little experience coding server side stuff with fpc, I hopping somebody with more experience will help me. Another solution is to learn it myself, but since my time is limited the progress will be slow.No, I don't really insist it. I only said I would like to see an FPC solution. I was hoping somebody else will join and do an initial version. Maybe not. :(
Also please write down in pm or here your idea about linking the two package system. Consider this: OPM is not loaded yet, however the package graph or another package functionality must access the online packages. To do this, it has to start one of OPMs thread and through a callback function receive the data when arrives. This cannot be done only through packageintf. How do you plan to implement it, without moving a part of the code inside packager folder.PackageIntf must be extended to query / pass information about available online packages.
Another possible strategy :Passing the online packages to the IDE through packageintf is not the problem. I already do something similar when I compile/install packages. The question is:
Just do the phase number 3., get available packages without waiting instructions and pass them to IDE.
We have to assume a component developer is not an idiot. Too much automation is not always desirable :)Believe it or not the vast majority of the feedback I got until now, is about simplifying the creation of repository packages/update JSON. According to some users the process is too complicated.
As a non cutting-edge Laz developer, I can handle getting a SF account, Installing SVN/TortoiseSVN and uploading my source with an OPM json for approval - I can even handle updates (thanks to my groovy GUI).
What I'm saying is - if I can do it - anyone can and if they can't, maybe they are not the kind of developer to reliably maintain an OPM component in Laz1.8.
About the complexity of making a new package, is the idea that "you're doing it wrong" maybe one has, so I sent you all the links, and you made all of themI understand that feeling, but even if somethings goes wrong, no harm is done, so nothing to worry about.
You work fast 8):D Still a lot of work to do.
As soon as I clicked the component root, the [Create] and [Submit] buttons became active (not good, as I hadn't filled in any info yet)Yes, "Create" and "Submit" becomes active, but you cannot send the info if any of the obligatory fields are not completed or the data is invalid. Ok, I can change it tomorrow so the buttons only become active when all the obligatory fields are completed. It's more intuitive.Thanks.
There was no prompt nor information to click the component in order to submit compatibility information (i.e. I would not have known it was there)
Ideally the Create Package process would be some kind of Wizard with validated inputs. (That's why I did the GUI for Update jsons)All the necessary fields are validated, you should check the source if you don't believe me. Yes the package can be send without description, author, license. But the lpk files also can exists without this fields. It tells you a lot about the package maintainer, but I cannot force a license or a description for a package that is not mine. A few posts ago you sad I'm to obsessed with automation(ok, maybe I'm :D), but apparently you also want to validate everything.
OPM sent it on it's way, so you will now have a 'mystery' package with no information other than its category. (not good)Here is the JSON I received, perfectly valid, it can be added to the main JSON.
{
"PackageData0" : {
"Name" : "cmdline",
"DisplayName" : "",
"Category" : "Other",
"RepositoryFileName" : "cmdline.zip",
"RepositoryFileSize" : 29026,
"RepositoryFileHash" : "540b92403c061068a149a219b9140ee5",
"RepositoryDate" : 4.2739000000000000E+004,
"PackageBaseDir" : "cmdline\\/",
"HomePageURL" : "",
"DownloadURL" : "",
"SVNURL" : ""
},
"PackageFiles0" : [
{
"Name" : "cmdbox.lpk",
"Description" : "",
"Author" : "",
"License" : "",
"RelativeFilePath" : "",
"VersionAsString" : "0.0.0.0",
"LazCompatibility" : "1.6, Trunk",
"FPCCompatibility" : "2.6.4, 3.0.0",
"SupportedWidgetSet" : "win32/64, gtk2, carbon",
"PackageType" : 0,
"DependenciesAsString" : "LCL, FCL(1.0.0.0)"
}
]
}
All the necessary fields are validated, you should check the source if you don't believe me. Yes the package can be send without description, author, license. But the lpk files also can exists without this fields. It tells you a lot about the package maintainer, but I cannot force a license or a description for a package that is not mine. A few posts ago you sad I'm to obsessed with automation(ok, maybe I'm (http://forum.lazarus.freepascal.org/Smileys/ExcellentSmileys1/biggrin.gif (http://forum.lazarus.freepascal.org/Smileys/ExcellentSmileys1/biggrin.gif))), but apparently you also want to validate everything.Interesting point - there are two kinds of package 'creators'
Don't take the above as a criticism - I simply reviewed the create process 'as a user' to give you (hopefully) useful feedback. We're all on the same side of making OPM a deserved success.Criticism is always good, especially constructive criticism, so feel free to express your views about OPM. I want to keep an open mind about new ideas.
Type 1. Someone who is simply submitting someone else's package for OPM.Yes this can happen, but editing the package without the original authors agreement is wrong, especially editing the license. More over, even if I add the possibility to edit the license, the user still can submit wrong data by accident or intentionally. The bottom line is somebody must check each package manually before adding it to the main repository.
So whilst I see your points about the Description, Homepage and DownloadURL (for type 1 submitters) I think the others need more scrutiny by OPM and can be proactively filled out by either kind of submitter.
@GetMem Can you update PoweredBy from ccr (or the update.zip) into the repository please?Done.
It had the same issue with Trunk as LazAutoupdate. It's fixed now (with LCLPlatformDef), but the repository OPM version won't compile in Trunk, so it's uninstallable.
Version remains at 1.0.4.0
One OR the other? Can it not check both with a user-defined priority?For now you cannot use more then one repository at the same time, and there is a reason for this: each package(lpk) name must be unique otherwise the system won't work(dependency check, etc). Since I don't have control on what goes into the other repositories, I decided to implement it this way. I could always check for name collision, warn the user, remove duplicates, etc..but for now is not worth the effort, since only one person asked for the possibility to add a personal repository, and the reason was to quickly install private packages. Later the feature can be extended and more then one repository loaded at the same time.
Hi, do you remember the compilation problems of BGRABitmap on trunk? Well circular fixed that in the master branch of the repository if you want to add the official fix, maybe it differs a bit for these changed lines.Thanks @lainz, BGRABitmap updated. I also added a few interesting package lately.
Maybe there's a way (of course) to make a website from the JSON file automatically. So there's a website in http://packages.lazarus-ide.org/ instead of that text. I will try to do something, if not at least you get the ideaIt is in my to do list, but first there are more important issues like:
Nice! I forget to add the URL's of the packages, you can add them easily if you want.Ok. I will make a few, small adjustment soon.
@all
Please take a look: http://packages.lazarus-ide.org/ (http://packages.lazarus-ide.org/)
mbColorLib and jvcllaz are shown without a title.Fixed. Also renamed mbColorLib to MBColorLib and jvcllaz to JVCLLaz, since all the packages begins with upercase in the list. This is just the display name(webpage and OPM tree). I did not touch the zip file or any other part of the package. Hope it's ok, if not I can change it back.
Can you order by package name or by date of last change (latest change at top)?I will implement it tomorrow.
Hope it's ok, if not I can change it back.OK, no problem.
@wpNow the packages are ordered by name. I will add more sorting option in the future + a search field: http://packages.lazarus-ide.org/
Can you order by package name or by date of last change (latest change at top)?
@lainz
Feel free to implement whatever you like, my time is very limited nowadays. Just let me know when I have to upload something to the server.
Thank you for your help, it's much appreciated!
Feel free to change the About page or anything.I like the way it is. ;)
Here we go :)Great! Thanks. Repository updated. :)
Now it has the categories.
https://github.com/lazarusccr/LazarusPackagesRepository
Edit: You can add category 'Panels' to BGRAControls and BGRAControlsFX? These contains panel components.Sure, just let me know when the packages are ready.
To BGRAControls also 'Edit and Memos' because it contains edit controls too, 'Labels' if it's the standard label it contains it too. Also 'List and ComboBoxes' that contains too (both). 'Shapes' contains also TBGRAShape. Is a big package :D
I need to improve the description of my packages, I will upgrade them and I will tell you when is ready.
Hi FredVS,
Thank you for the package. I modified the lpk file(hope it's ok), added a description + author name. All the info is taken from your github page: https://github.com/fredvs/uos/. Please check attachment, if something is wrong, let me know.
regards,
GetMem
@howarpcThank you. VirtualTreeView 4.8.7_R4 was one of the first packages added to OPM. I was testing the multi-line capabilities of JSON. Apparently I forgot to remove line1, line2 :D
I noticed that the VirtualTreeView 4.3.7_R4 Description entry has two spurious "line1" and "line2" entries at the end of the sentence.
I do have FPC installed globally. More or less because I couldn't be bothered to remove all FPC related packages.OPM does not deal with FPC packages only Lazarus packages.
And OPM thinks that that's all I've got.
I could - and I will - configure OPM manually - but using a self-compiled Lazarus/FPC is quite common, isn't it?That's exactly what OPM does. Asks lazarus where the config files are stored and save the newly downloaded/installed packages in the same folder. This way the primary and secondary installs are completely separated.
Besides, Lazarus knows how it's configured, so can't OPM just ask it?
Have anyone successfully installed and used this with Fpcupdeluxe?Yes, I just did. As far as I can tell it works as it should, unless I misunderstood something?
Am I using the right thing?No. :)
it's ok to be wrong, but next time please don't blame others for your own fault.Sometimes it takes time until you realise that you are at fault.
I used the Blaszyk package manager. ;)I think I will remove it completely now.
Castle Game Engine should be in it!Please create a package and provide it to GetMem. I still hope in future it can be done with a single click.
@jacmoeAgree. Great Engine/Component. I will add it soon to the main repository.
Castle Game Engine should be in it!
@JuhaWhat do you mean? I added a submit button at least a month ago. It can be done with a single click, or are you referring to something else?
I still hope in future it can be done with a single click.
@jacmoeThat's not possible, when you submit a package you have to do at least two things: select a category and check the lpk's. Anyway the whole process shouldn't take more then 1-2 minutes. I think @Juha talks about the fact that in the past you had to send the packages through mail. This is not true anymore. It can be done with a single click now.
He probably means that creating a package is going to take just one click in the future.
What do you mean? I added a submit button at least a month ago. It can be done with a single click, or are you referring to something else?Oops, sorry. I haven't been following the development all the time.
Oops, sorry. I haven't been following the development all the time.Things are looking good so far. I received at least 10 package in the last month. New packages are highlighted with a blue lightning icon(see attachment).
Submit button sounds good. Makes contributing packages easier and thus more package maintainers will do it in future.
I removed LazarusPackageManager in r54189.Thanks.
New packages are highlighted with a blue lightning icon.Ah, that makes sense.
@jacmoeYou're welcome.
Thanks a lot for adding Castle! ;D
Ah, that makes sense.Blue lightning icons appears in front of the packages not older then 31 days. You can configure the value from the options though.
I have been trying to figure out the difference between the blue flash / regular package icons for a while.
But seriously I can't install it with FPC trunk and Lazarus trunk.Thanks for the feedback. I only tested with Lazarus Trunk/FPC 3.0/Win7. It works fine. You should contact the package maintainer about the issues in trunk.
I get errors when installing it, Internal error 2014081401. This line
Sorry if I'm posting it here, I did that because i'm installing it through OPM. Also I will copy this to the Castle Engine thread.No problem. I will run a few test later with Laz/FPC trunk. I just installed a secondary Lazarus with fpcdeluxe, which is a great tool by the way.
Hi, such a big package the Castle Engine, how many rooms has this Castle ::)
But seriously I can't install it with FPC trunk and Lazarus trunk.
I get errors when installing it, Internal error 2014081401. This line
Handled := Items[I](Received) or Handled;
at Castle Messaging unit.
"{ Message system to communicate between native code and Java on Android
(TMessaging). }"
And maybe I need some android stuff to compile that unit?
Sorry if I'm posting it here, I did that because i'm installing it through OPM. Also I will copy this to the Castle Engine thread.
Yes, I saw the wiki, but I don't use SVN, so, I need a link to a for a zip if it is posible.ftp://ftp.freepascal.org/pub/lazarus/snapshots/lazarus-1.7-54258-20170224-src.zip
Yes, I saw the wiki, but I don't use SVN, so, I need a link to a for a zip if it is posible.ftp://ftp.freepascal.org/pub/lazarus/snapshots/lazarus-1.7-54258-20170224-src.zip
or better yet (in order to not stress the ftp server), surf to https://github.com/graemeg/lazarus and press the download button.
OPM is part of Lazarus. There is no standalone download.Yes, I saw the wiki, but I don't use SVN, so, I need a link to a for a zip if it is posible.ftp://ftp.freepascal.org/pub/lazarus/snapshots/lazarus-1.7-54258-20170224-src.zip
or better yet (in order to not stress the ftp server), surf to https://github.com/graemeg/lazarus and press the download button.
Thanks, but I only need Online Package Manager. I am using Lazarus 1.6 FCC 3.0.0.
If 'Lazarus' means 'Lazarus trunk' then: yes.OPM is part of Lazarus. There is no standalone download.Yes, I saw the wiki, but I don't use SVN, so, I need a link to a for a zip if it is posible.ftp://ftp.freepascal.org/pub/lazarus/snapshots/lazarus-1.7-54258-20170224-src.zip
or better yet (in order to not stress the ftp server), surf to https://github.com/graemeg/lazarus and press the download button.
Thanks, but I only need Online Package Manager. I am using Lazarus 1.6 FCC 3.0.0.
Yes you understood correctly.It's implemented in trunk. Just right click the tree, then save/load the ini file.
But there should be a possibility to tell OPM where this (kind-of-)ini file is located. (name and path)
This way it would be possible to sync the ini-file automatically by Dropbox or GooglDrive etc.
BTW... is there a possibility that OPM updates itself in an other way than a SVN download.Unfortunately no. It's in the todo list though.
Could OPM be a simple package which is updated by OPM itself?
Where do I find the missing package needed to compile OpMan?In Lazarus trunk. The OpMan is now part of Lazarus sources anyway, it is developed together with rest of the trunk.
@JuhaI don't think it's worth ifdef-ing the latest changes. After Lazarus 1.8 is forked, we drop support for older versions. I can upload somewhere a zip with an older OPM, in case somebody insist to stay with the 1.6 series.
I know OpMan has supported older Lazarus versions with IFDEFs. I don't have objections if somebody wants to add IFDEFs but it is quite unusual. If somebody wants to use latest development from trunk, he can download trunk. This applies to ProjectGroups and any other package in trunk as well.
It's a matter of hours or days rather than weeks if I understand the Laz devs correctly.What is a matter of hours or days?
So, the current version of OPM does not work with the latest released version of Lazarus?
I either have to roll back a version of Lazarus or wait till a new version of Lazarus is released?No. Please see my previous post. You can download a version of OPM from march 14. It's basically the same version(no new function added). After march 14 OPM is heavily refactored in attempt to link the two package system together.
I made a minor revision of the spktoolbar package today, uploaded a new zip file to sourceforge (https://sourceforge.net/projects/lazarus-ccr/files/SpkToolbar/spktoolbar-0.1.1.zip/download) and updated the json with the new zip file name and the new version number (0.1.1). I updated Lazarus trunk to get the current OPM and set it up to check for updates every few minutes. But now that half a day has passed OPM still displays version 0.1.0 as being the most up-to-date version - it should be 0.1.1. GetMem, did I do something wrong?After a quick debug it turn out that the JSON is invalid. I run it through a validator, I believe you accidentally deleted the coma after the "DownloadZipURL" line(see image).
BTW: If I right-click in OPM on "package info" of any package I can select an option to "show json". I'd expect to see the json of this particular package, but the function shows the jsons of all packages. Would it be possible to filter the list such that only the json of the clicked package is displayed?Initially the "show json" was meant for debugging purposes, but I forget to remove it. :-[ I don't know if it's useful for other things, but I can add the filter if you like.
@ThaddyThank you!
Just an aside: I am getting to like it... :)
I believe you accidentally deleted the coma after the "DownloadZipURL" line(see image).:-[ The good thing is: I'll never make this error again
But the bad thing is: It does not seem to fix the problem. I uploaded the corrected update.json file about an hour ago, but OPM still displays the old version 0.1.0Yes, apparently the latest attempt to unify the two package system broke something. I'm gonna fix the issue tomorrow, because it's late here.
BTW: What is the "repository filename"?The name of the zipped package in the Lazarus repository.
however in the "update" column instead of "-" you should see the update version taken from "update_spktoolbar.json". It works fine for me, the json is downloaded, parsed and the value is displayed correctly in the tree(screenshot).And this happens because my system is "up to date"?
@wpIf all you can see in the update column is "-" then is a bug. I thought I fixed today, but apparently not.
And this happens because my system is "up to date"?
I have an older version of OPM. On opening it updated spktoolbar to V0.1.1.0. So no problems with the package version, location, JSON etc.Quote@wpIf all you can see in the update column is "-" then is a bug. I thought I fixed today, but apparently not.
And this happens because my system is "up to date"?
PS: Can somebody else install SpkToolbar? After a rebuild + a few minutes wait, is the update column empty? Thanks in advance for testing.
Thank you @minesadorada. In the past the update feature worked well. It was extensively tested by you and others. However after march 14, OPM went through a heavy refactoring which caused the latest bug. I fixed the bug today(or at least I thought I did), however still not works for @wp. I cannot decide is a specific setting in @wp's computer or a general bug. This is why I was hoping somebody else with the latest trunk can run a few tests. Anyway thanks for your feedback.Sorry @GetMem, OPM still won't compile after I update fpc trunk and lazarus trunk to latest builds. It will be a path conflict on my system I expect, but I can't seem to track it down. I thought it might be useful to isolate the error to the OPM code rather than anything else.
@minesadorada
Sorry @GetMem, OPM still won't compile after I update fpc trunk and lazarus trunk to latest builds. It will be a path conflict on my system I expect, but I can't seem to track it down. I thought it might be useful to isolate the error to the OPM code rather than anything else.
Good luck with your bug-busting!
{
"UpdatePackageData" : {
"DisableInOPM" : false,
"DownloadZipURL" : "https://sourceforge.net/projects/lazarus-ccr/files/FPSpreadsheet/fpspreadsheet-1.8.2.zip/download",
"Name" : "fpspreadsheet"
},
"UpdatePackageFiles" : [
{
"ForceNotify" : false,
"InternalVersion" : 1,
"Name" : "laz_fpspreadsheet.lpk",
"Version" : "1.8.2.0"
},
{
"ForceNotify" : false,
"InternalVersion" : 1,
"Name" : "laz_fpspreadsheetexport_visual.lpk",
"Version" : "1.8.2.0"
},
{
"ForceNotify" : false,
"InternalVersion" : 1,
"Name" : "laz_fpspreadsheet_visual.lpk",
"Version" : "1.8.2.0"
}
]
}
Why can't it also look for my update json file and get the current release version number and display it? I think this is the main source of my confusion.After I saw your screen shot it hit me. The installed version is bigger then the one available for update, so OPM doesn't display it since technically it's not an update. I thought this is logical but I was wrong. Fixed in r54616. Thanks @wp for the usual help.
Yes, sounds promising. But my development version still does not show the update version number.This is strange...I will investigate further.
I'm aware that the update column/button is somewhat confusing. Initially I only wanted a central repository + a tool to easily update the repository. Unfortunately this raises a few security issues...I was against this illogical mixture of different design ideas already before you implemented it.
@JuhaManninenIf needed, I can remove it in a few minutes. I only need to hide the update column/button, prevent the update thread to start, hide a few item in the option dialog and that's all there is to it. However it would be a shame, I spent way to much time to implement it and other people to test it. It works reasonably well, few issues still need to be fixed though. It's only confusing until you read the wiki page, I will also add a video soon where I will try to explain the update system in details. For now we should focus our effort to link the two package system together. This should be optional though, some of the developers did not like the idea. I also saw that @Joost is working on fppkg, it would be interesting to include some of the features of fppkg into OPM, like the possibility to install fpc packages too?
It is still not too late to remove this confusing update feature. The OPM would become logical, straightforward, simple and intuitive.
As a last attempt please try the following...No chance... Same issue.
i tried OPM with Lazarus trunk and it worked like i expected.I'm glad it's working. :)
Synchronizing different Lazarus installations with the same packages works like a charm. Some clicks and a cup of coffee later its done.
But I've got a handful of unofficial or paid packages and want to install them in the same way. Is there any possibility to include my own packages in the OPM install process?Support for private repositories it's not fully implemented yet. However if you don't mind concatenate a few JSONs, you can create your own private repository. Please do the following:
It would save a lot of time installing packages if there are some conveniant options.
Support for private repositories it's not fully implemented yet. However if you don't mind concatenate a few JSONs, you can create your own private repository. Please do the following:
1. Create one or more repository package. OPM will generate for each package a .zip and a .json file.
2. Concatenate the JSONs and create a single big JSON. Rename it to packagelist.json
3. Copy all the zip files and the packagelist.json to your server.
4. Set up the address for the private repository
5. Select the remote repository in the option dialog
PS: I decided to make a small video, hope it helps: https://youtu.be/oxCArRUiKm8
Hi GetMem, I've optimized the speed and functionality of the Lazarus Packages website.I go to http://packages.lazarus-ide.org
Download it here:
https://github.com/lazarusccr/LazarusPackagesRepository
I've optimized the speed and functionality of the Lazarus Packages website.Thank you! It's indeed faster.
Now:
- It uses Bootstrap 4 instead of Material Design Lite (MDL is really slower)
- It uses AngularJS to fill the site and do the search / get the json file
Fixes:
- If any field is empty is not shown
- The categories that are not used are not displayed, and if you add new categories are added automatically (get categories from JSON)
- It shows the Home Page of each package
- The search and categories are separated, so you can pick a category and do a search in that category or simply filter by category or search independently
I go to http://packages.lazarus-ide.org and no any picture there. If picture eat bandwidths too much , maybe we can store pictures somewhere else, such in github or sourceforge (used as pics storage). I think one picture will talks more better than 500 words of description.
Hi lainz,
Thank you! It's indeed faster.
I updated the files. I noticed the license is truncated in a few places(ex: ACS - Audio Components Suite). Is this intentional? I also left the old one for a few days for comparison:
New: http://packages.lazarus-ide.org/
Old: http://packages.lazarus-ide.org/old
Please test!
Edit: all these changes are now on the repository, just download it again. If the const doesn't work just change it in order to work with http and https.Updated. Thanks again for your help @lainz.
QuoteEdit: all these changes are now on the repository, just download it again. If the const doesn't work just change it in order to work with http and https.Updated. Thanks again for your help @lainz.
Hi GetMem, I've added a small but useful thing to this website, is search highlight, so the text anyone inputs in the search field will be highlighted in each component result:I updated the files. Thank you!
https://github.com/lazarusccr/LazarusPackagesRepository
A note: the search will look somewhat slower than without the highlight, the plugin is not doing the page slow, but I've set 250 milliseconds between the last character you type before triggering the search, so it in fact uses less resources, and the highlighter can be used with no problems with words of any length.I see no noticeable difference in speed, so everything is ok. It's a useful feature.
From now on is possible to uninstall one or more packages directly from OPM(r. 54908).Much appreciated feature. Thank you! ;)
LazSerial should be updated to v0.2 from https://github.com/JurassicPork/TLazSerial. The old v0.1 version found in OPM has conflict with Synapse (although it can be easily fixed by hand).Updated.
Web Service Toolkit has too many compilation errors to fix by hand. Solved using CodeTyphon version converted with ct2laz.It works fine for me(Lazarus trunk/FPC 3.0.2). I don't mind replacing with your version if it compiles with Laz 1.8/Trunk. Can you please upload somewhere the zip file?
Great work! I really like OPM and I am very happy to see it becoming part of Lazarus 8)Thank you.
Web Service Toolkit has too many compilation errors to fix by hand. Solved using CodeTyphon version converted with ct2laz.Doesn't compile here either. First error:
@JuhaManninenI did. A few month ago I took the trunk version from Inoussa's webpage and created the package for OPM. I did not modify the version number(1.6) since officially there is no new release. The WST from OPM compiles with Laz 1.8/Trunk, FPC 3.0.2, Win7.
BTW, who made the WebServiceToolkit package for OPM? I don't think Inoussa made it.
The WST from OPM compiles with Laz 1.8/Trunk, FPC 3.0.2, Win7.I tested with FPC trunk. I will test with FPC 3.0.2 later.
Thank you so much. Less manual work for me in the future. ::)QuoteLazSerial should be updated to v0.2 from https://github.com/JurassicPork/TLazSerial. The old v0.1 version found in OPM has conflict with Synapse (although it can be easily fixed by hand).Updated.
Let me check first how that trunk that Juha mentioned behaves with what I got, and if I can catch some time next week then I will try to provide a patch. If FPC version is suspected to be guilty, then it would really help if someone determines what version breaks the compilation. I would like to maintain compatibility with current FPC 3.0.2 if possible with some ifdefs.QuoteWeb Service Toolkit has too many compilation errors to fix by hand. Solved using CodeTyphon version converted with ct2laz.It works fine for me(Lazarus trunk/FPC 3.0.2). I don't mind replacing with your version if it compiles with Laz 1.8/Trunk. Can you please upload somewhere the zip file?
Huh, this might turn to be harder then I suspected. I had different error...Web Service Toolkit has too many compilation errors to fix by hand. Solved using CodeTyphon version converted with ct2laz.Doesn't compile here either. First error:
semaphore.pas(83,18) Error: identifier idents no member "SemaphoreInit"
I downloaded then ifdef-ed the latest version. It should be ok now. Tested with:It does not work with FPC trunk on any OS except for Windows because unit semaphore in WST has {$DEFINE FPC_TM}.
- FPC 3.0.0, FPC 3.0.2, FPC trunk
- Lazarus 1.8, Lazarus trunk
- win32/64, gtk2, carbon
@JuhaI'm not planning to fork or maintain any other package, it's indeed a waste of resources. However I don't like when packages from OPM does not work, it looks like OPM is broken. This is why sometimes(rarely) I do make small modification, especially when packages are no longer maintained. The modification are almost always IFDEFS to make the package compatible with the latest Lazarus/FPC versions. In this particular case(WST) time is in our side, since the issue affect only FPC trunk users.
Now I am worried that you people essentially fork the WST project and maintain a competing OPM version. It is waste of resources. In some situations a fork is good but not in this situation, as apparently the official maintainer is busy or tired. The OPM fork does not even use revision control which makes things worse.
I guess all people involved (myself, GetMem, Avra) have commit rights to CCR. (?)AFAIK I don't have commit rights.
Fixes can be backported from CodeTyphon as much as needed. That is the beauty of FOSS (Free and Open Source Software).I don't use CodeTyphon, so I hope @Avra will backport it. I will add the backported version to OPM.
This is why sometimes(rarely) I do make small modification, especially when packages are no longer maintained.Yes, that is already forking because the changes do not go to the original project.
I don't use CodeTyphon, so I hope @Avra will backport it. I will add the backported version to OPM.Backports must go to the actual project in CCR. Then it can be used for OPM. I can commit to CCR if somebody without commit rights provides patches.
That was my initial plan hopefully scheduled for next week.QuoteI don't use CodeTyphon, so I hope @Avra will backport it. I will add the backported version to OPM.Backports must go to the actual project in CCR. Then it can be used for OPM.
I can commit to CCR if somebody without commit rights provides patches.CCR is in Mantis, so maybe I should go that path? If not for any reason, then it is not a problem for me to send you patches.
@GetMem: To avoid duplicate work please send me ifdefed version to avra at writeme dot com.I downloaded then ifdef-ed the latest version. It should be ok now. Tested with:It does not work with FPC trunk on any OS except for Windows because unit semaphore in WST has {$DEFINE FPC_TM}.
- FPC 3.0.0, FPC 3.0.2, FPC trunk
- Lazarus 1.8, Lazarus trunk
- win32/64, gtk2, carbon
For Windows it is not defined for some reason.
Then the code uses TThreadManager which I guess has changed a lot in FPC trunk resulting many errors.
@avraIt's already in the central repository. Just open OPM, check WST then click the download button. Apparently I only solved just part of the issues. It works on windows with FPC trunk, but not on the other platforms.
To avoid duplicate work please send me ifdefed version to avra at writeme dot com.
Of course, silly me! :D %) :DQuote@avraIt's already in the central repository. Just open OPM, check WST then click the download button.
To avoid duplicate work please send me ifdefed version to avra at writeme dot com.
Apparently I only solved just part of the issues. It works on windows with FPC trunk, but not on the other platforms.Can anyone confirm that WST works on non-windows platforms with FPC 3.0.2 or older?
CCR is in Mantis, so maybe I should go that path? If not for any reason, then it is not a problem for me to send you patches.Both ways suit me.
@Juha: It is not clear to me if you have these errors trying to install CT version on FPC trunk only on non Windows OS, or you have it also on Windows? It works for me on Windows. Haven't tested elsewhere.I tested only on Linux. By looking at code in semaphore.pas I guessed it works on Windows but not elsewhere:
Can anyone confirm that WST works on non-windows platforms with FPC 3.0.2 or older?Well, trunk WST will work only with FPC from Sep 5 2016 or newer because it uses at least TPasSourcePos introduced in this patch:
Well, trunk WST will work only with FPC from Sep 5 2016 or newer because it uses at least TPasSourcePos introduced in this patch:No it doesn't. I just searched WST trunk sources and it was not there.
https://github.com/graemeg/freepascal/commit/37aa4c79e1ab81558cdfac05090309c2e2e1dc25
Does anyone have an idea how to at least aproximatelly detect FPC version for a compile message suggestion to install older WST?Detecting FPC trunk / FPC 3.02 / FPC 3.0 should be enough. It is reasonable if the WST found in OPM supports them.
@avraI don't think it's possible to detect specific revision numbers, like the one from Sep 5 2016(r. 34429), however a close approximation can be done like this(you can refine it more to detect 3.0.0, etc...):
Does anyone have an idea how to at least aproximatelly detect FPC version?
I don't think it's possible to detect specific revision numbersAnd it is not needed either. Supporting trunk always means the latest revision of trunk. Trying to support all intermediate revisions would be a mess.
Check again. I was just a little ahead of time. 8)Well, trunk WST will work only with FPC from Sep 5 2016 or newer because it uses at least TPasSourcePos introduced in this patch:No it doesn't. I just searched WST trunk sources and it was not there.
https://github.com/graemeg/freepascal/commit/37aa4c79e1ab81558cdfac05090309c2e2e1dc25
TPasSourcePos is part of Pascal parser fcl-passrc. WST does not parse Pascal code.
Check again. I was just a little ahead of time. 8)Ok, right. Inoussa has committed it.
https://sourceforge.net/p/lazarus-ccr/svn/HEAD/tree/wst/trunk/ws_helper/wsdl_parser.pas#l855
Anyway, I have now tested WST trunk with FPC 3.0.2 + Lazarus fixes_1_8 branch and it compiles well.I tested on 1.6.4 + 3.0.2 from Manjaro 64bit repo and as expected it doesn't work because of that 9 months old patch. So newer Lazarus is needed, like yours. This is why I would like to show compile message to old Lazarus users that they need to use older WST. Otherwise they might be puzzled why it doesn't work.
I will now see how this patched WST in TrunkAll behaves on Linux...Well, there were semaphore problems on Linux as Juha has already reported, so I have backported CT fix (which I don't like that much but in lack of a better one it will have to do for now). This is the only problem on TrunkAll in Manjaro64 which is now fixed with this CT backport, so I checked when this breaking change was introduced:
I will wait until Inoussa applies the patch, then I will add the package to the main repository.Yes, I also think that would be the way to go.
I will wait until Inoussa applies the patch, then I will add the package to the main repository.Inoussa has just told me that he applied the patch. Can't wait to test it. :)
Inoussa has just told me that he applied the patch. Can't wait to test it. :)Done. Added to the main repository. Please test!
I know, the implementation avl tree uses x86 assembler, in a useless manner:it doesn't (hardly) optimize.You mean virtual treeview, right.
Well, I tested and found lots of problems in WST trunk. In order to avoid hijacking this thread again I will continue WST patch discussion here:I will wait until Inoussa applies the patch, then I will add the package to the main repository.Inoussa has just told me that he applied the patch. Can't wait to test it. :)
Thanks back to you. And the updateJson is stored here: https://sourceforge.net/projects/lazarus-ccr/files/chemtext/OPM/update_ChemText.json/downloadDone. Thank you. I ran a few test the update works well, however the lpk version is still 1.0 instead of 1.1 after update.
[EDIT]@Juha refactored/renamed a few class so the structure of the update json has also changed. It should work without any issues.
BTW - I saw that the structure of the updateJSON has changed. There's node "UpdateLazPackages" now, instead of "UpdatePackageFiles". Is this of any relevance for me?
Well, I tested and found lots of problems in WST trunk. In order to avoid hijacking this thread again I will continue WST patch discussion here:I will run a few tests next week.
http://forum.lazarus.freepascal.org/index.php/topic,24519.msg250764.html#msg250764
It would be nice if someone else can confirm my findings. :-\
I ran a few test the update works well, however the lpk version is still 1.0 instead of 1.1 after update.Thanks for notifying me. Too many steps involved... Should be fixed now (version 0.1.2).
Thanks for notifying me. Too many steps involved... Should be fixed now (version 0.1.2).It works fine now. I also updated the package from the main repository to the latest version 0.1.2.
@Juha refactored/renamed a few class so the structure of the update json has also changed. It should work without any issues.Are the changes backward-compatible with the original spec?
Are the changes backward-compatible with the original spec?Yes. You don't have to modify the old json files.
Talking about NuGet ... can somebody please tell me how it manages the packages?
I understood it has a centralized place for them but who is allowed to add / remove / update packages?
It has server side SW which enables interactive feedback from users.
It would be useful in our system, too, but will not be implemented initially for sure.
Users do:
https://www.nuget.org/users/account/LogOn?ReturnUrl=%2Faccount
Register and you get access to it.
PS: I also post a list with available packages, if somebody knows a package that is not in the list, please let me know.
Indy
NOTE: To solve "Circular unit reference" problem, IdStream.pas is spilt to IdStream_int.inc, IdStream_imp.inc and add to IdGlobal.pasUnfortunately the CT package system are no longer compatible with Lazarus, so I had to convert it back. The good thing is they version always work on every platform. If you wish to study the modifications, I can upload the source somewhere.
1. In order to install indy, you have to compile it twice
more over when you install another package and rebuild Lazarus the same "Cannot find IdStreamVCL error appears".
To overcome this problem the guys from CT(fork of Lazarus) have slightly modified the source code. You can find the following comment in the info.txt file:QuoteNOTE: To solve "Circular unit reference" problem, IdStream.pas is spilt to IdStream_int.inc, IdStream_imp.inc and add to IdGlobal.pas
Unfortunately the CT package system are no longer compatible with Lazarus, so I had to convert it back. The good thing is they version always work on every platform. If you wish to study the modifications, I can upload the source somewhere.
2. Submitting a new package to the main repository is quite simple. All you have to do is start OPM from the main menu(Lazarus), select the package directory and press the submit button. However Indy is a special case and as you can see, a few extra step is needed. Since you're not a freepascal/lazarus user, I did all the modification you suggested. The version in the main repository is slightly older(march 08, revision number: 5403). Please see attached image, hope everything is ok. I plan to add a newer version soon.
Which I never understood why, and nobody ever explained it to me.Because nobody knows for sure. According to some is a bug in the package system, according to others is a circular reference issue. Personally I did not study the bug, all I can say the CT version works well, so I have to believe them when they say is a circular reference issue. Why it works with Delphi and not with Lazarus is a mystery to me. You can download the CT zip from here: https://drive.google.com/open?id=0B9Me_c5onmWoeGZWYXhkOVB6Sk0
That doesn't make sense to me, either, since IdStreamVCL is referenced in indylaz.pas, same as IdStream. Could it be because IdStreamVCL is listed before IdStream instead of after?Unfortunately changing the order in the lpk does not help.
Is that the only thing that is causing the double-compile requirement, or are there other issues?No other issues AFAIK.
Thanks for that. But I do need to be able to maintain it myself in the long run.Yes, this would be the ideal solution. The update feature removes the workload from the central repository and pass it to the package maintainers, this way making the whole system sustainable in the long run.
For instance, now that it is in OPM, I need to know what the zip structure looks like so I can match it in future updates, right?OPM is very permissive, you can add/remove/modify files inside the zip, just don't change the relative path to the indylaz.lpk or don't rename the lpk itself. The current version inside the main repository is just a temporary solution, until the double-compile requirement is eliminated in an "official" way. I mean you can add back the changes to Indy trunk.
And I'll have to setup an update JSON for new zips. There is actually a zip generated nightly, but it has a version number in the filename, is that OK or does the filename need to be static for OPM? Or just update the JSON every time there is a new zip filename?You should update the json every time there is a new zip. The json structure is very simple, all you have to do is change the "DownloadZipURL" the "Version" item, the second one is not mandatory. Please read here: http://wiki.freepascal.org/Online_Package_Manager#Create_JSON_for_updates . I suppose the update of the json file can be easily automated when the nightly zip is created?
Because nobody knows for sure. According to some is a bug in the package system, according to others is a circular reference issue. Personally I did not study the bug, all I can say the CT version works well, so I have to believe them when they say is a circular reference issue. Why it works with Delphi and not with Lazarus is a mystery to me. You can download the CT zip from here: https://drive.google.com/open?id=0B9Me_c5onmWoeGZWYXhkOVB6Sk0
OPM is very permissive, you can add/remove/modify files inside the zip, just don't change the relative path to the indylaz.lpk or don't rename the lpk itself.
You should update the json every time there is a new zip.
I suppose the update of the json file can be easily automated when the nightly zip is created?
Is that the same zip that is in the OPM repository right now?Yes.
So, CT basically just eliminated the IdStream... units completely, moving the relevant code into the IdGlobal unit, and removed all references to IdStream... from other units. I can do the same in the main Indy release (I have already written the code to do so, but I haven't checked it in yet).That would be great. Thanks.
Is the Indy package that is in OPM right now based on the CT zip?The CT release and the zip in the OPM basically are the same, except some naming convension(ex: pl_indylaz instead of indylaz) and some difference between extensions(ex: cpk instead of lpk).
If I release an update zip for OPM, does it need to preserve the current folder structure? Or can the entire content of the zip be different as long as indylaz.lpk is in the same location as now?Feel free to make any modification you like, even change the location of indylaz.lpk if necessary. When the new zip is ready, I can add it again to OPM, this need to be done only once, after that the update will work without any issues. If it's possible please leave the current CT icons/pngs(component palette), the icons from the trunk are old, 16 bit colour(see screenshot).
+1 :DQuoteSo, CT basically just eliminated the IdStream... units completely, moving the relevant code into the IdGlobal unit, and removed all references to IdStream... from other units. I can do the same in the main Indy release (I have already written the code to do so, but I haven't checked it in yet).That would be great. Thanks.
1. In order to install indy, you have to compile it twice
Which I never understood why, and nobody ever explained it to me.
Probably FPC compiler got confused by same name used in include file in multiple paths. This should be somewhat fixed in the FPC trunk.Unfortunately is not fixed. Lazarus Trunk + FPC Trunk(1 compile + install).
What "circular unit reference" are they referring to? IdStream references IdStreamVCL, but not the other way around.
Unfortunately is not fixed. Lazarus Trunk + FPC Trunk(1 compile + install).
If you pass -va you can sometimes see more reason for recompiling.Thanks for the tip. In this case there is no more useful info, just this:
If compiling on Windows, it would be interesting to see what SysInternals Process Monitor has to say about where FPC/Lazarus is actually looking for IdStreamVCL.pas when it can't be found.After applying 3-4 filters, I managed to get some info. The screenshot contains a few nonsense(red underlines). I tend to believe is a bug in the package system after all, not a circular reference issue.
I have attached modified (from original) indy package file in this post, which I have successfully used for full IDE build many times without need for rebuild the indy package.
IMHO, your OPM should be part of Lazarus, not only a lpk.
I use Lazarus 1.2.6 32/64 and FPC 2.6.4/2.7.1 32/64 on
OPM is part of lazarus in 1.8 release ;)
But maybe it was already there, before installing OPM, so sorry for the proposition.No need to be sorry.
But the /lib folder is missing (needed for dynamically load libraries). Was it wanted ?Binaries are automatically removed by OPM to prevent infection, this is especially important under windows. Since uos is a well known package, I will add the libraries back soon and the unit folder too. Thanks for the feedback.
The size of compressed /lib is +- 5 megas, with libraries for Linux 64/32, Windows 64/32, FreeBSD 64/32, MacOSX 32, RaspberryPi.
And to be complete, the folder /units is missing too. (needed for compilation of the demos otherwise --> annoying error message while compiling).
afaik the 'standalone' package provided is for those that are using lazarus 1.6.xTrue. Previous version of Lazarus are not supported at all.
Binaries are automatically removed by OPM to prevent infection, this is especially important under windows. Since uos is a well known package, I will add the libraries back soon and the unit folder too. Thanks for the feedback.
are not supported at all.
@Fred vS
Done. The whole directory structure should be there now. Please test. Thank you.
Today we breake the "magic" barrier. There is more then 100 packages in the main repository. It was much harder then I initially thought...not so many Lazarus packages out there.Congratulations!
How many of them are provided by the actual package author.
@JuhaManninenQuoteHow many of them are provided by the actual package author.
... I estimate that 40% of all packages are abandoned or not maintained properly. I will try to contact the remaining 30% as time permits, but some of them prefer not to collaborate (like WTS) which is perfectly fine. We cannot force package authors to join in if they don't want to.
That is why i appreciate the possibility to be able to use your own 'repository'. Some packages are indeed unmaintained/abandoned or authors have little interest for OPM. Let alone adding private components that unfortunately cannot always be made public.The possibility to add private repositories is just around the corner. I need a few more weeks though.
When you finish contacting authors, can you publish a list of the packages needing maintainers?Yes.
Maybe an idea similar to what Debian does. I just linked it below:Thank you for the links. It's a good idea. Let's hope others will join in.
... but some of them prefer not to collaborate(like WTS) which is perfectly fine.
Hi lainz,
That is correct. If you did not use InternalVersion = 2 in the past, the notification should work fine. If it's not working please let me know.
Thanks. It's working on 1.8RC3. I've tested on 1.6 and was not working, for that I asked.
Thanks. It's working on 1.8RC3. I've tested on 1.6 and was not working, for that I asked.
Is it working? I could install and use it. But after closing Lazarus, the "Online Package Manager" menu item disappears. In "Install Package" list, it is shown as "marked for installation but not installed.
PS.: Linux (*.deb) 1.8RC3.
Should I report this as a bug in the bugtracker?
Should I report this as a bug in the bugtracker?
I think is not neccessary, since the main developer check this forum regularly.
Is it working? But after closing Lazarus, the "Online Package Manager" menu item disappears. In "Install Package" list, it is shown as "marked for installation but not installedIf it's shown as "marked for installation" you have to rebuild Lazarus first. If you already done that, most likely you have a problem with the Lazarus installation not OPM itself. Please try to rebuild Lazarus with option "Clean all". If I remember correctly, not so long ago you had some issues with the component palette, it disappeared without any reason. Maybe the two are related and there is a broken config file in your system. I want to take every OPM related bug seriously, but in this particular case I have a feeling that the issue is somewhere else. If you still consider is an OPM related bug, please tell me the exact linux distro, so I can install it in a VM and run a few tests. Thank you!
- Clicking Help button does nothing.True. Replaced OpenDocument with OpenURL in r. 55648. Thanks.
- The bug with the Help button is probably because you're using OpenDocument. Use OpenURL instead. The help link is not a "document". Check other uses of OpenDocument.
- Don't exclude .json files by default. That's like excluding .xml. I couldn't figure out why the contents of the OPM .zip differed in size from my .zip so I went down the list file by file and discovered that .json files were left out.Fixed in r. 55648. In order for the changes to take effect you have to click the "Restore Defaults" button(OPM-->Options).
- Do exclude by default .so, .dll, .dylib. See .gitignore for other examples of oddball files that sometimes creep into folders. And some packages uses "units" instead of "lib" so exclude that by default too.
- Clicking on a package's URL does nothing. But double-clicking does. This is a non-standard way of handling an underlined link that looks like an HTML link.Fixed in r. 55649. Thanks.
- The initial order of the packages appears to be alphabetic, but then I see CodesigningHelper between LazBarcodes and LazRichView.See attachment1(PackageOrder.png).
- Only the packages and rating columns are non-blank (and all ratings are 5 stars). Shouldn't there be something in the Repository and Status columns, or am I reading that wrong?In order to see detailed info about the package, you have to expand the tree(nodes). The ratings are disabled(grayed) be default. When you rate a package the stars change color. See attachment2(Rating_Authors.png).
- Shouldn't the author and license info be listed when a package is expanded? I don't see this anywhere.
- Another odd UI bug: At first I thought the folder button on the "Create repository package" dialog was broken, because you have to click it twice. Something wrong there.It works fine at my side with a single click. It's a standard TDirectoryEdit component. Can you please test if TDirectoryEdit works on your computer? In a separate project.
The wiki screenshot of "Create repository package" dialog looks nothing like what I see. I don't see any place to edit widgetsets supported, etc. So I guess changes need to be made in the resulting .json file manually. But then how to get back into the dialog to click Submit? And how to test the .json short of submitting it first?You have to select a package folder first, to be more precise the root directory of the package. After that all available *.lpk's are listed, with all the information available. See attachment3(CreatePackage.png)
- Scrolling the main list doesn't work right. On a MacBook, scrolling is normally done via the trackpad. This is much faster than moving the mouse over to the scroll bar. But in the OPM control, scrolling with the trackpad just makes it jiggle.Unfortunately I don't have a trackpad just a regular mouse so I cannot test(IMac). OPM uses VirtualStringTree(VST) to display the list of packages so it's probably a VST bug. I would like to mention that in my experience many components are broken under carbon. For example listview is basically unusable(please see the following thread: http://forum.lazarus.freepascal.org/index.php/topic,37581.msg252965.html#msg252965 ). VST works exceptionally well under win32/win64, gtk2 but apparently it has some minor issues under carbon. I will try to fix this issue as soon as possible(I need a trackpad first).
In fact, it seems not related to OPM. After installation and rebuilding, other packages are being marked as "not installed - marked for installation". Maybe a Lazarus 1.8RC3 bug?
Fixed in r. 55649. Thanks.
I can't find a way to update OPM inside OPM. Isn't that a rather obvious feature?Yes and no. It was possible in the past to update OPM inside OPM, but sometimes trunk development breaks code. I will add the feature again.
In the Create repository package dialog, there's something wrong with the focus. If I click in the lower (blank) panel, then I can click the folder button only once to bring up the selection dialog. I use this all the time, so it works fine on Mac, just not in OPM.I will address those issues next week. What about the other ones? Can you see the Authors, Descriptions? Is it a bug?
Also, in the dialog, the Cancel button should not be at the far right. See Apple guidelines for the default button placement.
Thanks to Juha Manninen finally lazarus is fully package happy with me. One should use "startlazarus" and not "lazarus-ide" to start the ide.Ok. I'm glad it's working. :)
May I ask how many time it take to a package be included in the OPM list? Is there any addition protocol out there?Usually 24 h. max. Just create a repository package and send it via OPM. Please read more here: http://wiki.freepascal.org/Online_Package_Manager#Create_repository_package
Also, is it a bug? Damn dark theme.Do you use some kind of theme manager? I never saw OPM that ugly :D. Next week, I will add a new dialog where the user can choose colors. Can you please post a few screenshot with other lazarus dialogs? Options for example, or Install/Uninstall packages.
Do you use some kind of theme manager?
I never saw OPM that ugly :D. Next week, I will add a new dialog where the user can choose colors. Can you please post a few screenshot with other lazarus dialogs? Options for example, or Install/Uninstall packages.
I did submit an update to an existing package in OPM through the OPM interface over 48 hrs ago but it has not been updated on the package list.Done. Please test. Sorry for the delay.
Just wanted to inform you incase you are not aware.
The package name is HashLib.
nice work you are doing with OPM, it is very well appreciated.Thank you!
Hi Xor-el,
Done. Please test. Sorry for the delay.
@ThaddyOk.
The main problem is I don't have ARM-linux to test. Maybe a virtual machine? You should remove any HasMMX reference(like you did in the above example) and build OPM. VirtualStringTree should work without MMX. Send me a patch and I will more then happy to apply it.
@Thaddy
Please attach the patch file, because my tortoise svn don't like copy/paste. You can zip-it if you like.
GetMem, safe commits can still be backported to fixes_1_8 branch.Thanks @Juha. What are the exact steps I need to take? From now on(I need an hours max) updating OPM will be possible through OPM itself, so the users don't need trunk in order to get the latest changes.
The ARM fix looks safe, as well as some other recent commits you made for OPM.
There will be no more release candidates, thus regressions should not be created.
The ARM fix is important because I have understood Lazarus otherwise works well there.
It should be included in the other VST versions, too.
What are the exact steps I need to take?Just copy the revision number and message here:
The ARM fix looks safe, as well as some other recent commits you made for OPM.The patch fixed not only arm, but also other platforms. It renders pure pascal code. I followed up on my own advise and reversed the logic.
Note both asm optimizations are pretty useless on performance with current optimizations in FPC. It's about less than ~1% in -O4. I tested that too...Those asm optimizations are old, I mean very old(delphi 6-7 era AFAIK). We just "inherited" them when @Luiz ported VST.
So actually the asm code should be removed. I will provide such a patch after 3.0.4.
We just "inherited" them when @Luiz ported VST.
@PhilQuoteI can't find a way to update OPM inside OPM. Isn't that a rather obvious feature?Yes and no. It was possible in the past to update OPM inside OPM, but sometimes trunk development breaks code. I will add the feature again.
@ThaddySo, should I give you that patch here and now? Can do, will do...It will be pure pascal. (I absolutely love :-* ctrl-y)QuoteNote both asm optimizations are pretty useless on performance with current optimizations in FPC. It's about less than ~1% in -O4. I tested that too...Those asm optimizations are old, I mean very old(delphi 6-7 era AFAIK). We just "inherited" them when @Luiz ported VST.
So actually the asm code should be removed. I will provide such a patch after 3.0.4.
I'll test everything again once I can update OPM into Laz 1.8 RC4.Ok. Thanks. I wasn't able to implement everything.
/home/rafael/svn/onlinepackagemanager/opkman_mainfrm.pas
opkman_mainfrm.pas(847,42) Error: identifier idents no member "UninstallPackage"
OPM updates it self?
OPM updates it self?
OPM updates it self?No. check out Lazarus svn and do a "build lazarus" from the menu. By now I also tested OSX (maybe a struggle -Phil? -but nothing to do with the patch) . Patch works for most (all I tested) platforms now, not just Intel. Note this is Lazarus trunk! Backports are up to managers to allow. Plz report back if it doesn't. Then its my fault 8)
Hi
I have a problem updating BGRAControls through OPM.
yesterday I made code modification in some unit of the package for testing, then ask Lainz to incorporate them. He did that fast (thank again !) and publish a new release.
today, OPM said ther's a new version of bgra, so I check the package, click update button, download goes on, install next, rebuild laz, restart... and ... no changes, I still have my yesterday files.
Am I doing something wrong ?
My config : Laz 1.6.4, OPM 1.0 (says 'up to date' itself)
regards
edit : I didn't notice, but I have the same issue with kcontrol 1.7.0 (can't update to 1.7.1)
I didn't notice, but I have the same issue with kcontrol 1.7.0 (can't update to 1.7.1)The author of Kcontrol has forget to update the actual lpk files. Take a look at the update JSON(Version = 1.7.1.0): https://bitbucket.org/tkweb/kcontrols/raw/ed0be8a985eb4030158356155668ac135e8b782b/laz_opm_update.json . After update the lpk file is still 1.7.0.0, but if you compare the files you can see there is a few differences(screenshot 1).
@mtournayQuoteI didn't notice, but I have the same issue with kcontrol 1.7.0 (can't update to 1.7.1)The author of Kcontrol has forget to update the actual lpk files. Take a look at the update JSON(Version = 1.7.1.0): https://bitbucket.org/tkweb/kcontrols/raw/ed0be8a985eb4030158356155668ac135e8b782b/laz_opm_update.json . After update the lpk file is still 1.7.0.0, but if you compare the files you can see there is a few differences(screenshot 1).
BGRAControls should be the same. Just do a file by file comparison.
I can say I updated the lpk for BGRAControls, is the only thing I did in that commit, and also increasing the internal version of the updates json.Updating to release candidate is a good idea. A lot of fixes since 1.6, however the KControl issue still remains, I have no control on the update.json files.
https://github.com/bgrabitmap/bgracontrols/commit/cccaab260092727ad64b889806a1eede3226817e
I already suggested him to update to the release candidate, where everything OPM related works better.
Much better! Except for font colors I guess. Maybe the problem is in the theme now. Anything else I can do?Let me see what can I do about the font color(it should be white in your case), also the + _(expand/collapse) icons on top right are ugly. Thanks for testing.
Hi, there's now BGRAControls v4.3.2, it has the update feature in the json, but it will be nice if updated in the server of OPM.Somehow I missed your post. I updated BGRAControls in main repository.
https://github.com/bgrabitmap/bgracontrols/releases
I have added OPM into the standard install of fpcupdeluxe (v1.4.0l). Without option not to install it !Thank you @DonAlfredo.
Thanks for a very nice tool.
Although being a new (but very welcome) feature is that perhaps something that could make it into final 1.8 release ?No, only plain bug fixes are backported there now.
No, only plain bug fixes are backported there now.I already suspected as such. No problem.
Merging to 1.8.2 however is an option after some testing.I asked because i was bit worried to have to wait until the end of days to have this feature in a official release (i am aware that we can use trunk, a release is somewhat more convenient though). But /me is stupid, see below.
The good news is OPM will be able to update itself after 1.8 final is out. The critical r54902 is already in merged revisions for 1.8 RC5. So nothing is lost.Aargh !, i feel so stupid. I haven't thought of OPM updating itself, as (also) some things were missing.
In order to test if is a fpc bug or not, please try following code(change Host, Port, UserName and Password)Thank you for your attention. If I literally copy/paste (and change host, ip, user and password) then this is the result:
What kind of proxy do you have?According to IE it's http proxy. Now I am puzzled. It must be something on my side but I don't know what...
According to IE it's http proxy. Now I am puzzled. It must be something on my side but I don't know what...Firewall maybe? Try to add Lazarus to the whitelist.
"Windows Firewall is using your domain settings". Although it seams that domain policy has changed recently, adding exceptions is allowed. Unfortunatelly it didn't help. I give up. Thanks for your effort.QuoteAccording to IE it's http proxy. Now I am puzzled. It must be something on my side but I don't know what...Firewall maybe? Try to add Lazarus to the whitelist.
Download the main repository from here: https://packages.lazarus-ide.org/opm.zip (182 Mb)Thank you so much! :D 8-)
SuggestionOPM has to distinguish between the 3 package type(meta package, new meta package and lazarus package). See attachment. If the meta package icon is yellow, one can confuse it with a lazarus package.
- now we have "yellow box with green +" icons for all old packages
- wish: make it monotone: yellow box. its better.
I was just opening OPM from today's Laz trunk / fpc 3.02 and get the error "Cannot download package list. Error messge: 'Connect to packages.lazarus-ide.org:80 failed'. Trying to do the same with Laz 1.8RC4 works correctly.
1. please delete separate ATScrollbar, it is already inside ATButtons package, i deleted separate repo
2. please update your files for packages: ATButtons [files added/deleted], ATSynEdit, ATSynEdit_Ex, ATGauge, EControl
3. please add Python-for-Lazarus
http://wiki.freepascal.org/Using_Python_in_Lazarus_on_Windows/Linux
Yes, running fine now.QuoteI was just opening OPM from today's Laz trunk / fpc 3.02 and get the error "Cannot download package list. Error messge: 'Connect to packages.lazarus-ide.org:80 failed'. Trying to do the same with Laz 1.8RC4 works correctly.
I did run a few test in three separate computer with Lazarus Trunk/FPC 3.0.2(windows, linux, osx). OPM runs fine. It must be something at your side or perhaps server packages.lazarus-ide.org was down for a short period of time.
good if you moderate "description" lines (e.g. "Python4Lazarus" better -> "Wrapper for Python engine", and many others).OPM reads the description from the lpk files(see image). It's the package maintainer job to give a good description. I changed the value for PythonForLazarus.
I can't make it work. I have started local http server and from browser I can download something like http://localhost/opm.offline/Abbrevia.zip without any problem. Then I have added http://localhost/opm.offline/ as a remote repository and selected it. However now I get error "Cannot download package list. Error message: Unexpected response status code: 404". I did turn off proxy in OPM for this test.Download the main repository from here: https://packages.lazarus-ide.org/opm.zip (182 Mb)Thank you so much! :D 8-)
I will download that from home and then try here. ;) :-X
I can't make it work.This is my mistake, I forgot to include the json file(opm.zip is fixed now). If you don't want to download the whole zip again, I attach the json. Please extract to the same directory. Sorry for the inconvenience.
- ExControls - desc it short like "Visual controls". can you list all controls in desc?I think it is not ok that a package installation system modifies the provided packages in any way. I can understand that the description of many packages is very minimalistic or even non-existent, but it is not GetMem's job to fix this. If you want something to be changed then contact the package author.
- ExDesign - typo and also can you list all?
Can we use OPM as a "library" to build autoupdate functionality to a program?Search for LazAutoUpdate component(OPM), it was designed exactly for this kind of functionality. For more details please contact forum user @minesadorada . He's the author of the package.
And IMO: opkman should moderate these descriptions.I hope you didn't expect me to go through all the packages, test their functionality then write a detailed description. Other then the large amount of work isn't ethical...I mean modifying the description(or any other property) without the consent of the package developer is an asshole thing to do. Perhaps it would be OK to modify those packages that are not maintained, but what if the package developer comes back? Actually I already did modified some of the unmaintained packages and I feel slightly wrong about it.
Linux x64 gtk2 [Ubuntu 16]. Confirm message "do you want to restart IDE" shows below OPM dialog. It's not visible until i alt-tab to IDE.The dialog "do you want to restart the IDE" is called by Lazarus through IDECommand, basically I do:
But you can close Opkman dialog, before calling IDE messagebox. maybe on Linux only.Yes I can do that, but what if the user choose NOT to rebuild Lazarus? OPM is already closed, Lazarus is not rebuilding, is a weird scenario. Perhaps a better solution would be to implement a ecBuildLazarusNoConfirmation, where the confirmation is skipped inside Lazarus. Then I can ask the user from OPM itself, I don't have to rely on the implementation from Lazarus main unit.
@cpicancoQuoteCan we use OPM as a "library" to build autoupdate functionality to a program?Search for LazAutoUpdate component(OPM), it was designed exactly for this kind of functionality. For more details please contact forum user @minesadorada . He's the author of the package.
In good internet connection I can use this feature but if my connection isn't good it can be very painful for me.Where is the timeout delay defined? It should be longer, similar to what browsers and FTP clients have.
Because (I think) time outs very short ...
In good internet connection I can use this feature but if my connection isn't good it can be very painful for me.Where is the timeout delay defined? It should be longer, similar to what browsers and FTP clients have.
Because (I think) time outs very short ...
The json is only 320 KB. 10 sec should be more then enough even with a slow internet connection. Your second screenshot indicates that you have no connection at all. Please check my previous post, it's a good workaround using a local server. You have to download the opm.zip only once.
PS: Nowadays a good internet connection should be something trivial. I also leave in a pretty crappy country, still the internet speed is very good.
tr_escapeThis is obviously a connection problem at your side. How Firefox manage to work in this condition is a mystery to me.
I tried the example project it gives Esocketerrors
Quotetr_escapeThis is obviously a connection problem at your side. How Firefox manage to work in this condition is a mystery to me.
I tried the example project it gives Esocketerrors
Ok. I little looked up the TFPHTTPClient component it designed for single operation for succesful connection, if any trouble happens it wont work.He does not follow this forum as far as I know. If you want something to be done about it, you should file a bugreport here: https://bugs.freepascal.org/view_all_bug_page.php
Thats my problem :)
My advise to component owner create some retry_cnt methods like as redirection.
Also I tried the local web server apache2 it gives some error too. I can download from my webserver but I couldn't unpack step.May I ask how old the computer is? I have a Pentium 4 with XP. Not so long ago I did run a few tests and OPM worked well. It was slow though.
I think online pack man is not good for old PCs.
But I am downloading opm.zip with by firefox there is no connection problemDo you happen to use proxy in your Firefox?
But I am downloading opm.zip with by firefox there is no connection problemDo you happen to use proxy in your Firefox?
@tr_escapeQuoteOk. I little looked up the TFPHTTPClient component it designed for single operation for succesful connection, if any trouble happens it wont work.He does not follow this forum as far as I know. If you want something to be done about it, you should file a bugreport here: https://bugs.freepascal.org/view_all_bug_page.php
Thats my problem :)
My advise to component owner create some retry_cnt methods like as redirection.QuoteAlso I tried the local web server apache2 it gives some error too. I can download from my webserver but I couldn't unpack step.May I ask how old the computer is? I have a Pentium 4 with XP. Not so long ago I did run a few tests and OPM worked well. It was slow though.
I think online pack man is not good for old PCs.
PS: Does somebody else have issues with the connection? With extracting, installing packages?
i do not know if this is the right placeYes, it's the right place.
Would it be possible to assess the functionality of opening in the default OS browser the home page of a package in the package info section with a click on it?I'm not sure what you mean. If you go over the home page link, the text color becames blue, a hint with the link appears. If you click the blue link the page is opened in the default browser(see attachment). This is how it works from day one, except the single click, initially it was double click.
copy to clipboard is good but better would be to open the default browser.
@Thaddy
True. Initially it was double click, but then a lot of people asked for single click. I guess it's just a personal preference.
i am developing a One-Click-Profiler-Addon for the IDE. I would like to know if you allso would add test(alpha/beta) versions to OPM?Yes.
If yes, what information do you need?A link to the zipped package.
Do i have to host the package myself?No. It will be hosted in the main repository. Once you have a stable version and you wish to add an auto-update feature, then you need to host a zip + a json file somewhere. For more info please read this section: http://wiki.freepascal.org/Online_Package_Manager#Create_JSON_for_updates For now I need a temporary link to your package.
Just uploaded first beta of LazProfiler :DGreat! Thanks. I added to the main repository.
@PascalHmm...I still can't see it in OPM.QuoteJust uploaded first beta of LazProfiler :DGreat! Thanks. I added to the main repository.
Hmm...I still can't see it in OPM.Please check again. Should be visible by now.
Yes, thanks! I would have expected a flash as icon as it is new. Or is it only for updated packages?QuoteHmm...I still can't see it in OPM.Please check again. Should be visible by now.
Yes, thanks! I would have expected a flash as icon as it is new. Or is it only for updated packages?By default a flash icon appears in front of a package if:
Hmm...I just uninstalled my addon and reinstalled it by using OPM and it works as expected.I just found out the reason why the install fails. I have many Lazarus environment for testing purposes. Initially I ran my test on a 64 bit Lazarus where it fails. It works fine on 32 bit Lazarus though and I like it. Very nicely done @Pascal! I will run additional tests in the weekend.
I will try a clean checkout later.
I found a bug in your installation recognition. I uninstalled my Addon and OPM still shows "installed".OPM installs the packages to Lazarus config folder not $(LazarusDir)/component folder. This is needed because in some linux distribution the component folder is read only.
I removed the sources from components directory and restarted Lazarus and OPM show "not installed".
No, that's not what i meant! OPM states that LazProfiler is installed but it's not installed. See Screenshots of my previous post.QuoteI found a bug in your installation recognition. I uninstalled my Addon and OPM still shows "installed".OPM installs the packages to Lazarus config folder not $(LazarusDir)/component folder. This is needed because in some linux distribution the component folder is read only.
I removed the sources from components directory and restarted Lazarus and OPM show "not installed".
I did try to install the package to the component folder manually, then with OPM to the config folder. I cannot reproduce the issue. Again I will run additional tests later.
No, that's not what i meant! OPM states that LazProfiler is installed but it's not installed. See Screenshots of my previous post.I did understand the issue, I also saw the screenshots. The problem is I cannot reproduce it myself. After 10 package install/uninstall OPM still behaves correctly. Of course that doesn't mean you findings are not real. I will keep trying.
@pascalOkay, then i did not understand you :)QuoteNo, that's not what i meant! OPM states that LazProfiler is installed but it's not installed. See Screenshots of my previous post.I did understand the issue, I also saw the screenshots. The problem is I cannot reproduce it myself. After 10 package install/uninstall OPM still behaves correctly. Of course that doesn't mean you findings are not real. I will keep trying.
@Pascal
Thanks. I did try your method with no success. The strange thing is I ask the IDE to check if a package is installed or not, so it must be some kind of refresh problem in OPM:
var Package: TIDEPackage; begin for I := 0 to PackageEditingInterface.GetPackageCount - 1 do begin Package := PackageEditingInterface.GetPackages(I); if ExtractFileName(Package.FileName) = ALazarusPkg.Name then begin //package is installed end; end; end;
Once I can reproduce the issue, I will check why the code fails.
I don't know how to contact the developer or where is his main repository. The site linked in the wiki is dead. The CCR site I don't know also who is mantaining it so I'm asking you for this.I don't know who is the original maintainer. I will soon fix the bug in the main repository. Thank you.
I don't know how to contact the developer or where is his main repository. The site linked in the wiki is dead. The CCR site I don't know also who is mantaining it so I'm asking you for this.
I don't know how to contact the developer or where is his main repository. The site linked in the wiki is dead. The CCR site I don't know also who is mantaining it so I'm asking you for this.
Which wiki site are you talking of? The one that I bookmarked (http://wiki.lazarus.freepascal.org/RXfpc) links to the correct CCR repository. It is actively maintained by alexs75, last commit on Nov 14 (this year, of course...).
@lainz
If the package is actively maintained(as @wp mentioned) then please contact the author to fix the bug. I will refresh the package in the main repository, once a fix is available.
I get an AV when opening OPM (r56451).I'm afraid OPM trunk will be unstable for a while. We are linking the two package system together with @Juha. The idea is to make OPM a natural extension of the built in packager. The error you mentioned, was caused by OPM's update feature, I disabled it for a while in r.56459. There may be other issues too.
Can I find out why the VitrualTreeView 5.5.3R1 component is not automatically installed, but only compiled?We made a lot of changes lately to OPM. The packagelist.json from the central repository was also modified. It should work now, please test again.
Only other the icons of the components.
But I think this is already a question not to you, but to developers indy.
again in the repository version of indy 5434.
Why did the version of the trunk disappear? 5440?
Remy Lebeau,
In my projects, indy 5434 does not work correctly.
Indy 5440 worked correctly. Can I get it? (5440 or 5443)
What is posted in OPM is *not* an official release from the Indy team, so it is a little behind.It is from now on. Although the Code Typhon fork looked nice, with high quality icons, in many cases not worked properly as @RDL and others reported before. I decided to add Indy trunk to OPM a week a go(r. 5440). Still a little bit behind, but at least is the official release. @Remy would you consider to change the old icons when time permits(I know you're very busy)?
The current nightly zip at http://indy.fulgan.com/ZIP is rev 5438.
The current SVN trunk is rev 5443.
Also I made a few updates to BGRAControls, if you can upload this new release to the main repository. BTW the external updates feature is working fine.Thank you! I will update it as soon as possible. Now we are trying to link the two package system together. For example, when you add a package dependency to your project, Lazarus will also search for packages in the main repository. At least this is the idea(see attachment). The feature requires a lot of changes both in OPM and the internal Package System. For a while I will be unable to update the central repository.
It is from now on. Although the Code Typhon fork looked nice, with high quality icons, in many cases not worked properly as @RDL and others reported before.
I decided to add Indy trunk to OPM a week a go(r. 5440). Still a little bit behind, but at least is the official release.
@lainzQuoteAlso I made a few updates to BGRAControls, if you can upload this new release to the main repository. BTW the external updates feature is working fine.Thank you! I will update it as soon as possible. Now we are trying to link the two package system together. For example, when you add a package dependency to your project, Lazarus will also search for packages in the main repository. At least this is the idea(see attachment). The feature requires a lot of changes both in OPM and the internal Package System. For a while I will be unable to update the central repository.
I see, now I noticed that the external updates are not working. Just in case is not an intentional change, but I'm sure is because you're working on stuff for the OPM.Yes updates are disabled for a while in Lazarus trunk, with a regular 1.8 install should work fine.
I have a build made with FPCUpDeluxe. I did not remember than updating Lazarus takes a lot of time on an existent installation! But it does it automatically so I don't need to install svn or anything else (No reporting bugs in the bugtracker since a lot of time - almost all fixed btw). Edit: I must buy a SSD.A SSD makes a big difference. Lazarus builds much much faster.
Getting back into theme, the installation of the package BGRAControlsFX from the new requirement menu works fine.Thanks for testing. I'm glad it's working.
I have a question, I several times get an error opening projects when packages are not installed. Maybe this new feature can be used to detect missing dependency and install them instead of throwing a lot of error messages?This is the next step, I hope it will be ready soon.
With the SVN version I had it for some time and there are a lot of obsolete packages that have lost their dependencies or who lack one or two files to settle. I think it would require a small household.
Since v4.4 the components TBCDefaultThemeManager, TBCKeyboard and TBCNumericKeyboard are not installed by default to allow Linux users to get a seamless installation with the Online Package Manager, not installing third party stuff. If you want these components turn on the "Register unit" in the package options for each file (bcdefaulthememanager.pas, bckeyboard.pas, bcnumerickeyboard.pas) then compile and rebuild Lazarus. On Linux you need to install libxtst-dev and libgl-dev first.
I did some changes in new BGRAControls v4.4 so Linux users don't need to install anything to run BGRAControls by default. This is the changelog:Done. Please test.
If you can please update the package in the Online Package Manager so anyone interested can benefit from it.
Done! Working very well, installed bgracontrolsfx with no problems at all.Thank you lainz.
Nice feature. But shouldn't the popup close when I release the SHIFT button?Thanks wp, implemented in r. 56810. When the shift is released, OPM waits a little bit before closing the hint window. This is needed when the user choose to scroll the License/Description memos, or choose to navigate between different lpk files. If the mouse is over the hintform, the form remains visible.
There is a new feature in OPM. If you move the mouse over the meta packages(root node) and hold the SHIFT down, a new hint window will appear. The window will show the license/description of every lazarus package belonging to the current meta package. This is useful because you don't have to expand the tree node to get the data. Please test. As always feedback is more then welcome.Just updated my Laz Trunk install.
Just updated my Laz Trunk install.Thanks for the feedback. I'm glad it's working.
That's a good improvement, and works perfectly for me. It was awkward to see the descriptions before.
Thanks wp. Your findings are very useful! On startup, if OPM is installed, every online package gets "converted" to a package link. When a user opens the "Install/Uninstall packages" dialog, the online package links are automatically added to the "Available for installation" list, except for those that are already installed. I need to do an extra check and verify if the package is not in the user links too. Apparently a user link will be active even after you uninstall the package and most likely you can add it to a project "Required packages" list. I will fix this issue soon. Thanks again.Now I noted another issue with the "Install/uninstall packages" dialog related to the duplicate packages. As you know I am working on fpspreadsheet, trunk version; the release version is offered by OPM. Recently I had to uninstall the visual package of fpspreadsheet-trunk for some reason. When I wanted to install it back via the "Install/uninstall packages" dialog I saw the two duplicate entries, both pointing to the OPM version, but no link to the trunk version any more. So, the only way to reinstall the trunk version is loading the lpk file.
Now I noted another issue with the "Install/uninstall packages" dialog related to the duplicate packages. As you know I am working on fpspreadsheet, trunk version; the release version is offered by OPM. Recently I had to uninstall the visual package of fpspreadsheet-trunk for some reason. When I wanted to install it back via the "Install/uninstall packages" dialog I saw the two duplicate entries, both pointing to the OPM version, but no link to the trunk version any more. So, the only way to reinstall the trunk version is loading the lpk file.I disabled temporarily the online packages from the "Install/Uninstall packages" dialog. Showing online package there is wrong in my opinion, the same is true with local packages in OPM dialog.
I also saw that OPM offers version 1.8.2, but my current release is 1.8.4. Is this due to the temporarily disabled updates that you mentioned somewhere above?Yes. I updated fpspreadsheet in the main repository. Now the default version is 1.8.4
I'm quite fond of the online package manager, it was a huge step forward in my opinion (FWIW).Thanks.
I have a few feature requests though. First I think it should be default in the IDE.It's too late for Lazarus 1.8. Most likely will be default in the next major release.
I would welcome a short description off the package. There is a wiki page, but ...Done.
Hi @GetMem, you can add BGRAControls 4.4.0.3 to repository?Done.
QuoteHi @GetMem, you can add BGRAControls 4.4.0.3 to repository?Done.
Update feature is up and running again from 03 January.
Thanks lainz. You can also check the new requirement dialog(project inspector-->Required Packages-->Add) when you have some free time. You can add Online Packages from there too.
@lainz
Done. Tested both on windows and linux. Works fine.
@lainz
Done. Tested both on windows and linux. Works fine.
@getmem @lainz Tested on macos. Work fine too.@lainz
Done. Tested both on windows and linux. Works fine.
@lainz
I updated rx, but one of the components inside rx crashes the "Component Window"(Ctrl + Alt + P) at lease at my side. Can you please test it?
PS: Tested on Win7(64 bit)/Lazarus Trunk/FPC 3.0.4.
MouseInclient it is not implemented in in 1.8 stable??MouseInClient is not available in 1.8 stable.
but does it work the same?Yes. It should work the same.
And yes, there is a crash with Ctrl + Alt + P.The exception is caused by RX Controls-->TRxViewsPanel. The error message is: "Class FPImageException: Invalid vertical pixel index 23".
Please report the bug to the package maintainer: http://forum.lazarus.freepascal.org/index.php/topic,39919.0.html
Poor GetMem... Isn't this the job of the package maintainer?
{$IF lcl_fullversion >= 1090000}Otherwise rx cannot be compiled in stable 1.8. You can download the latest version with a SVN client from here: https://svn.code.sf.net/p/lazarus-ccr/svn/components/rx/trunk
if MouseInClient then
{$ELSE}
if MouseEntered then
I would update, but the same MouseInClient related error was introduced again, see @giuian post above. When you use MouseInClient, you need:Quote{$IF lcl_fullversion >= 1090000}Otherwise rx cannot be compiled in stable 1.8. You can download the latest version with a SVN client from here: https://svn.code.sf.net/p/lazarus-ccr/svn/components/rx/trunk
if MouseInClient then
{$ELSE}
if MouseEntered then
Poor GetMem... Isn't this the job of the package maintainer?Indeed, maybe the package maintainer should be informed about OPM and explained how to publish packages there.
Indeed, maybe the package maintainer should be informed about OPM and explained how to publish packages there.He was informed, please see here: http://forum.lazarus.freepascal.org/index.php/topic,39919.msg275633.html#msg275633
The idea is that when a maintainer releases a well tested version, he can then publish it.True but there are a few exception from the rule, when the release cycle is slow: synaps, indy, etc.
The idea is not that GetMem copies random revisions directly from SVN when somebody asks for it.
The latest development versions are still available in revision control systems, nothing has changed with that.I think I will add SVN support soon. It will be the user choice to install the trunk version or not. The package.json already has a SVN entry, which is not used yet.
Finally I got this fixed because I have both svn and git clients, so I got uniqueinstance 1.1 from svn, but not from onlinepackagemanager, after a week expecting this would be fixed. apparently not, so I signal it hereAlways signal any issue you find, otherwise it won't be fixed. I'm the only one who maintains the repository and I cannot constantly test 130+ packages. Unique instance is fixed now. Thanks for the feedback.
I think I will add SVN support soon. It will be the user choice to install the trunk version or not. The package.json already has a SVN entry, which is not used yet.Does this mean that OPM will create the zip file by itself from the svn files? How does it know that the svn sources have been changed? Does the package maintainer have to update the update.json every time he commits changes to svn? This would not be good because this will not happen, and the users will get an outdated svn version. Or will OPM regularly scan all the available svn repositories for the current revision number and compare with an internal list?
Does this mean that OPM will create the zip file by itself from the svn files? How does it know that the svn sources have been changed? Does the package maintainer have to update the update.json every time he commits changes to svn?When the user decide to switch to the trunk version of a particular package, OPM will act like as a SVN/GIT client and will do a checkout/update or clone/pull respectively. The package maintainers don't have to do anything other then provide a link(once) to package trunk. The user will have the possibility to switch back to a stable version if needed by using the "Install"/"Update" buttons. At least this is the idea, I did not implemented anything so far.
just an idea...The idea is good, but I'm afraid OPM wasn't designed for that kind of functionality. I would have to rewrite a large part of OPM to support a bittorrent like feature. Unfortunately I don't have the time or the energy to do that.
would it be difficult to turn OPM (OnlinePackageManager) into a kind of multisource thingey (likewise simplistic dedicated bitorrent)?
Just an idea, that would make it far more useful to me , would be if I set the download folder to be my central component folder, then when components are downloaded they are stored in a folder that also contains there version number, ie BGRABITMAP_8_5_2 etc, that way when I update a component in one of my lazarus installation, it will not effect the other installations; until I am ready to upgrade those as well. As I have some old lazarus installations that are still in use but not all the updated component/libraries work with.The problem is each package can contain multiple lpk files with different versions. Which one to choose as folder name(see attached image)?
I finally got around to installing and using OPM. Seems like a very nice start.Thank you.
Now for the obligatory stupid question.There are no stupid questions.
I see that OPM has a new version, but I cannot update from inside OPM. I'm assuming that's because it does not have an "Update JSON" link. So the question is... how does one update OPM if it cannot be done using OPM?If you're using Lazarus 1.8, you can update to OPM 1.0.1.2 by pressing the "Install" button. The difference between Install and Update is described here: http://wiki.freepascal.org/Online_Package_Manager#Difference_between_download.2Finstall.2Fupdate
Is a good explanation. This is not intended to be like NPM (Node Package Manager).
The problem is not OPM, but how Lazarus packages works from the start.
If SVN/Git is added, please add the option to stick to some revision, so you're sure wich version you're using at a repository level. Just search the version commit, or even better list each version in the package to choose one, and problem solved.
QuoteNow for the obligatory stupid question.There are no stupid questions.
QuoteI see that OPM has a new version, but I cannot update from inside OPM. I'm assuming that's because it does not have an "Update JSON" link. So the question is... how does one update OPM if it cannot be done using OPM?
If you're using Lazarus 1.8, you can update to OPM 1.0.1.2 by pressing the "Install" button. The difference between Install and Update is described here: http://wiki.freepascal.org/Online_Package_Manager#Difference_between_download.2Finstall.2Fupdate
There is an even newer version of OPM in Lazarus trunk but you can not install it into a stable version because breaks code(this is the reason you don't see an update json for OPM). Lately there was a lot of changes to make OPM more compatible with the internal package system(see attached images). So basically you have two choices:
1. Stay with Lazarus 1.8/OPM 1.0.1.2
2. Use Lazarus trunk
If the new version has issues and creates problems, it is easy to revert back to a previous version, at the moment I do this manually using install pkg, but if opm created such a file structure, then OPM could have this archive feature added in, with an option to enable it or disable it.Bad idea! You essentially try to turn OPM into a revision control system and bisect bugs with it.
Another use for the archive idea, is if a new version introduces a bug, you can then go back and find which version introduced the bug, to aid in tracking it down.
possible folder structure
bgrabitmap/V8.5.2/.......
bgrabitmap/V9.6.0/........
bgrabitmap/V9.6.1/........
Extending OPM to get latest sources directly from revision control may be a swamp.Although I have working code for SVN, I'm still reluctant to commit. I'm also under the impression that will cause more trouble then good. %)
Hi, there is BGRABitmap 9.6.1, @circular did not add the update.json, yet. BTW is optional and there is no problem on don't having it, is the normal and original OPM way to use it.Done.
If the SVN thing is a bad idea for @GetMem then don't add it, is your system and you decide what is good or not.The idea is good but most likely will introduce new issues which is bad.
There seem to be always two download locations:Yes.
- the one which I specify in the updatejson - this is the version in column "Update" - and which is updated by the local client in an interval specified in the "Options",
- the central repository which is updated from time to time by yourself or maybe by some process running on the server.
Is this correct?
Without understanding this, the columns in the OPM window ("Repository", "Update") are confusing.I agree it is confusing, but I think I did explained relatively well here(or at least I tried :) ): http://wiki.freepascal.org/Online_Package_Manager#Difference_between_download.2Finstall.2Fupdate
Does the user have to know these internals? Can't they be merged to one?This is a good question. Initially the separation(install/update) was introduced for two reasons:
Another confusing information is in the column "Status/Data": spktoolbar in trunk has the version number 0.1.7 - this is what is installed on my system, but the column says "Up to date". I think this is wrong, it should be "Ahead of OPM" or "Development versionBy up to date I meant: you cannot get a newer version with OPM, but I can change it to "Ahead of OPM", it sounds good.
Yes, I remember now.QuoteWithout understanding this, the columns in the OPM window ("Repository", "Update") are confusing.I agree it is confusing, but I think I did explained relatively well here(or at least I tried :) ): http://wiki.freepascal.org/Online_Package_Manager#Difference_between_download.2Finstall.2Fupdate
You never can be absolutely safe from malicious software. If there is a black sheep among us developers the login system for package maintainers won't be an improvement. How will you be sure that the package author you gave permission to modify the repository is not a bad guy? I would forget about this idea.QuoteDoes the user have to know these internals? Can't they be merged to one?This is a good question. Initially the separation(install/update) was introduced for two reasons:
1. To offload the bulk of the work from the central repository to the package maintainer(s), this way making the whole system sustainable on the long run.
2. To prevent infection, which is especially important under windows. The user must know that now it will install something from the maintainer webpage, which in theory can contain malicious stuff
The ideal solution is to create login system for package maintainers, which would allow to modify the packages inside the main repository directly. Since the lazarus webpage was compromised in the past, Marc only agrees if somebody creates a cgi backend in pascal or php. Unfortunately I don't have the time or the energy to implement such a complex system, at least not now.
No, the newer version is not obtained with OPM, it is a locally installed package which, by incidence, is also distributed by OPM.QuoteAnother confusing information is in the column "Status/Data": spktoolbar in trunk has the version number 0.1.7 - this is what is installed on my system, but the column says "Up to date". I think this is wrong, it should be "Ahead of OPM" or "Development versionBy up to date I meant: you cannot get a newer version with OPM, but I can change it to "Ahead of OPM", it sounds good.
What about merging these two buttons to a single "Install" which opens a dropdown menu with the entries "from repository" and "from external source". Then, maybe, the column "Update" could be renamed to "External".This is an excellent idea. I will implement it next week.
You never can be absolutely safe from malicious software. If there is a black sheep among us developers the login system for package maintainers won't be an improvement. How will you be sure that the package author you gave permission to modify the repository is not a bad guy? I would forget about this idea.True. There is no system that's 100% safe, but with this method the "Update" button will completely disappear and the central repository would be maintained almost entirely by package maintainers.
There is no system that's 100% safe, but with this method the "Update" button will completely disappear and the central repository would be maintained almost entirely by package maintainers.The problem with a wholly user-maintained system is ensuring quality control. OPM needs a "gatekeeper" to exclude incompatible, out-of-date or uncompileable packages from entering the system.
Yes, but you cannot expect that GetMem does this job; it is a full-time job which cannot be handled by anybody voluntarily. I am maintaining a hand-full of packages, and it already blows my mind. But OPM contains 224!Quite. But this was discussed at the start and GetMem volunteered. The only alternative I can see is to expand and implement the voting system to include categories like compatibility, stability, maintenance etc. It's the Wiki principle.
I might perhaps be wrong but afaik all that GetMem volunteered to do is to implement/maintain OPM (not the packages themselves), and add some initial packages. Not volunteering to maintain those packages and/or keep them all up to date with every change in LCL (except for his own packages, i presume :)).Yes, but you cannot expect that GetMem does this job; it is a full-time job which cannot be handled by anybody voluntarily. I am maintaining a hand-full of packages, and it already blows my mind. But OPM contains 224!Quite. But this was discussed at the start and GetMem volunteered.
In that way, users can avoid unsuitable components possibly submitted without initial vetting/evaluation.Somehow you have misunderstood the issue again. Every component is initially submitted only after evaluation and scrutiny by the OPM admin, currently GetMem. The update link can be used only after that. It means the package maintainer can be trusted at that point.
One limitation still exists though, namely the packages must be installed from the central repository first. Technically OPM can install directly from external source, but I prefer to keep this separation mainly because:No problem with this basically. I can't find an example to test how this works in practice. But ideally there should be some kind of feedback to the user that he must install from Repository first. Is "Install from externeal" disabled if the package has not yet been installed from Repo? It probably should be disabled also if there is no external source (no update-json file). At the moment, it seems that both menu items are enabled always.
1. When installed from the central repository every dependency is resolved correctly. I test newly added packages both on windows and linux, with the latest stable version of lazarus. The packages are usually stable releases, except a few with slow release cycle like: synapse, indy, etc...
2. The user will be able to distinguish between a safe source(repository) and a less safe external link. Maybe I'm a little bit paranoid, but I really don't want to have any legal issues(although highly unlikely), with packages installed from somewhere else.
But ideally there should be some kind of feedback to the user that he must install from Repository first.The user has no other choice. The old "Update" now "External" column is empty(-) until the package is installed from the repository, even if a valid external link is available.
Is "Install from externeal" disabled if the package has not yet been installed from Repo? It probably should be disabled also if there is no external source (no update-json file). At the moment, it seems that both menu items are enabled always.The user can check 2, 3 even 10 packages at the same time. Let's say 3 is installed and has links to external source, 7 does not , how should OPM proceed in this particular case? Disable or not the "From external source" menu item. I choose to always keep the menu item enabled and display a message when needed, like this: "Package X, package Y is not available from an external source and will be skipped". Do you wish to continue?"
Edit: it works with Outlook / Hotmail, but Gmail sent me a warning that a non secure application want to use my account.It has nothing to do with the component itself, it's gmail policy I'm affraid. Please see here: https://support.google.com/accounts/answer/6010255?hl=en
I have SSL installed on Ubuntu. I will keep trying.I don't think it's OPM related. Perhaps you should ask the maintainer?
QuoteI have SSL installed on Ubuntu. I will keep trying.I don't think it's OPM related. Perhaps you should ask the maintainer?
There is a new version of https://github.com/wadman/wthreadUpdated to 1.0.0.2 :)
1.2
https://github.com/wadman/wthread/commit/4a15d4ed0afdf6881de3c87bfd447d49684452b0
Really nice component. I discovered it in OPM.
I want to inform you about a package conflict;Thanks for the feedback. I believe this error is not OPM related and should be fixed by the package authors. I mean if you install Castle Game Engine and Sparta without OPM, the same error would occur. I only add packages to the central repository. Fixing bugs it's the maintainers job.
if is sparta_docketformeditor( comes with standart Lazarus installation ) installed, trying to install Castle Game Engine from OPM failed and Lazarus build stops with error message ( attached screenshot).
And if is Castle Game Engine installed first then sparta_docketformeditor install failed.
Hi gorkamorka,QuoteI want to inform you about a package conflict;Thanks for the feedback. I believe this error is not OPM related and should be fixed by the package authors. I mean if you install Castle Game Engine and Sparta without OPM, the same error would occur. I only add packages to the central repository. Fixing bugs it's the maintainers job.
if is sparta_docketformeditor( comes with standart Lazarus installation ) installed, trying to install Castle Game Engine from OPM failed and Lazarus build stops with error message ( attached screenshot).
And if is Castle Game Engine installed first then sparta_docketformeditor install failed.
@GetMem: Here's a new package for OPM: extrasyn which evolved from bugreport https://bugs.freepascal.org/view.php?id=18248 and contains more than 35 additional highlighters for Synedit, e.g. ruby, haskel, eiffel, fortran, modula 3, CA-Clipper, prolog, cobol, gnuplot, etc.Done. Thank you.
See also https://forum.lazarus.freepascal.org/index.php/topic,40329.0.html.
Download link: https://sourceforge.net/projects/lazarus-ccr/files/extrasyn/extrasyn-v100.zip/download
Update jpson link: https://sourceforge.net/projects/lazarus-ccr/files/extrasyn/OPM/update_extrasyn.json/download
Hoping that everything is fine this time...Everything went well.
@NelsonN: Please remove the packages laz_OpenGl and Graphics32 from the requirements list of the Vampyre package and recompile. There's not need to install anything, because Vampyre is a runtime package. If you don't see an improvment, you may also have to uninstall laz_OpenGl and Graphics32.
If this does not solve your issue you should post a compilable demo project showing your issue (only *.pas, *.lfm, *.lpr, *.lpr files, all packed into a shared zip, upload under "Attachments and other options" below the forum's text editor).
@wpThe author's repository is http://hg.code.sf.net/p/imaginglib/code/file/17db2c7f6ee0; the homepage is http://imaginglib.sourceforge.net/.
Who is the original author? Did somebody port Vampyre package to Lazarus(other then CT)? I can update it in OPM, but I have no knowledge about the comoponent, I never used myself.
@NelsonN: I do confirm that the jpeg fails to load in your sample, but the author's LCLImager demo is running perfectly. I cannot confirm the missing icons issue, but I'll have a look.
[EDIT] Now that I got the original package running, the icons are missing, too.
I did some experimenting yesterday and I noticed that when I added unit ImagingComponents into the demo project I uploaded here yesterday the icons disappear.
Fantastic! Everything is working fine with the non-OPM version I am using with your additions and your GitHub version. ;DNow seriously NelsonN, are you aware how OPM it works? You're really ignorant.
The current OPM version just will not take, it still has the non-loading issue even with all your additions.
QuoteFantastic! Everything is working fine with the non-OPM version I am using with your additions and your GitHub version. ;DNow seriously NelsonN, are you aware how OPM it works? You're really ignorant.
The current OPM version just will not take, it still has the non-loading issue even with all your additions.
I see you just embarrassed yourself. How does that feel?Actually I don't feel anything.
What are the requirements to make a system where is like npm that package authors can upload his own packages. In top of things already exists.It must be implemented in Pascal(CGI) or php, the database server should be PostgreSQL. Please note these are Mark's requirements not mine, Mark is the guy who administrates the Lazarus webpage, mailing list, etc... Currently the information about the packages are stored in a big json file(but you already know that :) ). If somebody implements a back end with database support + login system, we can get rid of the json and use tables to store package data. More over a voting system can be also implemented using database.
@lainzQuoteWhat are the requirements to make a system where is like npm that package authors can upload his own packages. In top of things already exists.It must be implemented in Pascal(CGI) or php, the database server should be PostgreSQL. Please note these are Mark's requirements not mine, Mark is the guy who administrates the Lazarus webpage, mailing list, etc... Currently the information about the packages are stored in a big json file(but you already know that :) ). If somebody implements a back end with database support + login system, we can get rid of the json and use tables to store package data. More over a voting system can be also implemented using database.
PS: I'm grateful for your help, I'm also aware that you're an experienced web developer/designer, but please note this kind of job usually requires two or more persons. I mean you can do it alone, but it will eat up your time very fast.
Hi all, our team is looking for an experienced Free Pascal Developer, who will work for one of the biggest email service providers.
We offer great salary, relocation package and 30% home office.
For more info: https://devpool.bg/job/148/freepascal-developer/ or write me back :)
Thank you GAN. I'm glad you like it.
Hi totya,
Thanks for the feedback. OPM mainly targets stable versions, there are a few exception though like Indy, Synapse, etc...where the release cycle is slow. We talk about SVN support in the past and we came to the conclusion that it will cause more trouble then good(see here: http://forum.lazarus.freepascal.org/index.php/topic,34297.msg276066.html#msg276066). More over package maintainers can push SVN version if they want to, I also try to update the main repository as often as possible.
I'd like to see new column (svn version), and possibility update for svn etc...That should be possible. I always use svnversion to obtain the revision number, then in my make script I add REVINC=force REVSTR=<svn revision >
I found simple bug, see attached picture. A checked only five package...Thanks. I will fix it as soon as possible.
This is especially useful when you always use trunk.I already have working code for SVN/GIT update, but Juha explained here why is not a good idea to add SVN/GIT support, and I agree with him: http://forum.lazarus.freepascal.org/index.php/topic,34297.msg276066.html#msg276066 . Trunk version sometimes(quite often actually) breaks code, it's not an issue for you, but OPM is used by less experienced users too.
So... feature request 8-) for OPM.
(A similar feature request I entered in Mantis FPC was refused, btw)
@totya
I fixed in r57575. Please test.
opkman_common.pas(126,45) Error: Identifier not found "TLazPackageType"
@totya@GetMem
OPM is part of Lazarus. In order to get the latest version you have to switch to Lazarus trunk. You can use fpcupdeluxe.exe to install a separate instance of lazarus trunk without interfering with your current stable installation. Alternatively you can checkout with a svn client(tortoise, cmdline, etc) lazarus source(https://svn.freepascal.org/svn/lazarus/trunk), then build with your currently installed FPC.
PS: You can find OPM in the following directory: ($LazarusDir)\components\onlinepackagemanager
New suggestion: Update OPM without svn Lazarus/FPC needed ;)Unfortunately I can't. The OPM from trunk is not compatible with the OPM from a stable version. We made a lot of changes lately, OPM communicates much better with the built-in package system. See attached image from the following post: http://forum.lazarus.freepascal.org/index.php/topic,34297.msg268712.html#msg268712 . Long story short, you cannot install trunk OPM to 1.8 or 1.8.2 .
Start OPM, check "OnlinepackageManager" then press the "Install" button. OPM it will update itself from 1.0.0.0 to 1.0.1.2.
PS: 1.0.1.2 is the latest version which can run on a stable version like 1.8.2. After this you need Lazarus trunk.
When you pressing "Refresh" button, the json from the central repository is downloaded and parsed again, the tree cleared and re-populated. In my opinion OPM should reset the filters to default, but I'm open to any other suggestions.
In my opinion, if the filter is "Packages status" and "installed", IIRC I can see only installed packages after refresh too. This is logic I think.Yes I agree this is also logical, but the whole point of refresh is to see the changes in the central repository. If some filters are set you may not notice what package was updated/deleted etc...
If your opinion is reset the filter too, then I suggest change (after refresh)Done in r57578. Thanks for testing.
"Package status" and "installed" to:
"Package status" and ""
or
"Packages" and ""
I try latest OPM from Lazarus trunk, I want only install a package. But I got error:Something is not right then. Are you sure you installed Lazarus trunk? Go to Help-->About paste the screenshot here.
Something is not right then. Are you sure you installed Lazarus trunk? Go to Help-->About paste the screenshot here.
Done in r57578. Thanks for testing.
(config dirs mixed?)
c:\fpcupdeluxe\config_lazarus
start icon link: C:\fpcupdeluxe\lazarus\lazarus.exe --pcp="C:\fpcupdeluxe\config_lazarus"
Lazarus config file: --primary-config-path=C:\fpcupdeluxe\config_lazarus
Please do the following:
1. Lazarus menu-->Packages-->Open package file
2. Go to your fpcupdeluxe\lazarus\components\onlinepackagemanger directory
3. Select onlinepackagemanager.lpk, compile then install. Can you install OPM?
4. After rebuild try to install another package again
Thanks, but I'm not full stupid.Nobody suggested that you're stupid. You're less experienced with lazarus which is perfectly fine. We all been there at some point.
suggest this app read the current Lazarus path, and use that.That's exactly what OPM does(use the same path as Lazarus). This is not an OPM issue, please try @josh suggestion(I never used startlazarus myself and everything works fine. I also have multiple fpcupdeluxe installation + a stable lazarus).
Hi
In each of the directories you have installed lazarus are you starting lazarus with the startlazarus item?
C:\fpcupdeluxe\lazarus\lazarus.exe --pcp="C:\fpcupdeluxe\config_lazarus"
--primary-config-path=C:\fpcupdeluxe\config_lazarus
Well, I started the second (trunk) Lazarus. OPM start. I press Open (bottom button). I choose package file. New Lazarus started. BUT, this is the default Lazarus (first installation). This is cause many problem certainly (path duplication etc).
Oh, I think I understand now. The "Open" button opens the local repository in windows explorer, so you don't have to do it manually, it's like a shortcut, but it's not meant to open package files. For this you have to go to Lazarus menu-->packages-->Open package file.
Okay, I see you understand me, but I think this is problem, because if the official Lazarus register own files extensions to windows (or the user register these extensions later), the default Lazarus opened, and this is cause many problems, if the user doesn't look the version number of lazarus... :)Yes it might be a problem for a beginner, but beginners don't use multiple instance of Lazarus in the first please. Once you choose to work with Lazarus trunk, you became an advanced user, so act like one and open the package from inside Lazarus. :D
QuoteOkay, I see you understand me, but I think this is problem, because if the official Lazarus register own files extensions to windows (or the user register these extensions later), the default Lazarus opened, and this is cause many problems, if the user doesn't look the version number of lazarus... :)Yes it might be a problem for a beginner, but beginners don't use multiple instance of Lazarus in the first please. Once you choose to work with Lazarus trunk, you became an advanced user, so act like one and open the package from inside Lazarus. :D
Oh, I think I understand now. The "Open" button opens the local repository in windows explorer, so you don't have to do it manually, it's like a shortcut, but it's not meant to open package files. For this you have to go to Lazarus menu-->packages-->Open package file.I indeed think that the caption of this button is misleading. The hint is correct, but without seeing the hint I'd think like totya that this button opens the package. Why not label it like "Local repo" instead of "Open"?
I indeed think that the caption of this button is misleading. The hint is correct, but without seeing the hint I'd think like totya that this button opens the package. Why not label it like "Local repo" instead of "Open"?
No, the local repository does not have anything to do with the registered Lazarus version.
You should install individual packages from inside Lazarus (Menu "Package" / "Open Package File (.lpk)", not from the Explorer. Windows can register the .lpk extension only to a single application - this is not OPM's fault. When I install Lazarus I never register any file extensions, I never open Lazarus files by double-clicks - I have so many Lazarus version on my system this would certainly end up in a mess.
@lainz
Please test. :)
A thing I need, you can upload the new version of this package?Done.
I think is 1.0.3Yes it's 1.0.3
Done. Current Indy version in OPM is r.5456. Thanks for the feedback.
Note, there was a logic bug introduced in r.5456 that has just been fixed in r.5457.Thanks. Updated to r.5457.
Unfortunately I get the same error. I have also tried to copy them in /usr/lib/lazarus/components/onlinepackagemanager/vst/include and /usr/lib/lazarus/components/onlinepackagemanager/vst/units just in case but no joy.Try to delete the lib folder inside OPM, then rebuild IDE. I think it uses the old ppu files.
Thanks again for the additional info./You're welcome.
And I hate to be that guy but it's still not working :/Don't worry. :) I'm trying to figure out why it fails at your side.
Not too sure what you mean for the lib folder in OPM, I don't have any?There should be a lib folder inside OPM. It contains the ppu files(see attached image).
So I have finally installed OPM via trunk but to do so I had to actually use fpcupdeluxe-x86_64-linux instead of fpcupdeluxe-x86_64-linux-qt5 so not really ideal and not what I wanted but it still better than nothing :)OK I'm glad it's working. There are some issues with Fpcupdeluxe-x86_64-linux-qt5? If yes, then you should report it here http://forum.lazarus.freepascal.org/index.php/topic,34645.0.html
Is there a git where I could grab the whole onlinepackagemanager folder to replace the lazarus-qt5 folder? if it makes sense to try that of course.I'm not sure if I understand what are you trying to achieve. You cannot mix OPM from trunk with a stable version of Lazarus(like 1.8.2). There was a lot of changes lately to make OPM more compatible with the built-in package manager, so the two versions(stable/trunk) are not interchangeable. You either stay with Lazarus stable/OPM stable, or switch to Lazarus trunk/OPM trunk.
OK I'm glad it's working. There are some issues with Fpcupdeluxe-x86_64-linux-qt5? If yes, then you should report it here http://forum.lazarus.freepascal.org/index.php/topic,34645.0.htmlIt looks like, I will give it a try on my Debian box as well and report it then.
You cannot mix OPM from trunk with a stable version of Lazarus(like 1.8.2).So it answers my question, I guess for now I will stick with with the non qt5 version until I can use it.
@circularHi GetMem,
Thank you. I updated BGRABitmaps in the central repository. You can create an update json if you like, this way OPM will notify the users when a new version is available. The steps are described here: http://wiki.freepascal.org/Online_Package_Manager#Create_JSON_for_updates . Alternatively you can leave a message here, whenever a new stable version is available.
I see on the online package manager that BGRABitmap has already been updated. Is it automatic?No. I did it manually. It will become automatic, only after you send me the update json.
I looked for the Create button but I did not find it.No problem, I forget to mention that you should activate the "Package maintainer" profile first. You can do it in OPM-->Options as in the attached picture.
Sorry for that but I am a bit confused.
Oops there was a problem with the merge. The version 9.7 was not actually published. I hope it is now. I incremented the version 9.7.1 to help the update process.I updated the main repository. The current version is 9.7.1. Thanks.
Here is a json file generated with OPM. However it seems the version in it is 9.7 instead of 9.7.1I attached the modified version. Please do the following:
Question, why don't you setup a site where people could register and update their packages ? using a forum thread for this doesn't scale.The site is already setup: https://packages.lazarus-ide.org/ , all we need is a CGI application. This is required by site administrators not by me. I explained many times before, that I don't have the time or the motivation to implement such a feature, at least not now. By the way it scale up nicely, there are not so many Lazarus packages out there unfortunately...this was also a surprise for me.
@circularPlease try again.
I have just rechecked OPM (refreshed as well) and it still says 9.7.1; so can't test changes 9.7.2 yet..
Hi GetMem, here is the JSON on my github repository:Great! Thank you. I added the link to the main repository. OPM already noticed the json(see attached image). Please note: usually you have to wait 1-2 minutes for the update to appear.
https://raw.githubusercontent.com/bgrabitmap/bgrabitmap/master/update_BGRABitmap.json
(with version 9.7.2)
I see a bug in tooltips for component ATSynedit_ex. It shows 4 feature lines beginning with - char, while there s only 3 lines. 4th line is error from words 'auto-completion' with - char.Fixed. Thanks. Please test.
A user of the German Lazarus forum noted that the package cmdline (sources at https://sourceforge.net/p/lazarus-ccr/svn/HEAD/tree/components/cmdline/) does not compile any more. The culprit is the missing unit LazUTF8 in uCmdBox. I corrected the file on CCR. Since this package is distributed also by OPM I am attaching the zip of all files for replacement of the current zip in the OPM repository.Thanks. I updated the package.
Since I don't want to take care of this abandoned package I do not go the regular way with update-json etc - I hope you can understand.Sure, no problem.
I can't stop wondering how did I lived all this years without OPM!!!Thanks.
It's a great package and it should be installed by default!!!
It saves me a lot f time searching packages and downloading new versions of them. Further more, I knew a lot of packages which I didn't know they existed !!!
The only thing I miss is an "export to file" / "import from file" button thus I can take an installed package list from my house to my workplace and to other OS installs.Did you try a right click on the tree(as in the attached image)?
OMG :o I don't remember if I did it, though the menu translation for "Checked" to spanish is ... "tricky". It should say "Marcado" (marked) or "Seleccionado" (selected) instead of "Comprobado" (checked, ascertain, tested, proved, make sure, check up on, test out).QuoteThe only thing I miss is an "export to file" / "import from file" button thus I can take an installed package list from my house to my workplace and to other OS installs.Did you try a right click on the tree(as in the attached image)?
The menu translation for "Checked" to spanish is ... "tricky". It should say "Marcado" (marked) or "Seleccionado" (selected) instead of "Comprobado" (checked, ascertain, tested, proved, make sure, check up on, test out).Unfortunately I do not speak Spanish, the translation was done by somebody else. However you can suggest another translation(correction) in the bugtracker if you like.
P/S: I would add the option to load and save the installed ones. You know I'm a lazy guy and nowadays I don't trust in my eyes nor in my accuracy with the mouseI implemented it in r. 58054, but you need Lazarus trunk. It will be available though in the next Lazarus version. Thanks for the suggestion.
Spanish translation corrected and updated.Thank you. @Maxim will apply it soon.
Can I continue to report new versions on this channelYes. This thread is the preferred way because other people can see the changes and join the discussion when needed.
Thanks.You're welcome.
I had only one problem: I had castle engine (which I like a lot) installed in version 6.4 and the transition to version 6.5 did not like it at all. OPM was experiencing unit conflicts (I'm surprised), displayed a partial install, and refused to uninstall the product. Again, I had to make repairs in the hand ... Well, all this is not very serious if you consider the comfort brought in all.
hat the application only keeps track of the software installed thanks to it, it's normal, okay. But that it does not take care of the already installed packets, it is a problem: the user expects that the problem is at least signaled with a message of the type: 'attention, this package already exists.' Then, the options are to choose: propose to uninstall it automatically, abandon the operation, run the risk of installing it anyway. The worst solution (in my opinion) is the one adopted: we try to install without worrying about anything assuming that the IDE is clean ...
i've also some feedback posted as comment from my tutorial here :Very nicely done. Somebody should translate your tutorial to English, a lot of people would learn from it.
https://www.developpez.net/forums/d1848091/autres-langages/pascal/lazarus/tutoriel-installer-lazarus-paquets-fpcupdeluxe-online-package-manager-jerome-delauney/
I had only one problem: I had castle engine (which I like a lot) installed in version 6.4 and the transition to version 6.5 did not like it at all. OPM was experiencing unit conflicts (I'm surprised), displayed a partial install, and refused to uninstall the product. Again, I had to make repairs in the hand ... Well, all this is not very serious if you consider the comfort brought in all.The current version of Castle engine in OPM is 6.4 I will switch to 6.5 soon and fix the remaining issues.
hat the application only keeps track of the software installed thanks to it, it's normal, okay. But that it does not take care of the already installed packets, it is a problem: the user expects that the problem is at least signaled with a message of the type: 'attention, this package already exists.' Then, the options are to choose: propose to uninstall it automatically, abandon the operation, run the risk of installing it anyway. The worst solution (in my opinion) is the one adopted: we try to install without worrying about anything assuming that the IDE is clean ...I'm not sure about this one. OPM will warn you if a package is already installed. Please see attached screenshot.
Best regareds and thanks for your work 8-)Thanks for the feedback, if somebody reports more issues please let me know. I cannot check all Lazarus related webpages. I didn't even know about www.developpez.net
Very nicely done. Somebody should translate your tutorial to English, a lot of people would learn from it.Yes it will be nice. It is for that i keep the Microsoft Translate plugin on top left the article.
The current version of Castle engine in OPM is 6.4 I will switch to 6.5 soon and fix the remaining issues.Great ;)
I'm not sure about this one. OPM will warn you if a package is already installed. Please see attached screenshot.
PS: You should file a bugreport about QT5/Cocoa related issues(Options in toolmenu, exception when IDE starts) so it can be fixed. Thank you.
The user have installed package manually in Lazarus/Components folder . So it is OPM check this folder to ?Yes. The Lazarus IDE or the internal package manager to be more precise, knows about every single installed packages, more over knows about the run-time only packages too. OPM queries the information when needed via the PackageInt interface, like this:
I'm also think it will be better OPM install Package in a sub-folder in the Lazarus/Components folder instead in the hidden Lazarus's configuration folder (mainly under Windows). I say we can change it but most user don't do it.The Lazarus/Components folder is read only in some Linux distros. This is why OPM installs the packages in the config directory which is always writable for every user. You can change it if you like under windows.
Hi, I found this package today:Did you test it? Should I add it to OPM?
https://github.com/afuriza/kyoukai_framework
OK. Thanks, I will install it if works fine. I will also update BGRABitmap, BGRAControls soon.
@wpNo problem. Have nice holidays!
I'm on hollidays for a few weeks with a small break on Saturday, I will try to add it then. Sorry for the inconvenience.
any chance of making Online Package Manager Ansible friendly?I found Ansible by a web search. It "automates software provisioning, configuration management, and application deployment".
any chance of making Online Package Manager Ansible friendly?I fail to see how Ansible would help to install packages. OPM depends on Lazarus, in fact OPM without Lazarus is worthless. Once you have a working IDE, just use the internal package manager and/or OPM to manage packages. Why involve another application? I'm I missing something?
b. with Ansible - install Lazarus using fpclazup (http://wiki.lazarus.freepascal.org/headless)Why is fpclazup pulled in here? There are easier ways to install Lazarus.
my point was to have the packages installed automatically and not by human intervention, thus moving to the advantages of the configuration management / DevOps approach. i thought OPM could do it with modifications and headless.OPM is part of an IDE which deals exactly with human intervention. When you run Lazarus or any other IDE, you are already using a graphical desktop. Then a headless configuration with scripts does not make sense IMO.
OPM is wonderful but still every time I need to pick manually the packages to install and manually submit.True. There should be a way to install a set of packages at one go, for example when duplicating a design environment to another computer.
True. There should be a way to install a set of packages at one go, for example when duplicating a design environment to another computer.If you right click the tree, there is an option to export checked(or installed) packages(see attached image). All you have to do is check your favorit packages then save it to a file. Next time or in a different environment, just import back the checks and you can install them in one shot. I plan to add a command line options as well, but as you mentioned you must pass the parameters to Lazarus which complicates the issue a little bit.
If you right click the tree, there is an option to export checked(or installed) packages(see attached image).This sounds great. But: Does "Save Packages" > "Install" save also the packages not installed by OPM? Or what if a package is available via OPM but is installed from the author's svn/git directly in a different version? Doesn't this end up in chaos when the saved packages are restored on another Lazarus installation?
This sounds great. But: Does "Save Packages" > "Install" save also the packages not installed by OPM? Or what if a package is available via OPM but is installed from the author's svn/git directly in a different version? Doesn't this end up in chaos when the saved packages are restored on another Lazarus installation?... and what about packages installed from Lazarus components/ directory? They are equally important when duplicating a design environment.
But: Does "Save Packages" > "Install" save also the packages not installed by OPM?No. It strictly refers to packages listed in OPM, preferably installed by OPM. Maybe I should change the caption to "Installed by OPM".
Or what if a package is available via OPM but is installed from the author's svn/git directly in a different version? Doesn't this end up in chaos when the saved packages are restored on another Lazarus installation?Yes, it could and up in chaos, but this is also true when you try to install packages via the built in package manager(the classical way). If you are an advanced user with many version of a particular package you should take extra steps to avoid problems, but you know this much better then most of us, since you maintain a lot of packages. :)
... and what about packages installed from Lazarus components/ directory? They are equally important when duplicating a design environment.I cannot imagine a tool that will work in every possible scenarios and will successfully duplicate the installed components. Think about different Lazarus/FPC version for example, not to mention package dependencies which can also change a lot with new version of a particular package.
I uploaded a new release of fpspreadsheet, v1.10, to sourceforge. GetMem, could you please update the repository?Done. Thanks for the new version.
When I open OPM I see now only dashes ('-') in the column "External". Is this correct?Apparently you forget two comas from the json. I attached the modified file. Please upload it to: https://sourceforge.net/projects/lazarus-ccr/files/FPSpreadsheet/OPM/update_FPSpreadsheet.json and replace the current one. The "External" column should work after the upload.
Are there any errors missing which I can make?Don't worry. We all make mistakes all the time.
When writing about the dash ('-') I was also thinking of the other packages. There are only very few packages which contain a version number in the External column, usually there is the dash. Does this mean that it is only these few packages which provide an update-json?In order for the external column to appear you must install the package first + must have a valid external json(http://forum.lazarus.freepascal.org/index.php/topic,34297.msg276901.html#msg276901).
In order for the external column to appear you must install the package first + must have a valid external json(http://forum.lazarus.freepascal.org/index.php/topic,34297.msg276901.html#msg276901).Ah, now I remember. Thank you.
Hi sir, we have a new version available of REST Dataware, to the update of repositoryDone. Thanks for the new version.
Thank you.
After finishing the port I realized that the same component is contained also in the CodeTyphon package pl_ExControls. So, if somebody installs both packages there will be a naming conflict.I will leave it as it is for now until the faith of pl_* packages will be decided. It looks like the genuine CT packages are rare. By genuine I mean is developed by them or maintained only by them. More over as time passes by it becomes evident that the CT package system is a mess(how pl organize they packages is beyond me, I do not understand the logic). I'm still not against them, but I see no reason to switch to CT nowadays.
Is there any way we could get descriptions for the various packages?Just hover the mouse over a meta package(root node). It will display the info for every lpk file(see attached image). The behaviour of the hint window can be changed in the option.
I've no idea what most of them are.Neither do I.
I know we can't be updating all their repos, but could we add an internal OPM description section?If you(or somebody else) is willing to test 243 lpk files, review it and write a detailed description, I will add an extra row with an internal OPM description. This is a promise.
I know we can't be updating all their repos, but could we add an internal OPM description section?And who updates that?
ATTabs: component for lite tabs. OS independent, fully custom drawn.
- can show x-icons in many styles
- can show plus pseudo-tab
- can show scroll arrows if lot of tabs
- can show flat tabs (Material style)
- can use multi-line mode
- can show colored tabs
- can show drop-down tab menu
- can show icons/numbers on tabs
- can confirm tab closing
- allow tab owner-draw
- drag-drop tabs, also to another control
etc.
ATGroups: several page-controls (up to 6), based on ATTabs, groups auto-arranged, with commands to move tabs between groups.
Lazarus Port of Turbo Power's VisualPlanIt components based on version 1.0.3.
(Runtime package)
I added the component TA3nalogGauge to the IndustrialStuff packageCould you please add some prefix to that component and units to avoid naming conflict? You have to do it only once and problem will be solved for good. I would do it for pl_ExControls but that is not that easy because they get automatically converted each time from CodeTyphon.
...
After finishing the port I realized that the same component is contained also in the CodeTyphon package pl_ExControls. So, if somebody installs both packages there will be a naming conflict.
Sorry I was shouting too early. Looking more carefully if found:I added the component TA3nalogGauge to the IndustrialStuff packageCould you please add some prefix to that component and units to avoid naming conflict? You have to do it only once and problem will be solved for good. I would do it for pl_ExControls but that is not that easy because they get automatically converted each time from CodeTyphon.
...
After finishing the port I realized that the same component is contained also in the CodeTyphon package pl_ExControls. So, if somebody installs both packages there will be a naming conflict.
There's a new version of zeoslib (v7.2)I am.
Who is responsible of this package ?
In OPM it's still v7.1There were some encoding issues with 7.2, so we decided to stay with 7.1. For more details please do a forum search(I cannot recall the thread name).
btw, imho, there should be a sub-forum for OPM, this thread is toooo longThanks for the suggestion. In my opinion a whole sub-forum for OPM would be an overkill.
Hi, @GetMem, if you can, please update BGRAControls to 5.0 in OPM repository.Thanks for the new version. I updated the central repository.
QuoteIn OPM it's still v7.1There were some encoding issues with 7.2, so we decided to stay with 7.1. For more details please do a forum search(I cannot recall the thread name).
as Zeos developer I am a bit disappointed. I would have hoped that somebody raises a ticket on our Sourceforge tracker if there are issues with Zeos 7.2. Things like that usually can be resolved quickly. For us it is a headache to see that old, unsupported versions keep floating around.OK. Fair enough. I updated to Zeos 7.2. Thanks for the new version.
Is this Version 7.2 or 7.2.4 because it States in OPM as 7.2.0.0 ? The latest stable Version is flaged as 7.2.4-stable at sourceforge. So I expected 7.2.4.0 as Version in OPM.7.2.4. OPM reads the version info from the lpk files which is still 7.2.0 inside zeosdbo-7.2.4-stable.zip.
@lainzQuoteHi, @GetMem, if you can, please update BGRAControls to 5.0 in OPM repository.Thanks for the new version. I updated the central repository.
@lainz
Please try again. It should work now with every Lazarus(1.8.0+) and FPC(3.0.4+) combinations.
GetMem, please could you add the new release to OPM?Done. Thanks for the new version.
1. Error decompressing & installing indy10 for use with RESTDataware.Yes, I saw that error myself 1-2 times. The zipper cannot extract the Indy archive, to be more precise cannot overwrite an already installed Indy folder. I'm not sure what exactly causes the issue, it only happens to Indy, I will try to find a solution soon.
2. Is there any port for mORMot??Unfortunately mORMot doesn't use packages(lpk files) so I cannot add it to the central repository. The whole concept of the package manager is build around lpk files.
Since i cannot see ShapeLine in OPM, i ask to add it.Done. Thanks for the package.
I renamed component files, and moved files in repo.
Wiki-- http://wiki.freepascal.org/ATShapeLine
@GetMem, with the issues on Cocoa and the bar, would it be possible to get an option added to the tree popup-menu for installing the selected item(s)?I will try to add it in the next few days. I'm not sure though how many package will install under cocoa, since it's a relatively new widgetset. Thanks for the feedback.
The installer function seems to work, just the graphics glitch blocking it from being clicked.
Ctrl + R Refresh package list
Ctrl + D Download package
Ctrl + I Install package
Ctrl + E Install package from External Source
Ctrl + U Uninstall package
Ctrl + L Open Local Repository
Ctrl + C Cleanup
Ctrl + P Create Repository Package
Ctrl + O Options
Ctrl + H Help
No joy I'm afraid, seems to get overridden by Lazarus/system hotkeys.It works fine here. Please test with r. 58715. Initially I did not commit the form.
are there any statistics available of how many downloads a package had since it is listed in Online Package Manager?Unfortunately I don't have any statistic about package downloads. I'm not the site maintainer, only a regular user who has upload rights to https://packages.lazarus-ide.org/.
I see tooltips for metapackages, and while tooltip is shown, i Alt+Tab to Firefox. It is Linux gtk2.It's a gtk2 issue, there was a long discussion in the mailing list. Nobody could come up with a complete solution. The problem is modal forms with FormStyle fsStayOnTop "misbehaves" on linux gtk2.
Result of alt+tab is still the same tooltip floating above firefox.
It's a gtk2 issue, there was a long discussion in the mailing list. Nobody could come up with a complete solution. The problem is modal forms with FormStyle fsStayOnTop "misbehaves" on linux gtk2.Yes, you need BringToFront to solve it.
Installed Kaaj Controls. I got error, smth about "see the package graph". (It is GTK2). Now "Package graph" dialog was opened in background - behind OPM. cannot work.As I said in my previous post, modal forms in gtk2 are not working properly. You can always close OPM to access the "package graph" window. For example under windows(just tested) everything works fine.
Yes, you need BringToFront to solve it.No. Unfortunately that's not gonna work.
@ThaddyQuoteYes, you need BringToFront to solve it.No. Unfortunately that's not gonna work.
- Homepage of MaterialDesign - 404@lainz can you help us with the above issues?
- LainzCodeStudio gives 2 build errors on installing (for 2 packages)
Hi, I've:Thank you.
* Restored the material design repository, including a legend that is now part of BGRAControls, with some info about how it was included.
* Added a readme in Lainz Code Studio. For beginners and advanced users.
gtk2. Sometimes I cannot scroll tooltip window - vert scrollbar (for lpk descripn) don't react to clicks. Sometimes it works.Thanks. I will investigate the issue.
I just opened IDE, called OPM, shown tooltip for PasMP and it dont work.
We have a new version of REST Dataware.Done. Thanks for the new version.
Many fixes and new features.
Thank you so much.
win32. Small monitor, OPM window is at the whole screen height. I hover mouse over item which is on the bottom of list. ==> tooltip appears too low, partly of screen.OK. This is easily reproducible. Fixed in r. 58867. Unfortunately I cannot reproduce the gtk2 issue(cannot scroll tooltip window). Everything works fine on my Linux Mint. I will keep trying with some other Linux distro.
Great package manager! :)Thank you Hansaplast. VST(virtualstringtree) which is used to display the package tree, has some issues under cocoa. It's a known bug, hopefully it will be fixed soon. Thanks again for the feedback.
Under Cocoa: the buttons at the bottom have some display issues.
Either some buttons are displayed overlapping the list of packages, or the buttons do not show at all.
Moving the mouse over the area where the buttons are supposed to be, makes them (mostly) visible.
(see attached screenshot - using Lazarus 1.9.0 r58960M FPC 3.0.4 x86_64-darwin-cocoa (alpha))
This doesn't prevent me from using it (love it!), as it's just a cosmetic issue. Just thought I should report it.
Great package manager! :)Thank you Hansaplast. VST(virtualstringtree) which is used to display the package tree, has some issues under cocoa. It's a known bug, hopefully it will be fixed soon.
Under Cocoa: the buttons at the bottom have some display issues.
Please, update https://github.com/wadman/wthreadDone. Thanks for the new version.
Unfortunately we are not able to maintain two repositories, so we decided to keep only one.I have no problem with sourceforge, however I cannot access the link you provided. (https://svn.code.sf.net/p/rest-dataware-components/dataware/trunk)
If you can not use SourceForge, please let me know, I will keep GitHub for a short time.
When you can, yes, it has update.Done. Thanks for the new version.
TLazPackageLinks.AddOnlineLink: PkgFilename=, PkgName=zeosdbo, PkgVersion=7.2
TLazPackageLinks.AddOnlineLink: PkgFilename=, PkgName=zeosdbo, PkgVersion=7.2
TLazPackageLinks.AddOnlineLink: PkgFilename=, PkgName=zmsql, PkgVersion=0.1.20.1
TLazPackageLinks.AddOnlineLink: PkgFilename=, PkgName=zreport, PkgVersion=2.0.11
TLazPackageLinks.AddOnlineLink: PkgFilename=, PkgName=zreport, PkgVersion=2.0.11
.....(snip)
(lazarus:6831): Gdk-CRITICAL **: 14:34:01.219: IA__gdk_draw_pixbuf: assertion 'GDK_IS_PIXBUF (pixbuf)' failed
(lazarus:6831): GLib-GObject-CRITICAL **: 14:34:01.220: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
TApplication.HandleException Access violation
Stack trace:
$B6A53E1A
$002623A0 TDEVICECONTEXTMEMMANAGER__NEWDEVICECONTEXT, line 766 of ./gtk2/gtk2def.pp
$000F7544 TGTK2WIDGETSET__NEWDC, line 5459 of ./gtk2/gtk2widgetset.inc
$00108968 TGTK2WIDGETSET__SAVEDC, line 7481 of ./gtk2/gtk2winapi.inc
$000FE230 TGTK2WIDGETSET__DRAWTEXT, line 1492 of ./gtk2/gtk2winapi.inc
$001A3334 DRAWTEXT, line 215 of ./include/winapi.inc
$00CBA090 TVIRTUALTREECOLUMNS__DRAWBUTTONTEXT, line 7565 of ./vst/opkman_VirtualTrees.pas
$00CBD780 TVIRTUALTREECOLUMNS__PAINTHEADER, line 8911 of ./vst/opkman_VirtualTrees.pas
$00CDDE4C TBASEVIRTUALTREE__PAINT, line 22347 of ./vst/opkman_VirtualTrees.pas
$0019B790 TCUSTOMCONTROL__PAINTWINDOW, line 132 of ./include/customcontrol.inc
$00183BA0 TWINCONTROL__PAINTHANDLER, line 4820 of ./include/wincontrol.inc
$00187D48 TWINCONTROL__WMPAINT, line 6773 of ./include/wincontrol.inc
$0019B6BC TCUSTOMCONTROL__WMPAINT, line 112 of ./include/customcontrol.inc
$00CCFB68 TBASEVIRTUALTREE__WMPAINT, line 16499 of ./vst/opkman_VirtualTrees.pas
$000438F4
TApplication.HandleException Access violation
Stack trace:
$B6A53E1A
$002623A0 TDEVICECONTEXTMEMMANAGER__NEWDEVICECONTEXT, line 766 of ./gtk2/gtk2def.pp
$000F7544 TGTK2WIDGETSET__NEWDC, line 5459 of ./gtk2/gtk2widgetset.inc
$00108968 TGTK2WIDGETSET__SAVEDC, line 7481 of ./gtk2/gtk2winapi.inc
$000FE230 TGTK2WIDGETSET__DRAWTEXT, line 1492 of ./gtk2/gtk2winapi.inc
$001A3334 DRAWTEXT, line 215 of ./include/winapi.inc
$00CBA090 TVIRTUALTREECOLUMNS__DRAWBUTTONTEXT, line 7565 of ./vst/opkman_VirtualTrees.pas
$00CBD780 TVIRTUALTREECOLUMNS__PAINTHEADER, line 8911 of ./vst/opkman_VirtualTrees.pas
$00CDDE4C TBASEVIRTUALTREE__PAINT, line 22347 of ./vst/opkman_VirtualTrees.pas
$0019B790 TCUSTOMCONTROL__PAINTWINDOW, line 132 of ./include/customcontrol.inc
$00183BA0 TWINCONTROL__PAINTHANDLER, line 4820 of ./include/wincontrol.inc
$00187D48 TWINCONTROL__WMPAINT, line 6773 of ./include/wincontrol.inc
$0019B6BC TCUSTOMCONTROL__WMPAINT, line 112 of ./include/customcontrol.inc
$00CCFB68 TBASEVIRTUALTREE__WMPAINT, line 16499 of ./vst/opkman_VirtualTrees.pas
$000438F4
^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[ATApplication.HandleException Access violation
Stack trace:
$B6A53E1A
$002623A0 TDEVICECONTEXTMEMMANAGER__NEWDEVICECONTEXT, line 766 of ./gtk2/gtk2def.pp
$000F7544 TGTK2WIDGETSET__NEWDC, line 5459 of ./gtk2/gtk2widgetset.inc
$00108968 TGTK2WIDGETSET__SAVEDC, line 7481 of ./gtk2/gtk2winapi.inc
$000FE230 TGTK2WIDGETSET__DRAWTEXT, line 1492 of ./gtk2/gtk2winapi.inc
$001A3334 DRAWTEXT, line 215 of ./include/winapi.inc
$00CBA090 TVIRTUALTREECOLUMNS__DRAWBUTTONTEXT, line 7565 of ./vst/opkman_VirtualTrees.pas
$00CBD780 TVIRTUALTREECOLUMNS__PAINTHEADER, line 8911 of ./vst/opkman_VirtualTrees.pas
$00CDDE4C TBASEVIRTUALTREE__PAINT, line 22347 of ./vst/opkman_VirtualTrees.pas
$0019B790 TCUSTOMCONTROL__PAINTWINDOW, line 132 of ./include/customcontrol.inc
$00183BA0 TWINCONTROL__PAINTHANDLER, line 4820 of ./include/wincontrol.inc
$00187D48 TWINCONTROL__WMPAINT, line 6773 of ./include/wincontrol.inc
$0019B6BC TCUSTOMCONTROL__WMPAINT, line 112 of ./include/customcontrol.inc
$00CCFB68 TBASEVIRTUALTREE__WMPAINT, line 16499 of ./vst/opkman_VirtualTrees.pas
$000438F4
TApplication.HandleException Access violation
Stack trace:
$B6A53E1A
$002623A0 TDEVICECONTEXTMEMMANAGER__NEWDEVICECONTEXT, line 766 of ./gtk2/gtk2def.pp
$000F7544 TGTK2WIDGETSET__NEWDC, line 5459 of ./gtk2/gtk2widgetset.inc
$00108968 TGTK2WIDGETSET__SAVEDC, line 7481 of ./gtk2/gtk2winapi.inc
$000FE230 TGTK2WIDGETSET__DRAWTEXT, line 1492 of ./gtk2/gtk2winapi.inc
$001A3334 DRAWTEXT, line 215 of ./include/winapi.inc
$00CBA090 TVIRTUALTREECOLUMNS__DRAWBUTTONTEXT, line 7565 of ./vst/opkman_VirtualTrees.pas
$00CBD780 TVIRTUALTREECOLUMNS__PAINTHEADER, line 8911 of ./vst/opkman_VirtualTrees.pas
$00CDDE4C TBASEVIRTUALTREE__PAINT, line 22347 of ./vst/opkman_VirtualTrees.pas
$0019B790 TCUSTOMCONTROL__PAINTWINDOW, line 132 of ./include/customcontrol.inc
$00183BA0 TWINCONTROL__PAINTHANDLER, line 4820 of ./include/wincontrol.inc
$00187D48 TWINCONTROL__WMPAINT, line 6773 of ./include/wincontrol.inc
$0019B6BC TCUSTOMCONTROL__WMPAINT, line 112 of ./include/customcontrol.inc
$00CCFB68 TBASEVIRTUALTREE__WMPAINT, line 16499 of ./vst/opkman_VirtualTrees.pas
$000438F4
TApplication.HandleException Access violation
Stack trace:
$B6A53E1A
$002623A0 TDEVICECONTEXTMEMMANAGER__NEWDEVICECONTEXT, line 766 of ./gtk2/gtk2def.pp
$000F7544 TGTK2WIDGETSET__NEWDC, line 5459 of ./gtk2/gtk2widgetset.inc
$00108968 TGTK2WIDGETSET__SAVEDC, line 7481 of ./gtk2/gtk2winapi.inc
$000FE230 TGTK2WIDGETSET__DRAWTEXT, line 1492 of ./gtk2/gtk2winapi.inc
$001A3334 DRAWTEXT, line 215 of ./include/winapi.inc
$00CBA090 TVIRTUALTREECOLUMNS__DRAWBUTTONTEXT, line 7565 of ./vst/opkman_VirtualTrees.pas
$00CBD780 TVIRTUALTREECOLUMNS__PAINTHEADER, line 8911 of ./vst/opkman_VirtualTrees.pas
$00CDDE4C TBASEVIRTUALTREE__PAINT, line 22347 of ./vst/opkman_VirtualTrees.pas
$0019B790 TCUSTOMCONTROL__PAINTWINDOW, line 132 of ./include/customcontrol.inc
$00183BA0 TWINCONTROL__PAINTHANDLER, line 4820 of ./include/wincontrol.inc
$00187D48 TWINCONTROL__WMPAINT, line 6773 of ./include/wincontrol.inc
$0019B6BC TCUSTOMCONTROL__WMPAINT, line 112 of ./include/customcontrol.inc
$00CCFB68 TBASEVIRTUALTREE__WMPAINT, line 16499 of ./vst/opkman_VirtualTrees.pas
$000438F4
TApplication.HandleException Access violation
Stack trace:
$B6A53E1A
$002623A0 TDEVICECONTEXTMEMMANAGER__NEWDEVICECONTEXT, line 766 of ./gtk2/gtk2def.pp
$000F7544 TGTK2WIDGETSET__NEWDC, line 5459 of ./gtk2/gtk2widgetset.inc
$00108968 TGTK2WIDGETSET__SAVEDC, line 7481 of ./gtk2/gtk2winapi.inc
$000FE230 TGTK2WIDGETSET__DRAWTEXT, line 1492 of ./gtk2/gtk2winapi.inc
$001A3334 DRAWTEXT, line 215 of ./include/winapi.inc
$00CBA090 TVIRTUALTREECOLUMNS__DRAWBUTTONTEXT, line 7565 of ./vst/opkman_VirtualTrees.pas
$00CBD780 TVIRTUALTREECOLUMNS__PAINTHEADER, line 8911 of ./vst/opkman_VirtualTrees.pas
$00CDDE4C TBASEVIRTUALTREE__PAINT, line 22347 of ./vst/opkman_VirtualTrees.pas
$0019B790 TCUSTOMCONTROL__PAINTWINDOW, line 132 of ./include/customcontrol.inc
$00183BA0 TWINCONTROL__PAINTHANDLER, line 4820 of ./include/wincontrol.inc
$00187D48 TWINCONTROL__WMPAINT, line 6773 of ./include/wincontrol.inc
$0019B6BC TCUSTOMCONTROL__WMPAINT, line 112 of ./include/customcontrol.inc
$00CCFB68 TBASEVIRTUALTREE__WMPAINT, line 16499 of ./vst/opkman_VirtualTrees.pas
$000438F4
TApplication.HandleException Access violation
Stack trace:
$B6A53E1A
$002623A0 TDEVICECONTEXTMEMMANAGER__NEWDEVICECONTEXT, line 766 of ./gtk2/gtk2def.pp
$000F7544 TGTK2WIDGETSET__NEWDC, line 5459 of ./gtk2/gtk2widgetset.inc
$00108968 TGTK2WIDGETSET__SAVEDC, line 7481 of ./gtk2/gtk2winapi.inc
$000FE230 TGTK2WIDGETSET__DRAWTEXT, line 1492 of ./gtk2/gtk2winapi.inc
$001A3334 DRAWTEXT, line 215 of ./include/winapi.inc
$00CBA090 TVIRTUALTREECOLUMNS__DRAWBUTTONTEXT, line 7565 of ./vst/opkman_VirtualTrees.pas
$00CBD780 TVIRTUALTREECOLUMNS__PAINTHEADER, line 8911 of ./vst/opkman_VirtualTrees.pas
$00CDDE4C TBASEVIRTUALTREE__PAINT, line 22347 of ./vst/opkman_VirtualTrees.pas
$0019B790 TCUSTOMCONTROL__PAINTWINDOW, line 132 of ./include/customcontrol.inc
$00183BA0 TWINCONTROL__PAINTHANDLER, line 4820 of ./include/wincontrol.inc
$00187D48 TWINCONTROL__WMPAINT, line 6773 of ./include/wincontrol.inc
$0019B6BC TCUSTOMCONTROL__WMPAINT, line 112 of ./include/customcontrol.inc
$00CCFB68 TBASEVIRTUALTREE__WMPAINT, line 16499 of ./vst/opkman_VirtualTrees.pas
$000438F4
TLazPackageLinks.AddOnlineLink: PkgFilename=, PkgName=Abbrevia, PkgVersion=5.0
TLazPackageLinks.AddOnlineLink: PkgFilename=, PkgName=acs, PkgVersion=3.0
TLazPackageLinks.AddOnlineLink: PkgFilename=https://github.com/Alexey-T/ATBinHex-Lazarus/archive/master.zip, PkgName=ATBinHex-Lazarus-master, PkgVersion=1.0
I am using fpcupdeluxe 1.6.2n to install Lazarus "stable" 1.8.4 and FPC "stable" 3.0.4.It looks like VTV(Virtual Tree View) is misbehaving on arm. OPM depends on VTV because the package structure is displayed in a virtual tree. Unfortunately I don't have a device with arm proc. to debug, so my hands are tied.
The IDE works.
HOWEVER, the first thing I do is I start to add the onlinepackagemanager. It does compile, but it makes problems: its window is always empty.
The Onlinepackagemanager says "getting data, plz wait", "getting json", etc.etc. then comes up with an EMPTY window instead of with the 147 packages.
I started Lazarus from a terminal and that terminal gives me errors:
What to do about these errors?
any clue to repair BGRA "FULL" installation? thxApparently some files are missing(wrong version/bitness) from package BGRAControlsFX. Please try the following:
following link is a video capture about what happens (2mins 55secs)
https://drive.google.com/open?id=1wqHDzC0z3Bb5FtnVW4aviClODp_txlVf
Hopefully it will fix the problem.
no sorry, this summons around 25 FATALSWhat about uninstalling BGRAControlsFX? At least temporarily.
1st fatal is "unable to find file fxbutton.pas" something
I did already try that =>Quoteno sorry, this summons around 25 FATALSWhat about uninstalling BGRAControlsFX? At least temporarily.
1st fatal is "unable to find file fxbutton.pas" something
We're fixing bgra issues installing in trunk.Thanks for the feedback. I experienced the issues with trunk-trunk on win7/win10, no problem with Lazarus 1.8/FPC 3.0.4. I assume the bug is somehow fpc related(?), but I will run the tests again soon.
https://forum.lazarus.freepascal.org/index.php/topic,42847.msg300117/topicseen.html#new
FX package is not maintained.
Is there a way to go to a previous version of an installed package using OPM?Unfortunately no. OPM is not a source version control, usually it contains the latest stable packages, or at least this is the goal. Perhaps if you explain the issue in more details we can help.
Under the "onlinepackagemanager" folder appear 2 ZEOS folders (see attached) one looks like the older version and the one with no version in the folder name is the version 7.2.4. I put this because I don't know if its normal or if it was a download when I was learning to use OPM.Your findings are correct. Not so long ago I was asked by a Zeos developer to update to version 7.2. For more details please read this: http://forum.lazarus.freepascal.org/index.php/topic,34297.msg293331.html#msg293331. You probably (re)installed Zeos recently, this is why you have two folders in the local repository. The recommended version by the Zeos developers is 7.2
Don't know if this can help. By now I blame ZEOS. The code compiled before the update is working fine, but after updating it stop working.Please file a bugreport here: http://zeoslib.sourceforge.net/viewforum.php?f=40. If the issue is fixed, let me know so I can update OPM.
Hi @GetMem, please you can update BGRAControls to 5.0.3? Thanks!Done. Thanks for the new version.
could OPM also check the path of an installed package before showing "installed=yes"?!OPM basically ask the IDE if a particular package is installed or not, through the PackageEditingInterface. It does not matter if the package was installed via OPM or another method.
Reason:
I have some packages without using OPM to install them, but OPM show them up as i installed them with OPM.
Ok, no probs, but would be useful, eventually.
Thanks a lot for this great tool!!
I searched the forum but didn't found a solution:Unofrtunately you cannot uninstall a package with OPM in Lazarus 1.8.4. It's possible though in Lazarus 2.0 or Trunk.
How can I uninstall a via OPM installed package (Indy10)? In the version delivered with Lazarus 1.8.4 FPC 3.0.4 there is no uninstall button in opm.
And under Install/Uninstall Packages it isn't listed too.Every installed designtime package is listed in "Install/Uninstall Packages" dialog's left list. Just search for indylaz, if you cannot find it, then it's not installed. If indy was installed via OPM and it's no logner installed, you can press the "Cleanup" button which will remove the package directory from the local repository. You can also deleted it manually by navigating to the Local Repo folder(see attached screenshot).
Ok, in the "Install/Uninstall Packages" it is not listed, but in the OPM it is marked as installed.This is only possible for runtime packages(AFAIK Indy is a designtime package). Of course it can be a bug too, the version shipped with 1.8 is very old. Lot of development has done since then.
Is it possible, that the opm marks a package as installed when it is only loaded, but not installed?
Then it isn't marked as installedOK. It's a bug then. If you can, please check with trunk if the same issue exists, so I can fix it. Thanks.
Hi sir.Done. Thanks for the new version.
We have a new version of REST Dataware. You can update OPM.
Thanks.
Sorry but I had to ask:OPM is constantly changing, the trunk version of OPM won't compile with Lazarus 1.8 or Lazarus 2.0.
Why OPM is not in OPM?
I did tests also with 2.0 RC2 and with trunk 59715. In both versions a package is marked as installed when the package is only loaded via "Open Package File (.lpk)".Fixed in r. 59717, please test. Thanks again for the feedback.
Tip for macOS users with Little Snitch as their firewall;this is also true for windows and windows firewall, linux works perfectly out of the box :)
I got the "unable to resolve packages.lazarus-ide.org" error.
This is caused by Little Snitch since it automatically blocks applications that are not signed.
In the Little Snitch rules one needs to enable/allow this for Lazarus.
Tip for macOS users with Little Snitch as their firewall;Thanks for the feedback.
I got the "unable to resolve packages.lazarus-ide.org" error.
This is caused by Little Snitch since it automatically blocks applications that are not signed.
In the Little Snitch rules one needs to enable/allow this for Lazarus
I had some problems with Lazarus 2 RC2, first I needed to install the 32 bit cross compiler to install packages with OPM, else any package installation says can't find ppc386, maybe because the project I wish to install packages is configured to 32 bit? (Edit: It makes sense to install the cross compiler).Yes, most likely the packages are configured to 32 bit. OPM only passes the package to the IDE, the IDE decides what compiler to use. I will try to improve this in the future.
Well, then I need to install indylaz, and it says Unit not found 'IdAboutVCL'.I saw this before, when the Indy folder already exists, and you try to install it again, the extraction fails for some reason. Unfortunately I have no idea why.
Edit: Seems that it fails to extract the 'Core' folder since it's almost empty, I downloaded it manually from the zip file link.
First, congrats for the OPM tool, it's a very good thing for Lazarus.Thank you.
I have two Lazarus installs for working (2.0 RC2 Linux 64 bits and 1.8.4 Windows 64 bits). In both, I use the IBX package and it's version 2.2.0 that OPM has currently.Yes, I can update to 2.3.2, but it has separate files for windows and linux, which is strange: http://www.mwasoftware.co.uk/ibx
I see in that same forum 2.3.2 is available.
How does OPM work? Does it depend on you to make the new version available manually?Usually yes, but the package maintener can provide a json file, which will notify the user if a new version of the package is available.
Yes, I can update to 2.3.2, but it has separate files for windows and linux, which is strange: http://www.mwasoftware.co.uk/ibx
Usually yes, but the package maintener can provide a json file, which will notify the user if a new version of the package is available.
Download is slow, i'm downloading at 200 kb/s when I regularly download between 3 and 4 mb/s from GitHub. Not bad, just noticed it when trying to download Castle Game Engine that's maybe a really big package.Most likely the download speed is limited by the site administrator(@Marc). Usually a package is a few MB in size, so 200 KB/s should be OK in most cases. Castle Game Engine and RestDataware are the two exception with 126 MB size and 154 MB respectively. Even with +100MB size, a few minutes is more then enough to download a package. Not exceptional but acceptable in my opinion. :)
Maybe we can mirror it at github with github downloads in a project, also you can get the number of downloads from each package.I'm not against it, but somebody must maintain the mirror. Unfortunately my time is very limited lately.
I will investigate the GitHub API if we can build an automatic mirror.Looks good.
Edit, found this: https://github.com/hypermodules/gh-release-assets
You pass an array of files and all of them are uploaded.
I was building one with Lazarus, but I have no idea on how to make a post request with a zip file on it.I use the following code to upload zip files to my server:
I did tests also with 2.0 RC2 and with trunk 59715. In both versions a package is marked as installed when the package is only loaded via "Open Package File (.lpk)".Fixed in r. 59717, please test. Thanks again for the feedback.
Sry for my late answer!No problem.
Thanks. I will add it to 2.0 RC4.
I tested it with trunk (r. 59862) and it is now ok.
But in 2.0.0 RC3 it is still marked as installed. Any chance to get a fix for 2.0.0?
I guess that's because external repo JSON says that it is 0.2.1.0, but after installation it reads from LPK that it is still 0.2.0.0. Similar goes for ColorPalette. External repo reports 0.2.4.0, OPM repo reports 0.2.2.0, and after external repo installation OPM says we have 0.2.3.0 so external repo is still reported as NEW.Yes, you're right @avra. OPM reads the version info from the package file, if the external json reports a higher value then the one in the lpk, OPM will display NEW even after you install the package from the developers page. This is confusing for the user, but technically it's not a bug. I can update the lpk files in the central repository if needed, to match the one in the json file. But this should be done by the package maintainer, since I really don't know which is the correct version(lpk vs json).
Rest Dataware has several packages, but each package outputs PPUs in different dir. Since packages use several same units, we end up with the same PPUs existing in several directories. That bothers Lazarus which reports that PPUs with same name are found at several places. I have attached modified LPK files for these packages changed in a way that they all output PPUs to the same dir, so each PPU exist only once. That way Lazarus will not ask us to ignore PPUs found in different places since they will be all in one place and no duplicates.Thank you.
I will report here as well: https://github.com/Rest-Dataware/RDW-Componente/issues
EDIT: I just reported to the author...
I looked at OPM's PascalSCADA a little deeper, and I find it odd to see that directories docs and examples are missing. I have understanding for other directories and Delphi left overs, but I think that examples and docs are essential for using PascalSCADA. I found my self downloading original repo archive just to extract these. GetMem, could you please take them back?From where did you download the repo? I cannot access pascalscada.com.
I have also faced a problem during compilation of OPM's PascalSCADA packages that Lazarus was creating a copy of all lfm files in output lib directory, so it complained later that there were duplicates and asked if I would ignore that and proceed with compilation. I did and it works, but strange thing is that I still can't understand how could this have happened. Anyone, I would really appreciate hints for understanding it since I would like to have it fixed.Strange...I did not noticed this behaviour before.
From where did you download the repo? I cannot access pascalscada.com.https://sourceforge.net/projects/pascalscada/files/
Download is slow, i'm downloading at 200 kb/s...
If I understood well, I could have my own repositories (zip files) made by us (team), getting the sources from original repositories.Yes.
The private repository for OPM could be just a folder in our network?You have to set up a local http server, then copy all the zip files + the "packagelist.json" in a single directory. Both the zip files and the "packagelist.json" is created automatically by OPM.
I just tested my (written in 2014) "Example Non-Visual component" in Lazarus 2.x FPC 3.x and it still compiles and installs OK, so can we add it to OPM please?Done. Thanks for the new package.
Zip files and json are in https://svn.code.sf.net/p/lazarus-ccr/svn/components/examplecomponent/latest_stable/updates/
Wiki page: http://wiki.lazarus.freepascal.org/Lazarus_Nongraphical_Visual_Component_Example_Cod|
I'm thinking if it is possible to point to directly to, for example, a Github project. When the author release a new version, it exists as a .zip file. The only thing that is missing is the .json on those repositories, if I understood rightThis feature is already implemented. The steps are described here: http://wiki.freepascal.org/Online_Package_Manager#Create_JSON_for_updates
So, each project author that would like to show its project on OPM could just put the .json file in their repository. Then we can just point to there and if OPM find that file, it will be included automatically.
Jujiboutils package version in Online Package Manager is 2.1.0 (released in 2014). There is a new version (2.3.0) since 2017. Is possible to update OPM with the new version? https://sourceforge.net/projects/lazarus-ccr/files/Jujiboutils/Thanks for the feedback. I updated the central repository. When you release a new version please let me know, so I can update in OPM.
Hi jujibo,QuoteJujiboutils package version in Online Package Manager is 2.1.0 (released in 2014). There is a new version (2.3.0) since 2017. Is possible to update OPM with the new version? https://sourceforge.net/projects/lazarus-ccr/files/Jujiboutils/Thanks for the feedback. I updated the central repository. When you release a new version please let me know, so I can update in OPM.
Will not be backported to Laz 2.0 which comes with fpc 3.0.4 and thus is not affected.
in the bugreport 34804 wp writesIt's already in the merge list for RC4(see r60024): http://wiki.freepascal.org/Lazarus_2.0_fixes_branch#Submitted_by_developer_.2F_committer.2C_tested.2C_waiting_to_be_mergedQuoteWill not be backported to Laz 2.0 which comes with fpc 3.0.4 and thus is not affected.upcoming Laz 2.0 is affected if you use the fpc-fixes 3.2. Actual you cannot use OPM/VTV with fpc-fixes 3.2
In my opinion your changes are safe.Normally yes, but there are so many stupid errors, and I only believe that it is safe when the changed version really does compile.
I don't see why different widgetset would behave differently in this context. More over you did it with ifdef, so Lazarus 2.0 with FPC 3.0.4 is not effected.Yes, essentially it is a Windows-only change related to some ActiveX thing. But the other widgetsets use some faked ActiveX unit. Since the call from VTV to that function must be valid in all widgetsets the faked ActiveX routines must be changed as well. I am not absolutely sure that all the changes were necessary because I have the feeling that some of the other-widgetset code is no longer used. And as I said - there are so many stupid errors...
BTW: VTV is on Version 7.1. And Lazarus have (with OPM) V5 and IMHO trouble to use V4, if you (want) to use OPM. How will it work if somebody create VTV V6 or VTV V7 ? Or is this a question only for the VTV maintainer?GetMem, looking back I think it was a wise decision in your first version of OPM in which you have renamed everything of VTV to a lazarus-only version, and I who was among those who urged you to use the standard VTV was wrong... Having a Lazarus-only VTV would have solved all these issues, it would also have solved the ugly compatibility merging issues of our version to the official repo.
t is an changed Interfacedeclaration, not an simple function change , so all widgetsets are affect, if they use the interface. If they have an fake ActiveX, using this Interface, it will also rise an error on a (clean) recompile.Of course it will be raised, but @wp fixed for every widgetset supported by VTV. More over he did it with ifdef, so Lazarus 2.0/FPC 3.0.4(the latest official release) won't be effected. Other issues with newer version of FPC(if any) can be fixed later in trunk.
So i think - my point of view - it will be very fast raised :-) or not, if it is windows only.
BTW: VTV is on Version 7.1. And Lazarus have (with OPM) V5 and IMHO trouble to use V4, if you (want) to use OPM. How will it work if somebody create VTV V6 or VTV V7 ? Or is this a question only for the VTV maintainer?VTV5 is the highest version which will compile with FPC 3.0.4. V6+ needs some advanced generic features. More over, according to the package maintainer(@luiz) the large part of the new features in V6 is windows specific. So you don't gain anything by using V6 unless of course you're under windows. The real issue is that you cannot use other version then v5 while OPM is installed.
looking back I think it was a wise decision in your first version of OPM in which you have renamed everything of VTV to a lazarus-only version, and I who was among those who urged you to use the standard VTV was wrong... Having a Lazarus-only VTV would have solved all these issues, it would also have solved the ugly compatibility merging issues of our version to the official repo.In theory we still can go back to that configuration, it shouldn't take more then 30 minutes to make the necessary adjustments. The real issue is to convince some core developers to go back to the previous stage. It took 1.5 years until VTV was allowed to trunk, now it would be really strange to suggest to delete it. :) Anyways I would choose v5 this time, since you and others added cool new features like support for: high dpi, arm processors, cocoa/qt5 widgetsets, etc.
It took 1.5 years until VTV was allowed to trunk, now it would be really strange to suggest to delete it.Sometimes decisions turn out to be wrong, that's life. Do you want to contact the other devs, or should I do?
Do you want to contact the other devs, or should I do?Please do, but I think is too late for 2.0 anyways.
@po123
Just uncheck the "Always force download and extract", if the zip is available in the local repository, OPM should install it from there.
I updated my previous post.
@Xor-el
Yes I can, but the problem is the accuracy of the information. For example you keep your packages up to date, frequently submitting new versions, but others don't do that. By default, I can add for each package a few supported platforms like: windows, linux, osx which is reasonable, but then if somebody finds that a particular package fails under osx for example, it looks bad for OPM.
Ok, I do understand, but here is a suggestion, if the developer of the package provides this information, we add it else we leave it empty.It's sounds reasonable, but I already see questions for empty rows like: "This package does not run on any platform?, @getmem did you forget to add the information?" :D
What do you think?
I think, if this information is a part of the package data and is maintainex by the ppackage developer it will possible for OPM. IMHO OPM can only distribute information, mainained in the package.I strongly agree with this one.
@Xor-el:D :D :DQuoteOk, I do understand, but here is a suggestion, if the developer of the package provides this information, we add it else we leave it empty.It's sounds reasonable, but I already see questions for empty rows like: "This package does not run on any platform?, @getmem did you forget to add the information?" :D
What do you think?
I don't know if this has been mentioned before, or if something is wrong on my side. But when I use OPM to install a package, such as ATBinHex, on Laz-trunk / fpc-3.0.4 / 64 bit on Win10 the download and compilation work find, but the IDE is not rebuilt. Going to "Package" > "Install/unistall packages" I see the package in the right list "Available for installation".I fixed the bug in r. 60106. Please test.
When I do the same with Laz-trunk / fpc-3.0.4 / 32 bit everything is ok.
Can you please update the version info from 1.7.2.0 to 1.7.3.0 in the lpk files(kcontrolsbase, kcontrolslaz)? After the package is downloaded, OPM reads the version from the lpk files and shows 1.7.2.0.
"ForceNotify" : true,
"InternalVersion" : 1,
But the repo version still 1.7.2. Why?I have to update the central repository manually(I just did it).
How can I force the repo version to update?Unfortunately you cannot update the main repository, not yet at least.
Btw. Do you plan some automation of this? I mean so that I am able to modify everything myself, through some maintenance login.It's on the todo list. I wasn't able to implement it, mainly because of the lack of time.
GetMemDone. I also fixed the extraction issue. You can overwrite an already installed indy instance. Until now, a few read-only jpg's prevented the extraction/overwrite. Please test.
Please update in OPM indy10
last version from svn r5494
thanks.
I will update the package after the bug is fixed. I will also rename the package and change the URL.I was just notified by the author that patch has been applied.
I downloaded the package from the author's webpage(https://github.com/dgaspary/fpOdf), but I cannot compile. It has "Stax" in the dependency list. What is Stax?I will update the package after the bug is fixed. I will also rename the package and change the URL.I was just notified by the author that patch has been applied.
New version 1.0.3 of LazBarCodes for OPM at https://sourceforge.net/projects/lazarus-ccr/files/LazBarcodes/lazbarcodes-1.0.3.zip/download, the update-json is at https://sourceforge.net/projects/lazarus-ccr/files/LazBarcodes/OPM/update_lazbarcodes.json/download.Done. Thanks for the new version.
In the new version, internally used units (among them urender) have been renamed to avoid naming conflict with PL_APE ("lbc_" prefix instead of "u"). The main unit is still called "ubarcodes.pas" and this, hopefully, avoids breakage of existing user code.
New version 1.0.3 of LazBarCodes for OPMWonderful. Thank you!
...
In the new version, internally used units (among them urender) have been renamed to avoid naming conflict with PL_APE ("lbc_" prefix instead of "u"). The main unit is still called "ubarcodes.pas" and this, hopefully, avoids breakage of existing user code.
I downloaded the package from the author's webpage(https://github.com/dgaspary/fpOdf), but I cannot compile. It has "Stax" in the dependency list. What is Stax?My fault. Sorry for the confusion. At first look at the repo I didn't notice mentioned changes so that was unexpected. I have reported the issue to the author: https://github.com/dgaspary/fpOdf/issues/2.
Edit: OK I found it, but fpodf still fails on Lazarus Trunk/FPC 3.0.4(see attached image). I can fix it(lazfileutils to uses), but it would be better if the package maintainer does it in the official repository.
I have reported the issue to the author: https://github.com/dgaspary/fpOdf/issues/2.I have fixed HelloWorld ODF example for Windows, and reported it as another issue. Now everything compiles and HelloWorld demo ODF file is created and tested with LibreOffice. Author has just informed me that all patches have been applied.
I have fixed HelloWorld ODF example for Windows, and reported it as another issue. Now everything compiles and HelloWorld demo ODF file is created and tested with LibreOffice. Author has just informed me that all patches have been applied.Thanks avra. I updated the central repository. Both the package and the demo project works fine.
I updated the central repository. Both the package and the demo project works fine.Great, thanks! ;)
GetMem, could you add the new version 1.0.4 of LazBarCodes to the repo? Now the barcodes have a method for saving to graphic file:Done. Thanks for the new version.
- download: https://sourceforge.net/projects/lazarus-ccr/files/LazBarcodes/lazbarcodes-1.0.4.zip/download
- json file: https://sourceforge.net/projects/lazarus-ccr/files/LazBarcodes/OPM/update_lazbarcodes.json/download
Could not install FPSpreadsheet via OPM.Just tested, works fine here. Firewall, AV? Maybe slow connection. You can try increase the connection timeout(OPM-->Options-->General).
I get the error "error reading data from socket"
CodeSigningHelper | GitLab trunk version compiles, OPM version doesn't. OPM version should be updated. |
KaajControls | Needs fpgui_toolkit package which is not in OPM. Strange. |
LazAutoUpdate | After adding LCLPlatformDef to uses section of VersionSupport.pas compilation is fine. Fix reported to the author. |
LazProfiler | Problem with Generics. Reported to the author. |
OpenWeatherMap | Compilation fixed and reported to author. Demos still return response code 401 which seams to be an authentication issue. |
PoweredBy | Compilation fails on Lazarus 2.0+. Fixed and reported https://bugs.freepascal.org/view.php?id=35160 |
CodeSigningHelper Fixed. KaajControls Unfortunately fpgui has two package with the same, one for windows one for linux. Since each package name must be unique in OPM, fpgui_tools cannot be installed automatically. This is the reason why I removed in the past, I also removed KaajControls now, if somebody finds a workaround I can add it back. LazAutoUpdate Fixed. LazProfiler Although it would be nice if the package compiles with Lazarus 2.0, the author explicitly stated that the package only works with FPC/Lazarus trunk(see attached screenshot). I see no problem here. OpenWeatherMap Fixed. PoweredBy Fixed.
[GetMem]Unfortunately I'm out of ideas. Can somebody else test if the package can be installed or not?
av not installed. Other components succefull installers.
error gif
https://s2.gifyu.com/images/65465.gif
thanks for checking the packages regularly. It helps me a lot.You're most welcome and thank you for OPM. OPM and FpcUpD have really made some things much easier then they used to be. With them, docking IDE and embedded form designer, Lazarus can finally fully shine and fight for the place it deserves.
Could not install FPSpreadsheet via OPM.This does not seem to be an error message from fpspreadsheet. Which Lazarus version are you having? From your video I see that the error is occuring in the download phase at the end of the laz_fpspreadsheet package - there are more packages to follow. There seems to be a problem with the connection to the repository. Install again, or download separately or download from the primary site https://sourceforge.net/projects/lazarus-ccr/files/FPSpreadsheet/fpspreadsheet-1.10.1.zip/download (which is the same version), then install manually.
I get the error "error reading data from socket"
Thanks for OPM. It is a fantastically useful tool.
I found that BareGame has a few missing files, and reported it to the author.
@ThausandYou hero GetMem !!!
I updated the central repository with the latest version of synapse, patch for synaser included. Now everthing should work fine. Please test.
Free Pascal Compiler version 3.0.4-r37149 [2019/03/13] for arm
Copyright (c) 1993-2017 by Florian Klaempfl and others
(1002) Target OS: Linux for ARMHF
(3104) Compiling laz_synapse.pas
(3104) Compiling asn1util.pas
(3104) Compiling synautil.pas
$HOME/bin/lazarus/02000000/config/onlinepackagemanager/packages/synapse40.1/jedi.inc(611,4) Error: (2050) Illegal assembler style specified "INTEL"
(3104) Compiling synafpc.pas
$HOME/bin/lazarus/02000000/config/onlinepackagemanager/packages/synapse40.1/synafpc.pas(103,1) Fatal: (10026) There were 1 errors compiling module, stopping
Fatal: (1018) Compilation aborted
Error: $HOME/bin/fpc/3.0.4/bin/arm-linux/ppcarm returned an error exitcode
I read if is report error and fix forum or read code what wrong and fix.The only asm-command in the Synapse library is in synaser.pas and it is surrounded by IFDEF WIN32. So for Linux versions, no asm is ever used. So you can safely delete that {$ASMMODE Intel} line in jedi.inc.
Hint: (11030) Start of reading config file /home/pi/bin/fpc/3.0.4/bin/etc/fpc.cfg
Hint: (11031) End of reading config file /home/pi/bin/fpc/3.0.4/bin/etc/fpc.cfg
Free Pascal Compiler version 3.0.4-r37149 [2019/03/13] for arm
Copyright (c) 1993-2017 by Florian Klaempfl and others
(1002) Target OS: Linux for ARMHF
(3104) Compiling laz_synapse.pas
(3104) Compiling asn1util.pas
(3104) Compiling synautil.pas
(3104) Compiling synafpc.pas
synafpc.pas(81,28) Hint: (5024) Parameter "Module" not used
synafpc.pas(81,48) Hint: (5024) Parameter "Buffer" not used
synafpc.pas(81,63) Hint: (5024) Parameter "BufLen" not used
(9009) Assembling synafpc
synautil.pas(637,96) Warning: (5043) Symbol "TimeSeparator" is deprecated
synautil.pas(707,27) Hint: (5057) Local variable "x" does not seem to be initialized
synautil.pas(1981,3) Note: (5027) Local variable "BackStop" is assigned but never used
synautil.pas(2121,88) Warning: (5043) Symbol "ShortMonthNames" is deprecated
synautil.pas(2122,87) Warning: (5043) Symbol "ShortMonthNames" is deprecated
synautil.pas(89,22) Hint: (5023) Unit "synafpc" not used in synautil
(9009) Assembling synautil
asn1util.pas(333,18) Warning: (5089) Local variable "s" of a managed type does not seem to be initialized
asn1util.pas(468,32) Hint: (5057) Local variable "at" does not seem to be initialized
(9009) Assembling asn1util
(3104) Compiling blcksock.pas
(3104) Compiling synsock.pas
ssfpc.inc(713,40) Hint: (5091) Local variable "he" of a managed type does not seem to be initialized
ssfpc.inc(714,26) Warning: (5043) Symbol "HostToNet" is deprecated
ssfpc.inc(822,34) Hint: (5091) Local variable "he" of a managed type does not seem to be initialized
ssfpc.inc(824,18) Warning: (5043) Symbol "HostToNet" is deprecated
ssfpc.inc(411,50) Hint: (5024) Parameter "SockProtocol" not used
ssfpc.inc(411,64) Hint: (5024) Parameter "SockType" not used
ssfpc.inc(413,36) Hint: (5024) Parameter "Family" not used
ssfpc.inc(413,58) Hint: (5024) Parameter "SockType" not used
ssfpc.inc(884,25) Warning: (5043) Symbol "NetToHost" is deprecated
ssfpc.inc(884,44) Hint: (5091) Local variable "a" of a managed type does not seem to be initialized
ssfpc.inc(412,38) Hint: (5024) Parameter "Family" not used
ssfpc.inc(412,46) Hint: (5024) Parameter "SockProtocol" not used
ssfpc.inc(412,60) Hint: (5024) Parameter "SockType" not used
ssfpc.inc(77,30) Hint: (5024) Parameter "stack" not used
ssfpc.inc(75,3) Hint: (5023) Unit "synafpc" not used in synsock
(9009) Assembling synsock
(3104) Compiling synacode.pas
synacode.pas(1101,19) Hint: (5057) Local variable "MDContext" does not seem to be initialized
synacode.pas(1123,19) Hint: (5057) Local variable "MDContext" does not seem to be initialized
synacode.pas(1145,19) Hint: (5057) Local variable "MDContext" does not seem to be initialized
synacode.pas(1205,31) Hint: (5057) Local variable "W" does not seem to be initialized
synacode.pas(1295,14) Hint: (5028) Local type "Pinteger" is not used
synacode.pas(1329,23) Hint: (5057) Local variable "SHA1Context" does not seem to be initialized
synacode.pas(1351,23) Hint: (5057) Local variable "SHA1Context" does not seem to be initialized
synacode.pas(1373,23) Hint: (5057) Local variable "SHA1Context" does not seem to be initialized
synacode.pas(1459,19) Hint: (5057) Local variable "MDContext" does not seem to be initialized
(9009) Assembling synacode
(3104) Compiling synaip.pas
(9009) Assembling synaip
blcksock.pas(362,33) Hint: (5024) Parameter "Stub" not used
blcksock.pas(1825,17) Hint: (5057) Local variable "sin" does not seem to be initialized
blcksock.pas(1842,15) Hint: (5057) Local variable "sin" does not seem to be initialized
blcksock.pas(1907,15) Hint: (5057) Local variable "Sin" does not seem to be initialized
blcksock.pas(1927,13) Hint: (5057) Local variable "Sin" does not seem to be initialized
blcksock.pas(2639,46) Hint: (5057) Local variable "x" does not seem to be initialized
blcksock.pas(3012,16) Hint: (5057) Local variable "FDSet" does not seem to be initialized
blcksock.pas(1248,35) Hint: (5024) Parameter "Host" not used
blcksock.pas(1289,25) Hint: (5024) Parameter "Buffer" not used
blcksock.pas(1289,42) Hint: (5024) Parameter "Len" not used
blcksock.pas(1294,25) Hint: (5024) Parameter "Buffer" not used
blcksock.pas(1294,42) Hint: (5024) Parameter "Len" not used
blcksock.pas(4376,47) Hint: (5058) Variable "WsaDataOnce" does not seem to be initialized
(9009) Assembling blcksock
(3104) Compiling clamsend.pas
(9009) Assembling clamsend
(3104) Compiling dnssend.pas
(9009) Assembling dnssend
(3104) Compiling ftpsend.pas
(9009) Assembling ftpsend
(3104) Compiling ftptsend.pas
(9009) Assembling ftptsend
(3104) Compiling httpsend.pas
httpsend.pas(403,64) Hint: (5091) Local variable "Para" of a managed type does not seem to be initialized
httpsend.pas(403,58) Hint: (5091) Local variable "Path" of a managed type does not seem to be initialized
httpsend.pas(403,52) Hint: (5091) Local variable "Port" of a managed type does not seem to be initialized
httpsend.pas(403,46) Hint: (5091) Local variable "Host" of a managed type does not seem to be initialized
httpsend.pas(403,40) Hint: (5091) Local variable "Pass" of a managed type does not seem to be initialized
httpsend.pas(403,34) Hint: (5091) Local variable "User" of a managed type does not seem to be initialized
httpsend.pas(403,28) Hint: (5091) Local variable "Prot" of a managed type does not seem to be initialized
(9009) Assembling httpsend
(3104) Compiling imapsend.pas
(9009) Assembling imapsend
(3104) Compiling ldapsend.pas
ldapsend.pas(723,24) Hint: (5057) Local variable "Svt" does not seem to be initialized
ldapsend.pas(988,28) Hint: (5057) Local variable "xt" does not seem to be initialized
ldapsend.pas(1151,38) Hint: (5057) Local variable "x" does not seem to be initialized
ldapsend.pas(1222,33) Hint: (5057) Local variable "xt" does not seem to be initialized
(9009) Assembling ldapsend
(3104) Compiling mimeinln.pas
(3104) Compiling synachar.pas
(3104) Compiling synaicnv.pas
(9009) Assembling synaicnv
synachar.pas(1145,42) Hint: (5057) Local variable "b4" does not seem to be initialized
synachar.pas(1145,38) Hint: (5057) Local variable "b3" does not seem to be initialized
synachar.pas(1145,34) Hint: (5057) Local variable "b2" does not seem to be initialized
synachar.pas(1145,30) Hint: (5057) Local variable "b1" does not seem to be initialized
synachar.pas(1262,42) Hint: (5057) Local variable "b4" does not seem to be initialized
synachar.pas(1262,38) Hint: (5057) Local variable "b3" does not seem to be initialized
synachar.pas(1262,34) Hint: (5057) Local variable "b2" does not seem to be initialized
synachar.pas(1262,30) Hint: (5057) Local variable "b1" does not seem to be initialized
synachar.pas(1329,33) Hint: (5057) Local variable "SourceTable" does not seem to be initialized
synachar.pas(1340,40) Hint: (5057) Local variable "b4" does not seem to be initialized
synachar.pas(1340,36) Hint: (5057) Local variable "b3" does not seem to be initialized
synachar.pas(1340,32) Hint: (5057) Local variable "b2" does not seem to be initialized
synachar.pas(1340,28) Hint: (5057) Local variable "b1" does not seem to be initialized
synachar.pas(1393,37) Hint: (5091) Local variable "ucsstring" of a managed type does not seem to be initialized
synachar.pas(1419,35) Hint: (5057) Local variable "TargetTable" does not seem to be initialized
synachar.pas(1447,29) Hint: (5091) Local variable "t" of a managed type does not seem to be initialized
(9009) Assembling synachar
(9009) Assembling mimeinln
(3104) Compiling mimemess.pas
(3104) Compiling mimepart.pas
(9009) Assembling mimepart
(9009) Assembling mimemess
(3104) Compiling nntpsend.pas
(9009) Assembling nntpsend
(3104) Compiling pingsend.pas
pingsend.pas(337,3) Note: (5025) Local variable "b" not used
pingsend.pas(430,30) Hint: (4035) Mixing signed expressions and longwords gives a 64bit result
pingsend.pas(479,3) Hint: (5028) Local const "SIO_ROUTING_INTERFACE_QUERY" is not used
pingsend.pas(481,3) Note: (5025) Local variable "ICMP6Ptr" not used
pingsend.pas(482,3) Note: (5025) Local variable "s" not used
pingsend.pas(483,3) Note: (5025) Local variable "b" not used
pingsend.pas(484,3) Note: (5025) Local variable "ip6" not used
pingsend.pas(485,3) Note: (5025) Local variable "x" not used
pingsend.pas(137,24) Hint: (5024) Parameter "Value" not used
pingsend.pas(142,38) Hint: (5024) Parameter "Host" not used
pingsend.pas(87,32) Hint: (5023) Unit "synafpc" not used in pingsend
(9009) Assembling pingsend
(3104) Compiling pop3send.pas
(9009) Assembling pop3send
(3104) Compiling slogsend.pas
(9009) Assembling slogsend
(3104) Compiling smtpsend.pas
(9009) Assembling smtpsend
(3104) Compiling snmpsend.pas
(3104) Compiling synacrypt.pas
synacrypt.pas(77,23) Hint: (5024) Parameter "Key" not used
synacrypt.pas(1693,16) Hint: (5057) Local variable "t" does not seem to be initialized
synacrypt.pas(1994,14) Hint: (5057) Local variable "tk" does not seem to be initialized
synacrypt.pas(1992,3) Note: (5025) Local variable "n" not used
synacrypt.pas(69,32) Hint: (5023) Unit "synafpc" not used in synacrypt
(9009) Assembling synacrypt
snmpsend.pas(558,56) Hint: (5057) Local variable "Svt" does not seem to be initialized
snmpsend.pas(813,19) Hint: (4079) Converting the operands to "Int64" before doing the add could prevent overflow errors.
snmpsend.pas(1172,60) Hint: (5091) Local variable "s" of a managed type does not seem to be initialized
snmpsend.pas(1160,3) Note: (5027) Local variable "col" is assigned but never used
(9009) Assembling snmpsend
(3104) Compiling sntpsend.pas
sntpsend.pas(309,13) Hint: (5057) Local variable "q" does not seem to be initialized
sntpsend.pas(338,13) Hint: (5057) Local variable "q" does not seem to be initialized
(9009) Assembling sntpsend
(3104) Compiling synadbg.pas
synadbg.pas(60,51) Hint: (5023) Unit "synafpc" not used in synadbg
(9009) Assembling synadbg
(3104) Compiling synamisc.pas
synamisc.pas(114,21) Hint: (5024) Parameter "protocol" not used
(9009) Assembling synamisc
(3104) Compiling synaser.pas
synaser.pas(2332,39) Warning: (4110) range check error while evaluating constants (4294967295 must be between -2147483648 and 2147483647)
synaser.pas(2334,34) Hint: (4035) Mixing signed expressions and longwords gives a 64bit result
synaser.pas(2342,41) Warning: (4110) range check error while evaluating constants (4294967295 must be between -2147483648 and 2147483647)
synaser.pas(2344,34) Hint: (4035) Mixing signed expressions and longwords gives a 64bit result
synaser.pas(2351,40) Warning: (4110) range check error while evaluating constants (4294967295 must be between -2147483648 and 2147483647)
synaser.pas(2353,34) Hint: (4035) Mixing signed expressions and longwords gives a 64bit result
synaser.pas(119,3) Hint: (5023) Unit "synafpc" not used in synaser
(9009) Assembling synaser
(3104) Compiling tlntsend.pas
tlntsend.pas(110,26) Hint: (5024) Parameter "Sender" not used
(9009) Assembling tlntsend
laz_synapse.pas(10,3) Hint: (5023) Unit "asn1util" not used in laz_synapse
laz_synapse.pas(10,23) Hint: (5023) Unit "clamsend" not used in laz_synapse
laz_synapse.pas(10,33) Hint: (5023) Unit "dnssend" not used in laz_synapse
laz_synapse.pas(10,42) Hint: (5023) Unit "ftpsend" not used in laz_synapse
laz_synapse.pas(10,51) Hint: (5023) Unit "ftptsend" not used in laz_synapse
laz_synapse.pas(10,61) Hint: (5023) Unit "httpsend" not used in laz_synapse
laz_synapse.pas(11,3) Hint: (5023) Unit "imapsend" not used in laz_synapse
laz_synapse.pas(11,13) Hint: (5023) Unit "ldapsend" not used in laz_synapse
laz_synapse.pas(11,23) Hint: (5023) Unit "mimeinln" not used in laz_synapse
laz_synapse.pas(11,33) Hint: (5023) Unit "mimemess" not used in laz_synapse
laz_synapse.pas(11,53) Hint: (5023) Unit "nntpsend" not used in laz_synapse
laz_synapse.pas(11,63) Hint: (5023) Unit "pingsend" not used in laz_synapse
laz_synapse.pas(12,3) Hint: (5023) Unit "pop3send" not used in laz_synapse
laz_synapse.pas(12,13) Hint: (5023) Unit "slogsend" not used in laz_synapse
laz_synapse.pas(12,23) Hint: (5023) Unit "smtpsend" not used in laz_synapse
laz_synapse.pas(12,33) Hint: (5023) Unit "snmpsend" not used in laz_synapse
laz_synapse.pas(12,43) Hint: (5023) Unit "sntpsend" not used in laz_synapse
laz_synapse.pas(12,63) Hint: (5023) Unit "synacode" not used in laz_synapse
laz_synapse.pas(13,3) Hint: (5023) Unit "synacrypt" not used in laz_synapse
laz_synapse.pas(13,23) Hint: (5023) Unit "synafpc" not used in laz_synapse
laz_synapse.pas(13,42) Hint: (5023) Unit "synaip" not used in laz_synapse
laz_synapse.pas(13,50) Hint: (5023) Unit "synamisc" not used in laz_synapse
laz_synapse.pas(13,60) Hint: (5023) Unit "synaser" not used in laz_synapse
laz_synapse.pas(14,12) Hint: (5023) Unit "tlntsend" not used in laz_synapse
(9009) Assembling laz_synapse
(1008) 32922 lines compiled, 7.0 sec
(1021) 10 warning(s) issued
(1022) 114 hint(s) issued
(1023) 9 note(s) issued
I play synapse and if get error i try fix and make post.OK. Thanks for the feedback.
is it possible to add the famous GLScene package to the list of packages in the Onlinepackagemanager?Yes, if it compiles with Lazarus 2.0/FPC 3.0.4 and there are no licensing issues. From where can I download/test the package?
sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev libxxf86vm-dev
svn checkout https://svn.code.sf.net/p/glscene/code/branches/GLSceneLCL GLSceneLCL
In that case use them from Synapse trunk, plz, not the 2012 version: that is useless.Some time ago there were 2 versions of Synapse in OPM. Official and trunk. In case of Synapse, we came to an agreement that Synapse trunk is preferred, and that there should not be 2 versions to avoid confusion and compilation issues. So trunk was used, but official Synapse lpk did not include SSL files, so these files could not be found when needed. GetMem fixed this once, but after updating Synapse with latest trunk this needs to be fixed again.
The licence is the Mozilla Public LicenceI added GLScene to OPM. Thank you.
On Ubuntu Linux i can compile it without errors but i have to install some packages
On Windows it compiles without errors.
Could you please update laz_synapse package by adding ssl_openssl.pas and ssl_openssl_lib.pas to the package?Done. Thanks for the feedback.
I would say that if your units are not ready for being put into a package then they are not ready for being distributed by OPM.That was the reason that I said "In a few days I would like to publish...".
Looking back, I think it was a mistake from my part, source code without lpk files should also be allowed, but I cannot change that now.
Hi mdbs99,
Looking back, I think it was a mistake from my part, source code without lpk files should also be allowed, but I cannot change that now.
I will add a package for my projects, but what about mORMot dependency? It doesn't exist on OPM and even if we want to add, it doesn't have a package at all.It will only work if each and every dependency has a pacakge, mORMot included.
You need to compile the project first?
Can you elaborate on this part, @GetMem ?
Why a mistake? Source code without a package doesn't need installation.Source code without package cannot be installed, but at least should be available for download. The mistake was not allowing plain source code as zip in the central repository, so users can download it with one click. I noticed lately that code without lpk is not uncommon at all. In fact many developers prefer to distribute the code this way.
Why a mistake? Source code without a package doesn't need installation. If anything, all that is required is to add the directory where it resides to the search path, which can be done either globally for all projects or on a per project basis.There's no need to "install" a runtime package either. You only compile it once so that the IDE knows where it is. Even mixed runtime/designtime packages (which is the default) need not be installed when you do everything at runtime. No need to set any paths. Setting search paths in Lazarus (like it is necessary in Delphi) may lead to compilation issues.
It will only work if each and every dependency has a pacakge, mORMot included.If the mORMot author—which I've already asked about packages, but still waiting—do not want to introduce packages, I can fork the original one, add the package and send to OPM. But it will be in my Github account, not the original one. Is that a problem?
If the mORMot author—which I've already asked about packages, but still waiting—do not want to introduce packagesWhat is the reason?
But it will be in my Github account, not the original one. Is that a problem?No, of course not, especially if you syncrhonize the two repo from time to time.
For OPM, I believe all information might be in .json files instead of packages.Yes. The informations inside the lpk files are stored in a big json, so it can be easily parsed by OPM.
@mdbs99For do not introduce packages? I'm not sure... "old school", I think.QuoteIf the mORMot author—which I've already asked about packages, but still waiting—do not want to introduce packagesWhat is the reason?
No, of course not, especially if you syncrhonize the two repo from time to time.Just for curiosity, we can do that only using Github system?
Yes. The informations inside the lpk files are stored in a big json, so it can be easily parsed by OPM.So, I haven't understood why packages are required... :)
Of these wich one is the newest format?
@GetMem.
FPC packages were included (https://github.com/synopse/mORMot/pull/188) into mORMot. Then, I would like to ask you to include it on OPM -> https://github.com/synopse/mORMot before send my projects that depends on mORMot.
Should I need to do something, create something, or you will do by yourself? Please, let me know.
Hmm, maybe the problem is the FPC version?Yes. With FPC Trunk works fine. I added the package to OPM, with the mention that FPC Trunk needed(see attached image). Please test if it works at your side. Thank you.
I will check if it is possible run mORMot on FPC 3.0.4 to change FPC compatibility information in the future.That would be great, a lot of people use FPC 3.0.4.
Wouldn't it be required additionally that the FPC version is checked when the installation is started; and when the version does not fit the installation should be aborted with a clear error message about the version mismatch instead of some FPC message occuring later during compilation.QuoteHmm, maybe the problem is the FPC version?I added the package to OPM, with the mention that FPC Trunk needed(see attached image).
Wouldn't it be required additionally that the FPC version is checked when the installation is started; and when the version does not fit the installation should be aborted with a clear error message about the version mismatch instead of some FPC message occuring later during compilation.That's a good idea. I was thinking about drawing with red the packages which cannot be installed. More over, when a user wish to install a non-compatible package a clear warning should appear, this way preventing a boring download and unpack. I will try to implement the feature soon. Still OPM depends on the developers accurate description.
BTW, I wonder why so many users and component authors are so eager for the latest FPC version.I cannot comment on this one. Most likely it's a trend to always update everything to the latest version, or perhaps for some users there is a good reason to update. Personally I prefer Lazarus trunk combined FPC 3.0.4.
Switched to 2.0 fixes stable FPC when a bugfix to OpenSSL was needed. Switched back to trunk.OK. This is a good reason. :)
Wouldn't it be required additionally that the FPC version is checked when the installation is started; and when the version does not fit the installation should be aborted with a clear error message about the version mismatch instead of some FPC message occuring later during compilation.
BTW, I wonder why so many users and component authors are so eager for the latest FPC version.
@wpQuoteWouldn't it be required additionally that the FPC version is checked when the installation is started; and when the version does not fit the installation should be aborted with a clear error message about the version mismatch instead of some FPC message occuring later during compilation.That's a good idea. I was thinking about drawing with red the packages which cannot be installed. More over, when a user wish to install a non-compatible package a clear warning should appear, this way preventing a boring download and unpack. I will try to implement the feature soon. Still OPM depends on the developers accurate description.
That would be an excellent idea, I'm constantly frustrated trying to install packages that either fail to install or partially install.In my opinion your biggest problem is the lack of support for cocoa. Package maintainers rarely check beyond win32/win64/gt2. This is understandable, since there are a lot of widgetset/architecture out there, some of them exotic and rare, like arm. The bottom line is, no matter how many countermeasure I(we) take, OPM will always depend on the accuracy of the description given by package maintainers, which is incomplete in many cases. More over ~40% of the packages are abandoned or purely supported.
My only concern is that this (seems to me) to be a lot of work.Yes. That would be a constant work for at least 5 people.
The bottom line is, no matter how many countermeasure I(we) take, OPM will always depend on the accuracy of the description given by package maintainers, which is incomplete in many cases.So, this is better do not receive a package, if it is incomplete.
So, this is better do not receive a package, if it is incomplete.True, but even a perfect package can be broken by a new FPC or Lazarus release, so a constant check is still needed. I will do my best to update packages as much as possible.
So what would be a complete package? One that has been tested on all architectures, all OSes, previous, current, next and trunk versions of both FPC and LAZ, including all combinations? No, I do not think that package authors are willing to do that. Instead, I would rather like to see OPM collecting anonymous statistics about package installations from all users (failed/succeeded packages installations for each arch/os/fpc/laz combo), and then showing my combo stats to me to see. Then I can decide if I want to proceed with package installation or not. After package is updated, statistics are either reset, or even better kept for current and previous package version.The bottom line is, no matter how many countermeasure I(we) take, OPM will always depend on the accuracy of the description given by package maintainers, which is incomplete in many cases.So, this is better do not receive a package, if it is incomplete.
I am using the "dataportlasarus.lpk" but version of github and "http://packages.lazarus-ide.org/" is not same and the difference is about linux compiling:Done. Please test if everything is OK. Thanks.
https://github.com/serbod/dataport/commit/87fdbae42563d02be59fb98e331a5ac24ff4ae1f
Could you please update lazarus's package?
Hi tr_escape,QuoteI am using the "dataportlasarus.lpk" but version of github and "http://packages.lazarus-ide.org/" is not same and the difference is about linux compiling:Done. Please test if everything is OK. Thanks.
https://github.com/serbod/dataport/commit/87fdbae42563d02be59fb98e331a5ac24ff4ae1f
Could you please update lazarus's package?
regards,
GetMem
GetMem, could you update two packages in OPM:I updated the packages. Thanks for the new versions.
But seriously again: It was discussed in another thread that OPM should check this information when a package is installed. AFAICS now, mismatching versions should only yield a warning but not prohibit installation.I did try to implement it(at least in theory), but I failed. It looks simple, but believe me is not simple at all. I can add a selectable combobox, but who's gonna list all the widgetsets other then the obvious ones(win32/64, gtk2, qt, carbon, cocoa). How can I found the actual widgetset? I need a ton of ifdefs? Like this?:
How can I found the actual widgetset?You will get this information in "LCLPlatformDef" unit.
...
Where can I found the list with all possible WS and the ifdef equivalent?
In my incorrect memories I had thought that the installation of a package by OPM should only be done when there is a precise match of widgetset and Lazarus/FPC version. Besides the issues that you mention I also believe that this requirement puts an immense burdon on the package maintainers, and I fear soon installations will be blocked by unmaintained package descriptions.There should be no restrictions during installation attempts. It would be ideal if OPM could simply determine widgetset/architecture/laz/fpc combo, contact server to get installation failure rate (something like 522/741 meaning success/attempts), get last successful/unsuccessful package installation date for such combo (get all this info while reading list of available OPM packages), and show it to the user next to each package. Package success and combo info (if allowed by user) should be sent to server. At the beginning (and with each new fpc/laz version) this info will not show much, but in time data will be more and more accurate. If available, full version info should be matched (like 2.0.3 or 3.0.4) and shown, but if not then more relaxed partial version info should be looked for (like 2.0 or 3.0) and shown with warning color. Shown info would not be a guarantee that a package will be installed (trunk?), but it will be a good statistical probability info before any package installation attempt. Last successful and installation date of the package for user's combo would be especially informative to the user.
Online Package Manager for turkish language packed pls add . thnx youThanks. I sent the files to @Maxim.
Sorry for the late response and thanks for the suggestions.
@wp
I remember the discussion. I think I found a reasonable solution for everyone.
@korba812
LCLPlatformDef is a life saver. Thanks.
@avra
For now, the communication between the server and OPM is in a single direction. The site admin only allows upload if a CGI is implemented(security reasons). This is why I did not completed the voting system. For the same reasons, any other statistics is also out of reach.
I implemented the "incompatible package" warning. A few notes:
1. The warning is optional(see image1). If the checkbox is unchecked, everything works as it did until now. For testing purposes the option is enabled by default, it can be disabled later if needed. Even when enabled, the user has the possibility to continue the install process.
2. I only added stable Lazarus/FPC versions + trunk for both(see image2). By default the following versions are supported:
Lazarus: 2.0.0, 2.0.2
FPC: 3.0.0, 3.0.2, 3.0.4
WidgetSet: win32/win64, gtk2
In my experience almost every package supports the above Lazus/FPC versions and widgetsets. When needed, a package maintainer can extend the list. If a new stable version appears, I will extend the default list. Old, obsolete versions like Laz. 1.6.0 are no longer supported.
3. The warning dialog looks like this(see image3), more detailed information can be obtained from hint.
4. The feature does not require any extra work from the package developers.
5. The feature is compatible with older versions of OPM.
5. I did not have time to test extensively. I will fix the reamining bugs later.
PS1: Suggestions as always are welcomed.
PS2: If you wish to test, try to install LazProfiler. The package needs Laz/FPC trunk, any other configuration should trigger the warning message.
Error reading file: Unable to open file "C:\PRG\Lazarus\Fixes20x32x\config_lazarus\onlinepackagemanager\packages\plotpanel-lazarus-0.97.1\plot.lpk"
...pl_dwscript could not compile now on 2.0.3, although it worked on 2.0.1.I tried but failed to make it work. It works on older LAZ 2.0.1 2019-05-08 FPC 3.2.0 SVN 60354M, but not on current fixes LAZ 2.0.3 and FPC 3.2.0.
I ran a few test with Lazarus Trunk/FPC 3.0.4, unfortunately I cannot reproduce the issues you mentioned. I will also try FPC 3.2.0 soon, most likely the problem only occur with a newer version of freepascal. Can you please test with Lazarus 2.0.2 or/and Trunk, combined with FPC 3.0.4? For now, 2.0.2/3.0.4 is the officially supported version.I will. Thanks for trying.
I would like to support FPC trunk too if possible, but I had issues in the past when I tried to install packages. The issues were unrelated to OPM, the internal package system could not install the packages("incompatible ppu files" if I remember correctly).I have found a work around for "incompatible ppu" which works each time I face this problem:
@Lainz
By CGI I meant https://en.wikipedia.org/wiki/Common_Gateway_Interface and yes the console application will run on a linux server, the same server where the package files are located. OPM will communicate with that console application, which will update the database internally. I don't know any specific details about the database, if I understood correctly the site admin prefers PostgreSQL. The console application can be written in any language, of course freepascal is the prefered one. :)
And I have a lot of questions since I never coded a CGI, for example, if you need to connect to the DB to debug the application, must use a local database and a local apache server? Or must have a directory to test in the real server, and always copy and paste that binary to the server to test?
Sounds somewhat tedious if the last one is the workflow. :)
And I have a lot of questions since I never coded a CGINeither do I. This is why I never had the motivation to implement that feature(plus the lack of time). If I understood correctly the CGI is needed mainly for security purposes, if OPM directly updates the database, nasty things can happen.
1. I fixed pl_DWScript, now it should work with FPC 3.2.0 too. I also updated in OPM.Very, very, very nice. Thank you! :D I will update ct4laz repo.
2. I did try to install/reinstall as many packages as possible with Lazarus Trunk/FPC 3.2.0(pl_X and others), but the error you mentioned eludes me. Everything works out of the box.It would be very good news if Lazarus trunk does not suffer the "icompatible ppu" problem, and even better if patch makes it's way into fixes.
3. Unfortunately the "Clean all" suggestions wont work with FPC trunk. A typicall example is BGRABitmap combined with BGRAControls. After you install BGRABitmap manually, then try to install BGRAControls, the package system will complain about "icompatible ppu" files, although you just compiled BGRABitmap so everything should be compatible. :) I had to delete the lib folder inside BGRABitmap, then I was able to installl both package. Everything works fine with FPC 3.0.4, and since FPC trunk is not yet officially suppoted, I did not investigate the issue more thoroughly.In similar cases "Clean All" didn't work for me either, but "Clean common files" did work (with mentioned compilation switches). Strange but true in my case, and tested up to unofficial FPC 3.2 fixes. I also do not bother much with FPC trunk since it's a moving target.
PS: (2) Here is a somewhat boring video about the install process: https://www.youtube.com/watch?v=IRJkyiOn3AAHopefully during the weekend I will catch time to look and do promised tests.
Can you please update in OPM BGRAControls and BGRABitmap?Done.
@Lainz
Did you go undercover? :D
I've already talked to Arnaud: we will create just one package.Thank you. I will add the package after it's ready.
I'm working on it. After I send a PR (and this be approved, I hope), I'll warn you to update.
Thank you. I will add the package after it's ready.
GetMem,I will add it tomorrow or Monday. I'm out of office with no PC available.
The fix for compilation in i386 was applied.
Packages are working. However, we have just one inconvenient issue, which I've posted on Lazarus' list but, as you (all) know much about Packages, maybe can help me:
https://lists.lazarus-ide.org/pipermail/lazarus/2019-July/236725.html
You can update mORMot Packages now, if you want. But would be better to fix this inconvenient before. Thanks.
best regards,
Marcos Douglas
Packages are working. However, we have just one inconvenient issue, which I've posted on Lazarus' list but, as you (all) know much about Packages, maybe can help me:It is a bug in Lazarus but it seems that it was fixed by Mattias (see here (https://lists.lazarus-ide.org/pipermail/lazarus/2019-July/236729.html)) — but I haven't tested yet, but I will.
https://lists.lazarus-ide.org/pipermail/lazarus/2019-July/236725.html
I will add it tomorrow or Monday. I'm out of office with no PC available.As we here don't use Lazarus trunk in production but mORMot, I don't know if we keep the current Package implementation, which works but it's showing those Hints by Lazarus when users add mORMot+zcomponent into the same project, or Plan B: remove Conditionals, which add ZeosLib "dynamically" into the Package, and tells users that zcomponent should be included manually if they want to — I prefer last one.
I'm asking Arnaud what he wants. So, don't need to be hurry. :)OK. I will wait. :)
PS: I don't see mORMot in http://packages.lazarus-ide.org anymore?That was my mistake. Sorry for that. I readded the old version.
Has it some robot compiling/sending and if something was wrong, it was removed automatically?
It's done! :DThank you. I updated the repository.
Please, update the sources. Thanks.
I didn't say which weekend ;)PS: (2) Here is a somewhat boring video about the install process: https://www.youtube.com/watch?v=IRJkyiOn3AAHopefully during the weekend I will catch time to look and do promised tests.
Can you please check if the same issue persist with Lazarus Trunk/ FPC 3.0.4?I just checked and it is there. It looks like it shows at the exact same place as previously shown. If it didn't show Lazarus version then you could think it was the same screenshot.
Done. Thanks for the new version.
Hi, GetMem!
Can you, please, update t"LAMW" packages to "version 0.8.5" ?
ref. https://github.com/jmpessoa/lazandroidmodulewizard
Thank you!
Using OPM, I recently saw warnings appearing when the used Laz/FPC is not meeting the requirements of a package to be installed. That's fine.Actually it's a feature requested by you(if I remember correctly). :) A good one by the way.
On the other hand, many packages are poorly maintained and certainly will not update their requirement list whenever a new fpc/Laz is released. But ok - there is an option to install anyway, it will appear a bit scary for a novice user, though.When a new (sub)version of Lazarus/FPC is released, I will automatically add for each package the new version(in this case 2.0.4). So in theory the package maintainers don't have to do anything, unless the new (sub)version somehow breaks the package. I did not do it for 2.0.4(lack of time, sorry for this), it's now done in trunk. Please test. I also plan to remove previous version from the list. When a new major version appears, the 1.8.x series will be removed. I don't think is worth supporting more then 2 major release. It would be an overkill for package maintainers.
Hi Dio Affriza,Thank you, GetMem. I'll try that. :)
Did you try this workarund by @avra: https://forum.lazarus.freepascal.org/index.php/topic,43646.msg326093.html#msg326093
FPC 3.3.1 is not yet officially supported.
As a desperate attempt to fix the "incompatible ppu" error, I added in r. 61813 an extra compiling flag(pcfCompileDependenciesClean). The results are promissing. Can you please run a few test with Lazarus trunk/FPC 3.0.4?I will test and report. Thanks!
Unfortunately, incompatible PPU bug strikes again. :'(Thanks avra. Unfortunately I'm out of ideas. The worst part is, I don't know if OPM, Lazarus or FPC is causing the issues.
Tested on Win10x64, 32bit FPC 3.0.4 and Lazarus trunk.
UPDATE: Immediately after this I tried "Clean Common Files" and it didn't help as expected. If I remember well, that workaround helps only on FPC 3.2.0+ so no surprise it didn't work on 3.0.4. If you want, I can test Lazarus trunk with FPC 3.2.0 or trunk, to see if it helps there.
Thanks avra. Unfortunately I'm out of ideas.Thank you for your effort. I still hope that it will work on FPC 3.2.0+. I didn't have time to try it since I am in the middle of some embedded stuff, but it is on my TODO list.
The worst part is, I don't know if OPM, Lazarus or FPC is causing the issues.When I face this problem again, do you think that I should try to install packages again manually in hope to reveal if it has anything to do with OPM?
When I face this problem again, do you think that I should try to install packages again manually in hope to reveal if it has anything to do with OPM?Yes please. It would be really helpful.
Btw. I think it's a little odd to be notified before installation that packages are not compatible with user's Laz+Fpc combo. I would prefer that instead of this, OPM says something like packages have not been tested on that combination. It's a little less scary message.Thanks for the suggestion. Done in r.61850. Please test. As a side note, the dialog can be disabled from option. It won't show up, even when you try to install an untested packages.
After PPU problem I tried to manually install already downloaded package which had reported incompatible PPU and error was the same so I could not install. After manual workaround everything compiled and I could continue.QuoteWhen I face this problem again, do you think that I should try to install packages again manually in hope to reveal if it has anything to do with OPM?Yes please. It would be really helpful.
Nice. Thanks!QuoteBtw. I think it's a little odd to be notified before installation that packages are not compatible with user's Laz+Fpc combo. I would prefer that instead of this, OPM says something like packages have not been tested on that combination. It's a little less scary message.Thanks for the suggestion. Done in r.61850. Please test. As a side note, the dialog can be disabled from option. It won't show up, even when you try to install an untested packages.
Good:That's promising, but not good enough in my opinion. If the ppu bug is still clearly reproducible, we have to find another solution. I have no more ideas though. :(
In such tests I usually install packages in groups of 1-2 letters, like first all starting with A and B, then all starting with letters C and D, etc. This time I have reached P before incompatible PPU stroke again. I do not think I have ever reached this far without applying the workaround. Impression is that I have been able to install 2-3 times more components then usual. Of course, there are some components that do not work but I just skip them since they do suffer from compatibility problem, not from PPU problem. After I faced the PPU problem, my workaround worked and I could continue.
Bad:Yes. Dependencies are always recompiled, so the over all compile time is much bigger.
I did not measure, but my subjective impression is that compilation is now much, much longer. Like IDE and all components are compiling again whenever I have new group of components for installation. That might not be that bad if you select everything and just select to skip all errors, but I installed in group of 1-2 letters and that increased time exponentially (subjective time evaluation). After half of the letters were installed, I had to let it install and do something else and only check from time to time if it finished or showed an error. It was thaaat long.
Conclusion:I will write to the developer list. Let's hope somebody has a better idea.
I do not have a definite opinion about your PPU fix put into OPM. I think I can compile much more then before without PPU error striking, but it seams to make compilation much longer.
Bug can be repeated but you have to spend several hours just to come into position to catch it, and it strikes. Like a hot potato no one likes to hold in his hands.:D True. I only catched the ppu bug a few times. Apparently my system is almost immune somehow. Perhaps depends on the fpc config too.
After PPU problem I tried to manually install already downloaded package which had reported incompatible PPU and error was the same so I could not install. After manual workaround everything compiled and I could continue.I always suspected that OPM only triggers the error, by trying to compile multiple packages with dependencies between them.
Thanks for testing.You're most welcome.
If the ppu bug is still clearly reproducible, we have to find another solution.I agree. You should probably remove fix from trunk.
I will write to the developer list. Let's hope somebody has a better idea.Please do and point them to this message. Here is the summary of "Incompatible PPU" bug:
point them to this messageYou can mention to them that if needed I can archive the whole fpcupdeluxe directory and put it on some file sharing service. Last time I tried 7z file size was more then 600MB. Archive just needs to be extracted to C:\ and started with the shortcut already in the directory and IDE will start.
I sent the message to the mailing list with your description, I also removed the fix from trunk.Thanks. I appreciate it.
Online Package Manager has small bug.Thanks for reporting it. Fixed in r. 62068. Please test.
Zeos has released version 7.2.6 - which is a bugfix release for the 7.2 series of Zeos. Could you please update OPM?Done. Thanks for the new version.
@SonerFixed in Lazarus svn-version.QuoteOnline Package Manager has small bug.Thanks for reporting it. Fixed in r. 62068. Please test.
Not fixed in Lazarus_2.0_fixes_branch (upcoming Lazarus 2.0.6 version). Maybe the developers will merge your changes in the 2.0.8The fix is now in the merge request for 2.0.8. See here:
Hi, I'm not sure if fixed in trunk, but when I search for a package like bgrabitmap in 2.0.6, then search for bgracontrols and click on install, it tries to install bgracontrols but not bgrabitmap first.. seems that when the search is filled with something it only takes into account the displayed packages and not all the checked ones.Most likely you have an old BGRABitmap folder in the local repository. Since BGRABitmap is a runtime package and is present in the local repository, the IDE thinks that all BGRAControls dependencies are met, so OPM won't try to download/install BGRABitmap. When you wish to install a new version of BGRABitmap/BGRAControls, please uninstall the packages first, then press the "Cleanup" button, which will remove any old version from the local repository.
Seem that lclextensions package is not in sync with lazarus/components/lclextensions package for some reason.The only reason why lclextension is still in OPM, is because VirtualTreeView_5x(also in OPM) depends on it. However I don't see any reason why lclextension from OPM cannot be synchronized with lclextension from trunk. So I just did it. Thanks for the feedback.
include/qt5 is missin at all in opkman (installed fixes_3_2 and lazarus trunk via fpcupdeluxe on ubuntu 19.10, qt5 won't build because of missing include/qt5 dir which exists in lazarus/components/lclextensions/include
Most likely you have an old BGRABitmap folder in the local repository. Since BGRABitmap is a runtime package and is present in the local repository, the IDE thinks that all BGRAControls dependencies are met, so OPM won't try to download/install BGRABitmap. When you wish to install a new version of BGRABitmap/BGRAControls, please uninstall the packages first, then press the "Cleanup" button, which will remove any old version from the local repository.
I did run a few tests(initially BGRABitmap and BGRAControls are not installed). I only checked BGRAControls, OPM works as it should(see screenshot).
If it's time to update the packages, please let me know. Thanks for the feedback.
I noticed today that RichMemo installed via OPM did not work (on Lazarus 2.0.7 r62238M FPC 3.0.4 x86_64-linux-gtk2).
All you have to test is:
create an empty new project
put a RichMemo on the form
compile it without wrtiting further code.
The application will start, but will throw an exception class 'RunError(219)' in file 'gtk2/gtkwscusommemo.inc' at line 392 as soon as you close the form.
And here for the good news: if you install the package from https://havefunsoft.com/share/richmemo.zip instead, it will work.
Maybe this clue is useful to some people; I unfortunately don't know better where to report the error (which seems to be just a missing update).
Perhaps I do not quite understand how onlinepackagemanager works, but, for example, the pascaltz package is outdated. There is a new version and in the OPM package https://raw.githubusercontent.com/dezlov/PascalTZ/master/opm/update.jsonIf you have PascalTZ 2.1.1.0 installed, you can directly update to 2.1.3.0 from the package maintainer's webpage. See screenshot for more details.
(it is not my package)
Thanks!Perhaps I do not quite understand how onlinepackagemanager works, but, for example, the pascaltz package is outdated. There is a new version and in the OPM package https://raw.githubusercontent.com/dezlov/PascalTZ/master/opm/update.jsonIf you have PascalTZ 2.1.1.0 installed, you can directly update to 2.1.3.0 from the package maintainer's webpage. See screenshot for more details.
(it is not my package)
Can we include JPPack?
https://github.com/jackdp/JPPack
@AlextpQuoteCan we include JPPack?
https://github.com/jackdp/JPPack
The package does not compile with Lazarus Trunk/FPC 3.0.4.
in the Online Package Manager configuration JSON file, there are a few properties that do just that, such as: LazCompatibility, FPCCompatibility, SupportedWidgetSet...I'm aware of that, however in order to add it to OPM, I need at least one Lazarus/FPC version where the package is functional. It does not seems to work with the following combinations: Lazarus 2.0.x, Lazarus Trunk/FPC 3.0.4, FPC 3.2.0, FPC trunk. Do you have more information?
laz_synapeV40.1 is actual not useable on a RasPi (3B+) for meDid you try to report the bug here: http://www.ararat.cz/synapse/doku.php/support ? AFAIK this is the official page. If the bug is fixed, I can update OPM with the latest version.
Castle Game Engine failed to install via OPM. I installed OPM from onlinepackagemanager.lpk shipped with Lazarus. I'm running on OpenIndiana. Castle failed to compile. Both Lazarus and FPC are trunk, using Fpcupdeluxe.OPM usually targets stable version of Lazarus/FPC, currently Lazarus 2.0.x and FPC 3.0.4. I don't mind adding packages with trunk support, however you have to contact the package maintainer for this. Please try the following link: https://castle-engine.io/talk.php
@hunghungQuoteCastle Game Engine failed to install via OPM. I installed OPM from onlinepackagemanager.lpk shipped with Lazarus. I'm running on OpenIndiana. Castle failed to compile. Both Lazarus and FPC are trunk, using Fpcupdeluxe.OPM usually targets stable version of Lazarus/FPC, currently Lazarus 2.0.x and FPC 3.0.4. I don't mind adding packages with trunk support, however you have to contact the package maintainer for this. Please try the following link: https://castle-engine.io/talk.php
@af0815It is (first) reported (on the official synalist, descibed on the supportpage) since 20.2.2013 !!! https://sourceforge.net/p/synalist/mailman/message/30510767/Quotelaz_synapeV40.1 is actual not useable on a RasPi (3B+) for meDid you try to report the bug here: http://www.ararat.cz/synapse/doku.php/support ? AFAIK this is the official page. If the bug is fixed, I can update OPM with the latest version.
The last news from JPPack:
Created JPLib package for Lazarus and CodeTyphon.
Compatibility with FPC 3.0.2 and newer.
GetMem, could you update the Industrial package? I just uploaded a new version to SourceForge (https://sourceforge.net/projects/lazarus-ccr/files/industrialstuff/industrialstuff-0.4.0.zip/download) which takes care of LCL scaling of the individual components and provides high-resolution icons for the component palette.
Hi Getman, i'm REST Dataware team, we have a new version on Source Forge repository, you can update OPM please?
Usually OPM only supports the latest stable version of a particular package.It allows you to build any combination. That is a feature. But is not documented that you have to know how mix and match....
Usually OPM only supports the latest stable version of a particular package.....Very sensible !
PS: Since both KControls and RichMemo are stable packages, I can make an exception and update the central repository manually. When you're done with the bugfix please let me know. Also I need a link to the trunk versions:
https://github.com/kryslt/KControls/ (?)
https://sourceforge.net/p/lazarus-ccr/svn/HEAD/tree/components/richmemo/ (?)
I have just manually tested both and both do incorporate the patches I have submitted. Both are quite sizeable so my tests would not possibly constitute a thorough test of either package.Thanks. I updated both KControls and RichMemo in OPM.
Hmm, KControls shows up as "up to date" in my Lazarus OPM, even though the one installed is somewhat older, several commits, than the one the OPM is displaying. I guess because its still version 1.7.3.0 ?Yes. OPM reads the version number from the central repository. If the version is the same as the locally installed package version, the "up to date" message is displayed. OPM does not care about revision numbers.
I assume I can force a download and install of the new one, you have date stamped it so its easy to see it is the right one.Yes.
Sad that we cannot make it clearer that you have a newer version in the OPM.Actually we can. Please go to OPM->Options-->General, then uncheck the "Show regular icon for newly added packages after install" checkbox. After a reload you will see a blue lightning icon, which means: the package was modified in the last 31 days(31 is also customizable in the same place). You can also see the exact date of the last update(see screenshot).
Getmem - can you add Splashabout?Done. Thans for the new package.
Making a json from a component via OPM is currently flawed, but I did the best I could.What do you mean? It works fine in my opinion. Line "UpdatePackageFiles", now is replaced with "UpdateLazPackage", because the classname has changed. Anyway this happened 2-3 years ago. Other then this, your json is exactly the same as a newly generated one. All you have to do is complete the download link and the version.
Looking at screenshot from your last message (https://forum.lazarus.freepascal.org/index.php?action=dlattach;topic=34297.0;attach=35380), I find a little confusing naming a column "Repository". Would that be OPM's repository or author's repository? You gave an explanation in screenshot and also after some thinking someone might come to the correct conclusion by himself, but I do not find it clear enough. Instead of "Repository" and "External" column names I would suggest "OPM" and "External", or "OPM Repository" and "External Repository" if you like long names.Thanks for the suggestion. I renamed the columns to "OPM Repository" and "External Repository". I also added a long hint for a more detailed description. Please test with r62629.
I renamed the columns to "OPM Repository" and "External Repository". I also added a long hint for a more detailed description. Please test with r62629.Thanks. You're faster then light! :D
@wpRight, I forgot that it is in Laz trunk only. But I checked: no problem installing it into v2.0.6.
IIRC laz.virtualtreeviewpackage is only available in trunk and it's not compatible with previous stable versions like 2.0.6. Or perhaps you can install it in a stable version, but some features won't work?
I'm using trunk. I'm aware it's renamed to laz.virtualtrees. but for existing project or a shared project with delphi it would be better to just keep the original name. And it's not just the package's name but the units name and the component itself got renamed. And I don't like this direction of renaming the existing library that still mantained. VTV is one of most common delphi component.I'm afraid things are much more complicated then this. VTV(5.3.3) was added to Lazarus, because OPM depends on it. Initially we did not change the name, but then people started to complain about not being able to install other version like 4.8.x. When suggested to uninstall VTV 5.3.3 and OPM, they complained about the missing package manager. To satisfy everyone's needs, we renamed the package, this way it can coexists with any other installed VTV versions. As you probably know, the IDE does not like packages with the same name and for good reasons.
It's feel like you guys going codetyphon way which is not nice IMO.This is not true. We never removed any license information and we always acknowledged Luiz as the package author. In fact, he is the one who suggested VTV 5.3.3 as the ideal candidate for Lazarus, and yes he was also worried about multiple, parallel VTV versions and synchronization between them. FOSS world is not an ideal one, many times you have to reach a compromise and find a mutually-acceptable solution.
@wp, Luiz's repo does have the high-dpi scaling. I usually always use Luiz's repo, but this time giving opm a go. But it break the dpi-awareness scaling. So I compare the sources, and it's different.Yes, I forgot - 2 years is a long time...
@wp, Luiz's repo does have the high-dpi scaling. I usually always use Luiz's repo, but this time giving opm a go. But it break the dpi-awareness scaling. So I compare the sources, and it's different.Yes, I forgot - 2 years is a long time...
So the point is that the VTV-v5 package distributed by OPM is not the same as the one in Luiz's "lazarus-v5" repo? If this is true we should update the OPM version.
And BTW, what is Luiz's "lazarus-master" branch? It does not contain the high-dpi additions.
I understand, since opm depend on it, so just let it be part of Lazarus as a fork. And let original VTV port as separate package. I'm just simply asking to update the VTV in opm repo.Ok fair enough. I updated the OPM version to match Luiz's github version(https://github.com/blikblum/VirtualTreeView-Lazarus/tree/lazarus-v5).
since there are almost 200 packages in OPM and since I'm the only maintainer, I cannot constantly check each package for new versions.Absolutely, and I admire you how you are able to achieve all this.
QuoteI understand, since opm depend on it, so just let it be part of Lazarus as a fork. And let original VTV port as separate package. I'm just simply asking to update the VTV in opm repo.Ok fair enough. I updated the OPM version to match Luiz's github version(https://github.com/blikblum/VirtualTreeView-Lazarus/tree/lazarus-v5).
A side note: since there are almost 200 packages in OPM and since I'm the only maintainer, I cannot constantly check each package for new versions.
Does the Install "From third party repository" supposed to download from external link (JSON)?OPM must check if each external link is valid and parse the version number from the remote files for later comparison. When enabled it does it automatically in the background, however the feature is disabled by default. A lot of people were worried that OPM does "work behind the back". Please go to "Options->General->Check for package update" and change from "Never" to something. After the links are parsed you should see the external version number in the "External Repository" column(see attachement), at this point you can install the package from the maintainer's web page.
When I'm trying to install BGRABitmap from third party repository it says no valid url found. While I can see it has a correct "DownloadZipURL". BGRABitmap in OPM also need an update.I must admit this message is obsolete and confusing, it was a valid message when the background search was enabled by default, but not now. I will fix it today, I will also update BGRABitmap.
Also, can you cache the package list instead of downloading and parsing it all the times. I know the file is small, and I don't mind if it updated in the background. But OPM keep download and parsing the same file which takes a few seconds every time we open OPM.This is a good idea. For slow internet connection, connecting to the server also takes time, maybe I should add a checkbox to Options, with the following text "Parse json from local source if available". If checked OPM doesn't attempt a connection and parse the file locally.
I can see the server actually send "Last-modified" and "Etag" header that can be used to identify if the file has been modified. Simply stop to download the content if headers contains that header. Or send the http request with "If-Modified-Since: <last-modified>" or "If-None-Match: <etag>", server should respond with "304 Not modified" with no content if it match.
Another think is, can OPM accept IDE macros for its path like "ConfDir", "PrimaryConfigPath", "SecondaryConfigPath ". This is useful for portable lazarus in removable drive.OPM communicates with the IDE through the PackageEditingInterface and a lot of IDE specific paths are available. For example "PrimaryConfigPath", "SecondaryConfigPath" are used by OPM itself.
All I see is the message box saying "Cannot install package: "lazmapviewer_bgra.lpk"....When the message appears, please click "No", then check the message window for more information.
I guess I should be able to download directly and compile, just to make sure its not something wrong with my install ? Can I manually compile the copy that onlinepackage manager has downloaded, that would be a better test ?Yes, but LazMapViewer depends on other packages, so you must install them first(BGRABitmap, RGBGraphics, Synapse). OPM automatically resolves the dependencies if you click "Yes to All".
GetMem, is there a way to control the behavior of OPM for this situation? AFAIK, all the sub-packages are checked in OPM for installation when the top-level checkbox is marked. I would prefer to have only LazMapViewer.lpk checked by default and leave the add-ons unchecked to indicate that they are not absolutely needed and do not provide new functionality.I can re-add LazMapViewer to OPM and only LazMapViewer.lpk will be visible, of course a user can install all the other packages manually, but it won't be visible in the package tree.
I finally decided to release LazMapViewer, a component to display GoogleMaps, OpenStreetMaps etc.Thank you! I will drop related pl_MapViewer and pl_GeoGIS from next version of ct4laz.
I can re-add LazMapViewer to OPM and only LazMapViewer.lpk will be visible, of course a user can install all the other packages manually, but it won't be visible in the package tree.Yes I think this is better. Can you do this? Is there a possibility to add a note to the OPM description that there are add-on packages which must be installed manually? I think I will have to adjust the update.json and remove the other packages from it?
Perfect. Do I have to update the update.json file?Yes. Please replace the original with the attached one.
@getmem, good move ! Again, thanks for a really great tool.Thank you Davo.
if you wish to change the text, please let me know.Original license is LGPL 3.0 (not GPL 2 as shown in screenshot). Origin: http://keit.co/p/tmapviewer/
Original license is LGPL 3.0 (not GPL 2 as shown in screenshot). Origin: http://keit.co/p/tmapviewer/Thanks @avra. I will change it in the main json.
Sorry, I don't have any idea about licenses. On the other hand, Maciej Kaczkowski, the author of the very first version, writes in the file header of the main viewer unit (and this is retained in LazMapViewer): "This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version." - Is this LGPL 3.0? I understood it as GPL 2.if you wish to change the text, please let me know.Original license is LGPL 3.0 (not GPL 2 as shown in screenshot). Origin: http://keit.co/p/tmapviewer/
Done.QuotePerfect. Do I have to update the update.json file?Yes. Please replace the original with the attached one.
Maciej Kaczkowski, the author of the very first version, writes in the file header of the main viewer unit (and this is retained in LazMapViewer): "This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version." - Is this LGPL 3.0? I understood it as GPL 2.If we search for "GNU Library General Public License" one of the first links will be this one: https://www.gnu.org/licenses/old-licenses/lgpl-2.0.html. It can be seen there that mentioned library is LGPL and not pure GPL. As for the version - yes, code headers state LGPL 2 or any later version, while his original site that is still live says library is LGPL 3.0. Therefore, probably most correct would be to say that library is LGPL 2.0 or any later version.
Hi Getman, i'm REST Dataware team, we have a new version on Source Forge repository, you can update OPM please? TksI updated the package. Thank you!
GetMem, could you please update the fpspreadsheet release version in OPM? It is just a maintenance release because due to a change in Laz trunk (removal of the Combobox.ReadOnly property) the old release does not compile any more.I updated fpspreadsheet. Thanks for the new version.
The new version, 1.10.2, is at https://sourceforge.net/projects/lazarus-ccr/files/FPSpreadsheet/fpspreadsheet-1.10.2.zip/download.
Hello Getmem for OPM last turkish translete files.. thxThank you! I forwarded the files to @Maxim.
When i reload Lazarus the new folders have gone and i have the default folders.Unfortunately I cannot reproduce this issue(tested both Lazarus 2.0.8 and Lazarus trunk). More over I also checked the code, the folders are not removed by OPM. Something else must happening at your side. Do you use some kind of AV program?
There is no option for the online package manager config folder in the options/folders tab.For consistency, OPM stores the config files in the same folder as lazarus. The good thing is the lazarus folder always writable on every OS. For the same reason the downloaded packages are also stored here. However some users prefer to keep the packages(can be large) somewhere else, hence the possibility to change the "package" folder. The "archive" and "update" folders are just temporary directories used for zipping, downloading third party packages, etc...nothing special about them.
Thank you @wp. I updated the package.Thank you, too. But could you update the package once again? As I noticed the IDE is playing tricks on me, it is not displaying the compatibility checkbox for packages correctly, and therefore I removed the compatibility option from some packages again while I added it to others... Sorry. The current zip file on the same location hopefully is correct. I did not change the version number, because this is a pain for so many sub-packages.
just installed on MX Linux Lazarus 2.0.6. Please advise if there is a solution to seeing the components besides changing the OS colors in `Online Package Manager`.@tudi_x
theme is adwaita-dark.
not too much can be seen now.
thank you
Hi, we have a new version REST Dataware on Source Forge repository, Tks.I updated the package. Thanks.
jedi.inc(611,4) Error: Illegal assembler style specified "INTEL"
{$ASMMODE Intel}
{$IFDEF CPU386}
{$ASMMODE Intel}
{$ENDIF}
Reason for posting:
1) I am not sure that this is the correct fix
2) i am not sure to whom to report, original author or package maintainer
3) even if i would know the answer to q2, i still have q1,
and depending on the answers to above questions
4) I do not know where/how exactly to report
Report to the original author at the SourceForge project (http://sourceforge.net/projects/synalist/) (click on "issues" or "bugtracker" or whatever it's called).edit: sorry, it was not fixed in trunk, i assumed it was because the last commit to that file mentioned it (it fixed it at another location in the source).. i hate sf online diff view (not showing line numbers whatsoever)
1) I am not sure that this is the correct fix
2) i am not sure to whom to report, original author or package maintainer
Besides that, if i understand correctly, official release is v40 while lazarus package manager is at v40.1.
afaik i have no way to establish who is 'responsible' for v40.1
Correct fix would be this (https://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/packages/winunits-jedi/src/jedi.inc?r1=9639&r2=44951) which I had done to a jedi.inc shipped with FPC that I encountered when working on the Windows on ARM64 port.Thank you for the correction. Indeed i forgot the 64-bit check :-[
Ideally the original author.uhm, yeah i know the 'correct' route :), However...
The last official release was v40.1, ...Well, if you say so but, synapse trunk sources <> package manager 40.1 release sources and, there is no evidence whatsoever that is able to verify that statement other then the mention of the original author in the Lazarus package (and i tried very hard, using all resources available including these forums).
but Lukas stopped releasing some years ago. Instead he recommends using SVN checkouts (https://sourceforge.net/p/synalist/mailman/message/36612353/)Besides package and trunk not using the same source, there were no updates in over so many years so that isn't very hopeful that it ever get fixed inside Lazarus package ... or is it ?
1. Generics.Collections - https://github.com/maciej-izak/generics.collections.
I use only FPC 3.0.4 (release).1. Generics.Collections - https://github.com/maciej-izak/generics.collections.
This is only required for pre-3.2.
May be we can add -Neither generic.collections nor FastMM4-AVX contains an lpk file. Without a lazarus package I cannot add it to OPM. The whole concept of OPM is based on packages.
1. Generics.Collections - https://github.com/maciej-izak/generics.collections.
2. FastMM4-AVX - https://github.com/maximmasiutin/FastMM4-AVX.
Lazarus-qt 2.0.8It looks like a VirtualTreeview bug, a component used by OPM. Can you please test it with Lazarus trunk, maybe the issue is fixed already. If not, I will install a VM with Lazarus qt and see what can I do.
opm bug in scrollbar
https://s7.gifyu.com/images/Peek-2020-06-24-19-06.gif
I created a simple application using VirtualTreeView and it has the same problem with the scroll bar.Why don't you upload the application (.pas, .lfm, .lpi and .lpr files only, packed to a zip; no compiler-generated files, please)? This would save GetMem the time to create such a program himself. And others could verify the issue as well. Or maybe you did something wrong and it's no issue of VTV at all (such things happen...)
I am not able to install mormot.Thanks for the feedback. I'm on vacation now. I will take a look next week.
Lazarus : 2.0.8
FPC : 3.2.0
OS : Xubuntu 20.04 64 bit
I'm on vacation now. I will take a look next week.Me too: Hintergarten
Getmem, when I use the OPM to install KControls with FPC320, I get a warming its not tested.Thank you Davo. I will fix it soon.
I have been using it with FPC320 rc1 and Lazarus Trunk for a couple of months, now its FPC320 release. All the parts I use work fine, mostly only KMemo though. Is that all you need to know to mark it as 'Tested' ?
Davo
Inspired by the discussion, I did try to update Internet Tools without success. Internet tools depends on flre(https://github.com/BeRo1985/flre), however flre does not contain any package, the source files must be added as a relative path. After a few trial and error I managed to compile Internet Tools, however the demos does not work, maybe I'm doing something wrong, any suggestions is appreciated.have a look here (https://forum.lazarus.freepascal.org/index.php/topic,49927.msg364408.html#msg364408) to have success with install of internet tools .
In my opinion a package should be self-contained, it can depend on other packages, but any other manual adjustment is an overkill.
have a look here to have success with install of internet tools .Thank you, I bookmarked that page for future reference. I'm glad the package from OPM is still usable.
Sorry everyone for the delay.
@heejit
I fixed mormot, please test now.
Sorry everyone for the delay.I hope you were able to enjoy your vacation, especially in these days of social distancing.
@allThank you for taking notice of my post.
I don't want to hijack the following thread: https://forum.lazarus.freepascal.org/index.php/topic,13786.75.html, so I will respond here.
Inspired by the discussion, I did try to update Internet Tools without success. Internet tools depends on flre(https://github.com/BeRo1985/flre), however flre does not contain any package, the source files must be added as a relative path. After a few trial and error I managed to compile Internet Tools, however the demos does not work, maybe I'm doing something wrong, any suggestions is appreciated.
In my opinion a package should be self-contained, it can depend on other packages, but any other manual adjustment is an overkill.
But compling a test project shows following error may be missing dependency I used fpcupdeluxe to install Lazarus/FPC.Plese check the following posts:
Warning: Object static/x86_64-linux/sha512-x64sse4.o not found, Linking may fail !
Warning: Object static/x86_64-linux/crc32c64.o not found, Linking may fail !
Error: Error while linking
Can You add https://github.com/risoflora/brookfreepascal ?There is already a Brookframework in OPM. What is the difference between the two?
This is brook framework with many plugins. New brookframework works via sagui lib but brookfreepascal works as a solid app.
Hi everybody, I make a fix for TVirtualTree and I want send the patch (or make a pull request). The git repo https://github.com/blikblum/VirtualTreeView-Lazarus/tree/lazarus-master is the main source repo of this library? I downloaded and modified VST V5 from OPM, and I wanted to make a pull request, but after a source compare, I found too many diffs.I believe there is a separate branch for the V5 series: https://github.com/blikblum/VirtualTreeView-Lazarus/tree/lazarus-v5
Instead of beating the dead horse, would it be possible for the packages to explicitly mention that the source of the package does not have anything to do with the sources that the package currently links to, and that original author/project has nothing to do with those ?I'm not against it, but somebody has to go through 180 packages, find out which one is no longer maintained then hoste somewhere else. After a patch is created I have to import it back to OPM.
Preferably packages that are based on other projects that are either abandoned or included/provided (and sometimes adjusted) without any knowledge of original author should be hosted somewhere else so that issues could be addressed in a more proper way.
I understand that it is frustrating for you, especially since you afaik never volunteered for maintaining those packages (amongst them those that are abandoned). afaik you only ever opted for developing OPM.Yes. Exactly.
My experience till now has been that I ran into issues. What I normally do is fix those issues myself and just go one with life... easy peacy.Currently is the only way. If you post the changes in this thread or via OPM, the modified package will be picked up.
What I find frustrating about that is that if I would like to address such issues so that more people could benefit from them that there is currently (as I understand) no way for me doing so other then post it somewhere in the hopes it get's picked up (and by the looks of it that would be you personally ?).
That seems a bit of a wrong approach to me. If there would be a (semi-)public place where these sources are hosted then I would at least be able to push or pull-request my changes/fixes without the need to bother anyone else (up till a certain point). Of course that still poses a kind of security risk (something that I haven't given much thought yet). I also haven't given any thought on where exactly such packages should or could be hosted (if that would to be the case).In my opinion the main problem is the lack of manpower. Even if I create a public place(github, bitbucket, etc) for the abandoned packages, somebody has to monitor and merge the pull-request. Instead of uploading zip files to https://packages.lazarus-ide.org/, I would apply pull-request on github. More over, with each package change the main json must be also updated(https://packages.lazarus-ide.org/packagelist.json), otherwise OPM wouldn't notice the change. I don't see how we can automate this process further.
What I find frustrating about that is that if I would like to address such issues so that more people could benefit from them that there is currently (as I understand) no way for me doing so other then post it somewhere in the hopes it get's picked up (and by the looks of it that would be you personally ?).
That seems a bit of a wrong approach to me. If there would be a (semi-)public place where these sources are hosted then I would at least be able to push or pull-request my changes/fixes without the need to bother anyone else (up till a certain point). Of course that still poses a kind of security risk (something that I haven't given much thought yet). I also haven't given any thought on where exactly such packages should or could be hosted (if that would to be the case).
Do you have any idea's on how this situation could be improved (with the current resources that are available, or what resources would be required to make things easier for you) ?
@Renat.SuBrookFreePascal is a Brookframework before splitting them into two projects. Oddly enough, BrookFreePascal (direct descendant of the old Brook Framework) contains all the former plugins. https://github.com/risoflora/brookfreepascal/tree/master/plugins The new brook framework is heavily reworked and does not contain such plugins . The new Brook Framework was developed by the author (https://github.com/silvioprog) for compatibility with Delphi and does not contain plugins. Also, the new BrookFramework (https://github.com/risoflora/brookframework) can only work with the sagui library (https://github.com/risoflora/libsagui) written in C++. Some users remained working on BrookFreePascal although the new Brook Framework also supports FreePascal. BrookFreePascal which still has plug-ins and has no dependency on sagui, but its minus is that only FreePascal is supported.QuoteCan You add https://github.com/risoflora/brookfreepascal ?There is already a Brookframework in OPM. What is the difference between the two?
This is brook framework with many plugins. New brookframework works via sagui lib but brookfreepascal works as a solid app.
@El SalvadorHi, my patch for VTV has been applied. You can see the changes in https://github.com/blikblum/VirtualTreeView-Lazarus/pull/18. Thank you very much @GetMem!QuoteHi everybody, I make a fix for TVirtualTree and I want send the patch (or make a pull request). The git repo https://github.com/blikblum/VirtualTreeView-Lazarus/tree/lazarus-master is the main source repo of this library? I downloaded and modified VST V5 from OPM, and I wanted to make a pull request, but after a source compare, I found too many diffs.I believe there is a separate branch for the V5 series: https://github.com/blikblum/VirtualTreeView-Lazarus/tree/lazarus-v5
If your patch is applied, please let me know, so I can update VTV in OPM.
Could you provide a patch also for the VTV variant which is distributed with Lazarus? It is based on blikblum's VTV v5 but has renamed units and classes. Not that you need Laz trunk for it. If we do not fix this the two versions will run out of sync.Do I have to send the patch via https://bugs.freepascal.org or can I post it in this topic?
I wanted to report you BGRABitmap V11.1 (https://github.com/bgrabitmap/bgrabitmap/releases/tag/v11.1). Actual version 11.0 is failed to compile in Lazarus 2.0.10.Thanks. I believe this bug is not related to OPM and since BGRABitmap is a well maintained package, we should report it to @circular.
I wanted to report you BGRABitmap V11.1 (https://github.com/bgrabitmap/bgrabitmap/releases/tag/v11.1). Actual version 11.0 is failed to compile in Lazarus 2.0.10.
@El Salvador, @calebs
BGRABitmap is now updated.
GetMem, could you please update TParadoxDataset to v0.2.1.I updated the package. Thank you!
@El SalvadorSorry, I saw your post only this morning. I checked LazVTV source against Delphi VTV 5.* and maybe I found the issue. I restored some lines of code. I don't know why this code in delphi source:
With your latest changes to VTV, the selections in OPM are not visible anymore.(see attached image). If I revert the changes, everything works fine again.
Sorry, I saw your post only this morning. I checked LazVTV source against Delphi VTV 5.* and maybe I found the issue. I restored some lines of code. I don't know why this code in delphi source:The bug is already fixed in trunk(r. 63586) by @pascal. I did ran a few test and it works fine.
sorry for my ignorance... I don't know if OPM already does this, or if it has this option or not...Yes. The packages are updated manually on the OPM server(http://packages.lazarus-ide.org/).
but, are all packages updated manually on the OPM server (http://packages.lazarus-ide.org/)? wouldn't it be better to always download the latest version of a url containing the file/git/svn? and compile the component from downloaded files? or at least allow it?
Hi GetMem,
Here are some more information about the version update process I've been using for BGRABitmap.
First:
- The JSON package information file is part of the master branch on the GitHub repository. So it is updated when the changes are merged.
Then (generally a few seconds afterwards but sometimes a bit later):
- The new version is released, adding a tag for the version, and then the zip archive of the package (mentioned in the JSON file) becomes available.
So I suppose the following can happen: OPM sees that there is a new version but when trying to access the zip file, it fails.
Could that be a reason for the problem of version update?
@El SalvadorOk. I don't know for "theme <> 0", but in my initial patch I forget this change:QuoteSorry, I saw your post only this morning. I checked LazVTV source against Delphi VTV 5.* and maybe I found the issue. I restored some lines of code. I don't know why this code in delphi source:The bug is already fixed in trunk(r. 63586) by @pascal. I did ran a few test and it works fine.
{$ifdef Windows}
if tsUseExplorerTheme in FStates then
CloseThemeData(Theme);
{$endif}
@fabiopesajuQuotesorry for my ignorance... I don't know if OPM already does this, or if it has this option or not...Yes. The packages are updated manually on the OPM server(http://packages.lazarus-ide.org/).
but, are all packages updated manually on the OPM server (http://packages.lazarus-ide.org/)? wouldn't it be better to always download the latest version of a url containing the file/git/svn? and compile the component from downloaded files? or at least allow it?
Unfortunately trunk versions may contain bugs and the bugtracker will be flooded with issues about third party packages(actually this already happened in the past), so it was decided, that OPM should only target stable version of a particular package. As a compromise, a package maintainer can push via OPM a newer, stable version of a package, for more details please check: https://wiki.freepascal.org/Online_Package_Manager
PS: I have working code for svn checkout, git clone. What you propose it can be easily achieved, but it's not preferred for the above mentioned reasons.
I have nothing to complain about, just to be grateful for the OPMThank you.
it would be an immeasurable lack of respect to criticize such a project, without even contributing in any way.In my opinion constructive criticism is always a good thing, unfortunately some users(not you) have unrealistic expectations from OPM or Lazarus in general.
Today I saw that you released 11.2.0.0 and I updated the central repository, maybe too soon. I just noticed that the update json is only 11.1.0.0.
Sorry for the late reply, somehow I did not noticed your post.It's alright.
Updating from the package maintainers webpage might fail because:Hmm I was not thinking about OPM plugin connecting to Github but about the repository (packages.lazarus-ide.org). I suppose that's where the list comes from.
Sorry for the late reply, somehow I did not noticed your post.It's alright.QuoteUpdating from the package maintainers webpage might fail because:Hmm I was not thinking about OPM plugin connecting to Github but about the repository (packages.lazarus-ide.org). I suppose that's where the list comes from.
I was wondering as you have a server for the website, why not have a scheduled task to update the central repository?Good idea and it is on my to do list for a long time. Unfortunately my time is so limited... :(
On MacOS, when choosing to check for updates, the OPM plugin crashes (and Lazarus with it). Luckily it takes a few seconds before it does, so it is possible to quickly reopen the plugin and go to the Options to disable the updates. Is it related to the SSL problem you mentioned?Yes, most likely. Unfortunately I'm not a mac user, but I will run a few test when a mac is available. If you could test with Lazarus trunk/FPC 3.2.0, I would be grateful. With Trunk the crash should not happen.
Good idea and it is on my to do list for a long time. Unfortunately my time is so limited... :(I understand.
Yes, most likely. Unfortunately I'm not a mac user, but I will run a few test when a mac is available. If you could test with Lazarus trunk/FPC 3.2.0, I would be grateful. With Trunk the crash should not happen.Ok so just tested with Lazarus 2.0.10 (not really trunk though) and the crash does not happen. It just doesn't seem to be able to get the version from third party repository.
Ok so just tested with Lazarus 2.0.10 (not really trunk though) and the crash does not happen. It just doesn't seem to be able to get the version from third party repository.I fired up an old Mojave VM an it works well with Lazarus Trunk/FPC3.2.0(attached screenshot). It also works on Windows and Linux. Unfortunately is too late for Lazarus 2.0.10, FPC 3.2.0 introduced a new bug in OPM and I didn't noticed in time. Luckily the next major version is not so far away.
Hi guys, only to say I make a new pull request for VTV (https://github.com/blikblum/VirtualTreeView-Lazarus/pull/19), already merged in dev branch, and I just send the patch in LazBugTracker (https://bugs.freepascal.org/view.php?id=37404). Thank you!Thank you!
I fired up an old Mojave VM an it works well with Lazarus Trunk/FPC3.2.0(attached screenshot). It also works on Windows and Linux. Unfortunately is too late for Lazarus 2.0.10, FPC 3.2.0 introduced a new bug in OPM and I didn't noticed in time. Luckily the next major version is not so far away.Ok. No pressure as there are not many MacOS users.
Check the BGRAControls thread, we managed to install both packages BGLControls and BGRAControls.Great! I must congratulate you and circular, because I wasn't able to install the two packages at the same time.
he problem is that the solution requires to change build mode of Lazarus, and installing a package first, rebuild, then installing the other package %)Unfortunately this is not possible at the moment.
So I think is not possible for OPM to do such thing.
Edit: and if possible, not very elegant solution :)Yes, I agree. As a side note BGRABitmap/ BGRAControls was the most popular example. There are many interdependent packages in OPM, with the same issues(FPC 3.2.0). See my thread here: https://forum.lazarus.freepascal.org/index.php/topic,50620.0.html
Could OPM indicate orphan components so interested people could easily find a way to be useful:Good idea! I can use different color, icon, etc..in the package tree. This can be easily implemented, the hard part is to find out which package out of 180 is orphan? If somebody can give me a package list, even if it's not complete, I will do it.
Hi valdir.marcos,If possible, I think that icon and hint together are better than color indication for this case.QuoteCould OPM indicate orphan components so interested people could easily find a way to be useful:Good idea! I can use different color, icon, etc..in the package tree. This can be easily implemented, the hard part is to find out which package out of 180 is orphan? If somebody can give me a package list, even if it's not complete, I will do it.
I have a problem here... What is an "orphaned" package? When does it become like this? Who decides this?
I worry about old packages, well written in a way which is not affected by recent changes in FPC or Lazarus.There is a rating system in OPM, that would solve the issue. For now it only works locally. We should create a database(https://packages.lazarus-ide.org/) and implement a login system, where each users can vote once. Unfortunately I did not have enough time to implement it. A five star package, is an excellent package, even if orphaned. More over we also have a "Community description" node, where everyone can add a comment(attachment). We can also give more detailed info there.
Look at DCPCrypt, used by many programs. On the site referred to by OPM, I can read: "DCPcrypt has finally been retired (except for the versions above). I’ve been developing it since 1999 and from 2007 (or so) it has been developing code rot as I’ve not had time to update it." As fas as I know, there is no maintainer for Lazarus. So, is it orphaned? I would say so. But "orphaned" means to many users: "Keep your hands off of this!" But I would say: no, absolutely no - it is an excellent package.
Instead of "orphaned" I'd prefer a line "Date of last update" in the package description, in additon to "Available since...". I agree that DCPCrypt will have a poor standing here too, but now there is an objective criterion for the maintainance level which can even be automated.
We have an online version of OPM at https://packages.lazarus-ide.org/. Would it be possible to add a user comment field to each package? This way a new user could read the comments and could decide on his own whether this package would be worth trying out.That page was created by @lainz, the information is read from the main json.
Maybe we can use any third party comment system like Facebook or Disqus. Just an unique ID is required for that to work properly.I'm not against it, but first we should create a database, and read the data from there instead from the json.
So the database and the application to access it from the server. I've not done that by myself yet, at work using existing database and application. Yes I've expanded the database, created new endpoints in the application but not configured it from the ground.Yes. But there are some limitation. The site admin prefers Postgre as database server. For security reasons OPM can only connect to the database via a console application running on the server.
@lainzQuoteSo the database and the application to access it from the server. I've not done that by myself yet, at work using existing database and application. Yes I've expanded the database, created new endpoints in the application but not configured it from the ground.Yes. But there are some limitation. The site admin prefers Postgre as database server. For security reasons OPM can only connect to the database via a console application running on the server.
We should also create a web interface where package maintainers can logon and upload their packages/ vote. I will have to rewrite a significant part of OPM, because now the whole system is based on the main json. So a lot of work :D.
@wpQuoteI have a problem here... What is an "orphaned" package? When does it become like this? Who decides this?
OK. Fair enough. Perhaps we can change "orphaned" to something else. The idea is to somehow tag those packages that are no longer maintained. Let's say if the author did not modify the package for five years? A lot of user suggested the idea that an unmaintained/broken packages can be picked up by somebody else(see comment by TRon: https://forum.lazarus.freepascal.org/index.php/topic,34297.msg368200.html#msg368200)
@lainz:
Was that reply #1896 meant as a direct reaction to my post #1895 perhaps ?
Inspired, but not directly. I mean I take this as a discussion to know what will be done or not.Because I wasn't sure if you were directly responding to my post, thought to ask instead in order to avoid confusion.
Edit: sorry if it sound that was like a direct response, or if I offended you in some way. The idea is to keep this friendly.
Inspired, but not directly. I mean I take this as a discussion to know what will be done or not.Because I wasn't sure if you were directly responding to my post, thought to ask instead in order to avoid confusion.
Edit: sorry if it sound that was like a direct response, or if I offended you in some way. The idea is to keep this friendly.
Because now that you aren't, I can delete my ranting reply that I wanted to post and try another approach :-X
Indeed. A package that hasn't been updated for 5 years or sometimes even longer does not necessarly means it is orphaned and/or unsupported. In fact there are plenty of such libraries that works perfectly after so many years.
However, and I express it gladly again, my main concern is/was about packages that are indeed abandoned, then somehow ended up in OPM _and_ doing so by using different source-code.
It seems perfectly fine for blissfully unaware reactors to point me to how FOSS works (which, for these kind of things doesn't btw) but the above situation, for me personally, is a complete no-no.
Either you use the original sources that are abandoned (and perhaps not work) or you take over the project so that you are able to make changes to the original project and allow for others to take note of that.
Simply making changes to an abandoned project to make it work, adding it to OPM and then pointing towards the original repo/author, crossing fingers no-one will ever notice is just plain rude to everybody except for the one making use of these kind of tactics.
In such situation an (OPM) package should simply mention that fact and/or explicitly not pointing towards the original author and/or original repo.
I have spend 3 freakin' days ploughing my way through the forums here, reading post by post going back year by year, in the hopes to locate even a glimpse of someone mentioning that a particular package has been modified, but was unable to find any evidence of it.
How FOSSY is that ? :'(
Ok.. I mean maybe the confusion was the part that says "don't you think?".Well, that and some other small things that initially lead me to believe you were directly responding to my post. Only some things didn't made any sense in the context of my post.
I'm not native english speaker, so I don't know how to say that to anyone instead of using the 'you'. That you was meant to anyone, not specifically the previous post.No problem, I think you are perfectly fine expressing yourself in English, and when in doubt we can ask :). My native tongue also isn't English...
And well feel free to criticize my response anyways. The idea is to get the best solution I think, no one will have the right answer at the first, not even me or you or anyone. For that is the discussion forum.Oh, I am sure we do not have the solution. Especially when it comes to the best solution for GetMem.
Oh, I am sure we do not have the solution. Especially when it comes to the best solution for GetMem.
Each and every time I come up with something then it does seem to require some form of moderation/verification. I believe it just comes with the territory and that there is no other way around it.
If we will add support to anyone registered in the OPM website to add packages in the future, what prevents that me or anyone else fork and publish any kind of projects, even abandoned projects or 1 line of code projects, empty packages and so on?For sure that could pose a problem.
If we keep thinking that GetMem will do all the job, everything is up to him finally don't you think that?Personaly I would like to see a solution where getmem is able to deligate most if his current work, preferably in a safe manner. At least to a degree where he is able to feel comfortable.
If the website will have a package asociated with an author, that doesn't add the relationship of maintainer of the package?The author should be the one that authored the code. Of course this doesn't necessarily mean that the author is the maintainer (although in my book it is, otherwise don't supply the package for OPM in case you are not willing to be so).
Let's say we start adding all packages to GetMem, as new members register they can take his projects. Finally the projects that are still owned by GetMem are the 'not maintained' by his original author at least.Well, GetMem mentioned not wanting to go through the complete list of packages in order to determine the abandoned ones.
Ok, I'm using postgres, so I know how to use it. About the console application, I've coded some endpoints in pascal as well, I can't remember wich tools used but is just like do the query to the database and return as json.Thank you! I can also handle the database part, but web development isn't my strong point. The fact that you are willing to help, it means a lot to me.
About the main json, maybe an endpoint called main.json will do the trick :) Like it generates the json file with all the packages. Of couse is not optimal because it needs to download a huge file, but maybe adding some pagination will do.
And web interfaces is what I do most of the time, so I can help, but we need to organize in some way
of course is a lot of work and maybe you as me want to take weekends for fun not to keep coding like in the whole weekExactly! To make things worse, I have two small children. Coding in my free time, instead of playing with my kids is a sin in my opinion. :)
However, and I express it gladly again, my main concern is/was about packages that are indeed abandoned, then somehow ended up in OPM _and_ doing so by using different source-code.I agree, but the vast majority of the packages are submitted by forum users like you. Perhaps I should do a background check for each package, but this would require a tremendous amount of time, so I only remove binaries to prevent a possible infection. Please note that some well known package can contain binaries(dll, so), but it was explicitly requested by the package developer, without them the package wouldn't work properly. By the way I removed Internettools from OPM, the package is actively developed and the author regularly visits this forum, as you correctly mentioned in one of your previous posts.
It seems perfectly fine for blissfully unaware reactors to point me to how FOSS works (which, for these kind of things doesn't btw) but the above situation, for me personally, is a complete no-no.
Either you use the original sources that are abandoned (and perhaps not work) or you take over the project so that you are able to make changes to the original project and allow for others to take note of that.
Simply making changes to an abandoned project to make it work, adding it to OPM and then pointing towards the original repo/author, crossing fingers no-one will ever notice is just plain rude to everybody except for the one making use of these kind of tactics
Personaly I would like to see a solution where getmem is able to deligate most if his current work, preferably in a safe manner. At least to a degree where he is able to feel comfortable.That would be great! This project is no longer something I enjoy.
I agree, but the vast majority of the packages are submitted by forum users like you. Perhaps I should do a background check for each package, but this would require a tremendous amount of time, so I only remove binaries to prevent a possible infection.A good thing that you at least uphold some standards that you are able to manage. However, it raises another concern, namely the integrity of the code itself.
Please note that some well known package can contain binaries(dll, so), but it was explicitly requested by the package developer, without them the package wouldn't work properly.
By the way I removed Internettools from OPM, the package is actively developed and the author regularly visits this forum, as you correctly mentioned in one of your previous posts.Thank you for doing so. Although that would perhaps be a bummer for the person who created and submitted the package, it is imho better this way.
That would be great! This project is no longer something I enjoy.I feel your burden there. In that regards I really wish I could be of more help. Note that i'm often thinking about how things could be improved but, it seems there are so many obstacles in the way that things become stuck when working out solutions that have a too naive approach.
GetMem, I need to work on the JVCL contribution to OPM because the JvPascalInterpreter package does not compile on 64 bit and this prevents usage of the OPM installation even if the user does not need it at all.wp I use that for such cases:
Is there a way that I can keep this package within the OPM-zip (JvPascalInterpreter does work on 32 bit) but exclude it from the default OPM installation?
How about not accepting any packages that do not have an origin for their sources ? That is a thing that could be automated ? Each package contain sources, and they should match with those from their origin. In case it doesn't then such package will not be accepted or indicated as a package without (official/matching) origin.OK. From now on, I will pay more attention to submitted packages and their sources. Unfortunately the damage is already done, nowadays I rarely add new packages to the repository, only update old ones. If you notice some issues, please let me know and we(the community) can decide what to do next: create a fork, delete it from OPM, etc...
That will put some of the burden back to the submitter. I fully realise that will probably also mean less packages being submitted. However, since i've given some of these things some though, I don't think you are able to relieve yourself without making some of such (perhaps harsh) decisions.
afaik people who genuinely maintain a project that support OPM would have no issue whatsoever with such a rule as they already have this kind of infrastructure set up.
At least that way the end-user would be able to either not being offered untrusted sources or at least ones that are indicated as such (in which case the end-user can decide him/herself if it's worth the trouble, e.g. you would probably not have heard from me in the first place instead of being a pita now ;) )
One of the things I still miss a little is your input. Perhaps you already expressed yourself in the past (that I am unaware off) but it would be nice to know what you yourself think could be done to relieve your stress. And by that I meant without just simply turning things over to someone else. You must have some idea's about that, or not ?As I mentioned in one of my previous post, we should create a database(https://packages.lazarus-ide.org/) and implement a login system, where package maintainers can update their packages without my intervention, via OPM or web interface. Also forum user can rate packages. @Lainz offered to help, but still there is too much work, even for two persons.
For example, I've seen a mention of some sorts of quality system so that users could submit their experience or offer a grade for the package. Bad experience, bad grade. Good experience, good grade. Too much bad grades call for (manual) inspection and/or removal. At the same time you mentioned that being a shiteload of work for you to be able to incorporate such a thing into OPM (not to mention adding/maintaining an infrastructure for keeping track of that information).This is already implemented locally, you can click and rate various packages(see rating column in OPM), but is kinda useless, until the ratings are not centralized.
In theory it is a good idea, as it would also be able to gather some information with regards to popularity of a package (although perhaps you are able to see some of that already because of the number of downloads/installations of a particular package). The more a particular package is valued the more attention it deserves, in case people report issues. But in the end we don't know if self-regulating in such a way is going to work for OPM.
Is there a way that I can keep this package within the OPM-zip (JvPascalInterpreter does work on 32 bit) but exclude it from the default OPM installation?Yes it is. I updated the package. JvPascalInterpreter is no longer installed by default.
Hi, there is a new version of BGRABitmap that fixes compilation for Linux (of BGRAControls)Done. I updated BGRABitmap.
https://forum.lazarus.freepascal.org/index.php/topic,24239.msg372105.html#msg372105
As well the directory of BGLControls has changed to solve the compilation problem with FPC 3.2
Thank you.QuoteIs there a way that I can keep this package within the OPM-zip (JvPascalInterpreter does work on 32 bit) but exclude it from the default OPM installation?Yes it is. I updated the package. JvPascalInterpreter is no longer installed by default.
Exactly! To make things worse, I have two small children. Coding in my free time, instead of playing with my kids is a sin in my opinion.
This project is no longer something I enjoy.
@lainzQuoteHi, there is a new version of BGRABitmap that fixes compilation for Linux (of BGRAControls)Done. I updated BGRABitmap.
https://forum.lazarus.freepascal.org/index.php/topic,24239.msg372105.html#msg372105
As well the directory of BGLControls has changed to solve the compilation problem with FPC 3.2
@ASBzone
Thank you for your kind words and suggestions.
Why OPM doesn't check if there exists already downloaded/installed package in the user system so it won't need to be redownloaded again during (re) installation process?Uncheck OPM->Options->General->Always force download and extract.
Hi GetMem, I've modified a bit the website to look fine on mobile, and as well I've put a material design theme for the siteThank you.
https://forum.lazarus.freepascal.org/index.php/topic,51174.msg375262.html#msg375262
User @paweld created a nice api for the rating system and the automatic package updateThanks paweld!
Zeos has released version 7.2.8 - which is a bugfix release for the 7.2 series of Zeos. Could you please update OPM?Thank you! I will update Zeos soon.
I recently installed uos package from OPM.I updated uos, thanks for the new version.
OPM works great, the package was installed out of the box.
But the version of uos is very old and obsolete for fpc > 3.0.0.
Could it be possible to give the last code from the site?
https://github.com/fredvs/uos
I have also a other question: In uos package there are demos.I'm not sure what you mean, the demo folder is in the same directory as the uos package. The directory structrue from your github repository is preserved. OPM downloads the packages to the Lazarus config folder, usually:
Where people have to look to load those demos, is there a "Demos of Packages" directory?
I updated uos, thanks for the new version.
OPM downloads the packages to the Lazarus config folder, usually:
Windows: "C:\Users\<User name>\AppData\Local\lazarus\onlinepackagemanager\packages\"
Linux: ~/.lazarus/onlinepackagemanager/packages/
GetMem I have to bother you again with a new version because LazMapViewer does not compileNo problem!
Could you update OPM to the new version https://sourceforge.net/projects/lazarus-ccr/files/LazMapViewer/lazmapviewer-v0.2.4.zip/download?I updated the package. Thanks for the new version.
I just tried to install JPLib in Lazarus 2.0.10 on Linux (Ubuntu). I have issues about code only for Windows. I checked in original repository and I saw this commit https://github.com/jackdp/JPLib/commit/e226175b5b4227ad9b6dbb059f69ebe02b35d0fa#diff-e428fceacce8e331526c5ba5d2b112f5e1dafa8db87eccdbba7c11eef88053e7 . Can you update the package?
Thank you very much!
I am writing a wiki page for the TLazMapViewer package. GetMem, could you please replace the home page entry for this package in OPM by this new link: https://wiki.lazarus.freepascal.org/LazMapViewerI updated the home page entry to: https://wiki.lazarus.freepascal.org/LazMapViewer
Thankyou! Here a drawing for you- :)Nice drawing. Thank you!
I did that drawing together with my mom, she draws better than me, but we understand each other, so it looks like one person did it all.
I am writing a wiki page for the TLazMapViewer package.Thank you! It's much appreciated.
A question for Mormot package: why are there no sqlite static files in mormot package, available in OPM?Forum user @mdbs99 created the Mormot package for OPM. You can read more details here:
@El SalvadorAhhh. No problem. Anyway static files are sqlite3 binary files needed for FPC static linking (if you use unit SynSQLite3Static) and must keep in sync these binaries with mormot source code (otherwise, SynSQLite3Static will complain about invalid versions, and some random/unexpected errors may occur).QuoteA question for Mormot package: why are there no sqlite static files in mormot package, available in OPM?Forum user @mdbs99 created the Mormot package for OPM. You can read more details here:
https://forum.lazarus.freepascal.org/index.php/topic,34297.msg327639.html#msg327639
Personally I don't use Mormot, so I don't know anything about sqlite static files.
Please, find attached a new package with DBTreeView and DBCntrlGrid components.
https://bugs.freepascal.org/view.php?id=38336
The Github repo:
https://github.com/ZGabrovski/DBTreeViewAndDBCntrlGrid
There is a lot of bugfixes in TDBCntrlGrid.
You can update the package.
Please find attached new bugfix update.Done! Thank you.
Regards,
Zdravko
Is fpExif in OPM ?Apparently not.
I found DExif, but not fpExif. Or is the name different ?Good question! I have no idea :) I only maintain the package manager, I am unfamiliar with 99% of the packages.
I want to test fpExif, but i use only packages from OPM. This avoid normaly headache :-)I can add fpExif if needed, no problem. Form where can I download the package?
I can add fpExif if needed, no problem. Form where can I download the package?
I can add fpExif if needed, no problem. Form where can I download the package?
From SourceForge; it's part of the Lazarus-CCR :)
Seems OPM is not up-to-date with the latest version of Indy's code on GitHub (https://github.com/IndySockets/Indy/).
I'm not sure what you mean, I updated indy a few weeks ago. Just to double-check, I did a SVN update(screenshot1). The version in OPM is the same, namely r. 3662(screenshot2). Am I missing something?
Hmm...
Nice to see progress in the packages. But, on the other hand OPM is not a development platform and is supposed to distribute "stable" packages only (whatever that means).
To reduce the workload for GetMem who has to apply the changes manually I'd urge you to use your own version control system (GitHub, Gitlab, Sourceforge) and send GetMem only new versions after some degree of stability is achieved or after severe fixes.
To give your users access to your recent version you can use the "update-json" mechanism: Store the zips on your site and create an update.json with the link to this zip. Send the update-json to GetMem, and your recent version will be available to the OPM users by selecting "install from third-party repository": https://wiki.freepascal.org/Online_Package_Manager#Create_JSON_for_updates
Hi Lainz,
Compiling with FPC 3.2.0/Lazarus Trunk, BGRAControls gives the error in the screenshot. I checked BGRABitmap from OPM, is the latest version(v.11.3.1.0), at least according to the external json(https://raw.githubusercontent.com/bgrabitmap/bgrabitmap/master/update_BGRABitmap.json). Do I need BGRABitmap trunk? Or am I missing something obvious?
Hi, thanks for reporting, I will fix it.I updated BGRAControls. Thanks for the new version.
Edit: Done, please download it again, it should work now with current release of BGRABitmap.
Could you update uos?I updated UOS. Thanks for the new version.
https://github.com/fredvs/uos
Many thanks.
Could you update ray4lazDone. Thanks for the new version.
https://github.com/GuvaCode/Ray4Laz
json : https://raw.githubusercontent.com/GuvaCode/GuvaCode/main/update_Ray4Laz.json
What do you think about adding these libs?The second one does not contain an lpk file, so I cannot add it. The first one looks OK. If it's stable enough I can add it. Did you test it?
https://github.com/lalexs75/protobuf-fpc
https://github.com/iLya2IK/wchttpserver
LazSerial v0.4thanks,
Serial Port Component for Lazarus
by Jurassic Pork 03/2013 02/2021
new in v0.4 version (02/2021)
DeviceClose procedure fixed
can you update my component Lazserial for a new version (0.4) available hereI updated Lazserial. Thanks for the new version.
JPLib and JPPack does not install under the new version 2.0.12. Thanks to modifie it.What is the error? It works fine with Lazarus trunk. Since these packages are actively maintained, you should report the bug to the author(https://github.com/jackdp/JPLib and https://github.com/jackdp/JPPack). Once is fixed I can update in OPM.
LazSerial v0.5Thanks to modify it in OPM
Serial Port Component for Lazarus
by Jurassic Pork 03/2013 03/2021
new in v0.5 version (03/2021)
Memory leak on get_serial_port_names in lazsynaser.pas fixed
Could you please add my libraryI added the package. Thank you!
https://github.com/GuvaCode/Code-Librarian
update json : https://raw.githubusercontent.com/GuvaCode/GuvaCode/main/update_CodeLibrarian.json
Hi Soner,Thanks, I recompiled with opm-version now. It works.
Please try now. I updated PowerPDF.
Please update https://github.com/GuvaCode/Ray4LazDone. Thanks for the new version.
An issue with the main dlg and floating tooltip.Sometimes, when the description/license text is too long, you have to scroll down to read the entire text so the tooltip window must receive focus. If you really want, we can add another checkbox in the options. If checked the hint windows does not receive focus, but to be honest, I don't think it's worth the effort.
Ubuntu x64 20.4.
Tooltip (short package info) is showing but __gets the focus__. So title of main dlg is becoming pale.
Pls make this tooltip not getting focus. Better set to tooltip window style csNoFocus and StayOnTop style.
@GetMem, can you update Indy, please? There have been 18 checkins to Indy's GitHub repository since the last time Indy was updated in OPM.I updated Indy. Thanks for the new version!
I realize this has been a manual process for you so far. So I'm considering setting up GitHub Releases for future Indy releases.Hopefully in the near future we will create a platform, where each package maintainer can update their packages. The process already started, but is painfully slow. Until then I prefer to update the packages manually. It's really simple and it only takes couple of minutes:
It looks like the .zip file currently in OPM is just a copy of Indy's /Lib source folder renamed to /Indy10 and pruned a little. For a seamless transition, I would have to replicate that same .zip structure, correct? I could setup new releases in GitHub with that .zip structure, but that would require making a new branch of the repository for each release, and the root folder would be /Lib, unless I rename it to /Indy10 in each branch
@GetMem, can you update Indy, please? There have been 18 checkins to Indy's GitHub repository since the last time Indy was updated in OPM.
I realize this has been a manual process for you so far. So I'm considering setting up GitHub Releases for future Indy releases.
It looks like the .zip file currently in OPM is just a copy of Indy's /Lib source folder renamed to /Indy10 and pruned a little. For a seamless transition, I would have to replicate that same .zip structure, correct? I could setup new releases in GitHub with that .zip structure, but that would require making a new branch of the repository for each release, and the root folder would be /Lib, unless I rename it to /Indy10 in each branch (now, I'm starting to wonder if most of what is currently in Indy's repository is not actually needed by end users and should be moved to a separate repository just for Indy's team members).
If the JSON file used by OPM is updated to point at these GitHub releases for downloads, would that different base folder name cause issues when Lazarus users try to update their existing Indy installations? Otherwise, worst case, I suppose I could just create new .zip files manually and attach them to each GitHub release, rather than (or addition to) linking each release to the repository code.
Hopefully in the near future we will create a platform, where each package maintainer can update their packages.
Until then I prefer to update the packages manually.
...
Instead can you please post a message here when it's time to update? I will try update the package in 24 hours, except perhaps in weekends.
Hello GetMem !!! update please Ray4LazDone. Thanks for the new version.
I just posted a minor update to Indy, please update OPM.Done. Thanks for the new version.
GetMem, the v0.1.7 of SpkToolBar now is in the Files section of CCR: https://sourceforge.net/projects/lazarus-ccr/files/SpkToolbar/spktoolbar-0.1.7.zip/download. The update-json is at its usual place, https://sourceforge.net/projects/lazarus-ccr/files/SpkToolbar/OPM/update_spktoolbar.json/download.Thank you! I updated the package.
I would appreciate if you could update the OPM version. Thanks.
I just posted a minor update to Indy, please update OPM.
do not put the burden of creating a release on Getmem.
Hopefully in the near future we will create a platform, where each package maintainer can update their packages. The process already started, but is painfully slow. Until then I prefer to update the packages manually. It's really simple and it only takes couple of minutes
@Remy
Unfortunately I cannot compile the latest version of Indy(r. 3910). Please see attached image for more details.
Fixed.Done. Thanks for the new version.
GetMem, as FPC and Lazarus are going to Git and Gitlab, you can do a pull request based repo thing like some other package managers. Also it can have your hosted page too. It can remove the pressure of having to make a platform as you stated and eases the work of package maintainers too. A couple of terminal lines and you are there.Unfortunately trunk/master versions may contain bugs and the bug tracker will be flooded with issues about third party packages. Actually this already happened in the past, so it was decided(not by me), that OPM should only target stable version of a particular package. With that said, I'm not against it, but we must discuss it in the mailing list first.
Hello GetMem,Sorry for the late response, I updated Zeos. Thank you!
I had to do another release because Zoes 7.2.12 didn't cpompile with FPC 3.2.2 for Windows 64 Bits. Could you please update OPM again?
Best regards and thank you,
Jan
Sorry for the late response, I updated Zeos. Thank you!Can you update ibx too? :) because it doesn't compile with neither FPC 3.2. * nor FPC 3.3.*, or I'll be grateful if you tell me where I should report this issue. Thanks
Please try here: https://www.mwasoftware.co.uk/contact-us .Quote from: GetMem link=topic=34297.msg412418#msg412418Sorry for the late response, I updated Zeos. Thank you!Can you update ibx too? :) because it doesn't compile with neither FPC 3.2. * nor FPC 3.3.*, or I'll be grateful if you tell me where I should report this issue. Thanks
Sorry if this is the wrong place to ask.This is the right place. :)
Could you provide me with a link to instructions on how to set up a GitHub repository so you can then accept a package?Unfortunately trunk/main versions may contain bugs and the bug tracker will be flooded with issues about third party packages. Actually this already happened in the past, so it was decided(not by me), that OPM should only target stable version of a particular package. There are a few exception though, like Indy, where the release cycle is slow. With that said, if you or the author of PascalContainer consider that the package is stable, I can add it to OPM. The process is really simple, just let me know in this thread, I will do the rest.
Many thanks in advance!!You're welcome!
it was decided(not by me), that OPM should only target stable version of a particular package. There are a few exception though, like Indy, where the release cycle is slow.
This is the right place. :)
Unfortunately trunk/main versions may contain bugs and the bug tracker will be flooded with issues about third party packages. Actually this already happened in the past, so it was decided(not by me), that OPM should only target stable version of a particular package. There are a few exception though, like Indy, where the release cycle is slow. With that said, if you or the author of PascalContainer consider that the package is stable, I can add it to OPM. The process is really simple, just let me know in this thread, I will do the rest.
FWIW, I have been considering for awhile to update Indy to use GitHub Releases for more stable packages/versioning. I just haven't gotten around to setting it up yet.
When you say set it up, apart from:
$ git tag -a v1.0 -m "Indy10 v1.0" $ git push --tags
And then going to GitHub to edit the new release, what do you mean?
Do you mean to automate it via the GitHub actions?
OPM is currently using its own version number to compensate for that.I'm using the git-svn feature of github to get a version number. I don't know though how useful is for users. The current version is 4056.
I'm using the git-svn feature of github to get a version number. I don't know though how useful is for users. The current version is 4056.
Side note: I guess we can't keep calling it trunk any more. Should we start calling it HEAD instead?I thought I would copy my old config_lazarus into the new folder and that would make all the hassle of re-installing everything from scratch go away. For some reason, the make script has an issue with something inside that, very old, folder and does want to compile Lazarus.
ZEOSLib is an actively maintained package, so I'm not the one who decides which version goes into OPM. IIRC ZEOS has a dedicated forum, perhaps you can ask for a bugfix there. I will gladly update the package once a new version is released.
No need to apologies, you didn't sound bossy at all.
Link of the update json: https://sourceforge.net/projects/lazarus-ccr/files/extrasyn/OPM/update_extrasyn.json/download
Thanks. Fixed it.
hello GetMem, could you update IBX with the new version 2.4.2 ?Done. Thank you!
https://forum.lazarus.freepascal.org/index.php/topic,55968.0.html
thanks.
Done. Thank you!
it seems that the version of Python4Lazarus in online package manager , isn't the last versionI updated Python4Lazarus. Thank you!
Hi Jurassic Pork,Quoteit seems that the version of Python4Lazarus in online package manager , isn't the last versionI updated Python4Lazarus. Thank you!
Hi, I'm asking a question, if it's possible to add Rx controls newest commit r8084 since it has a fix on rxdbgrid. If not possible no problem at all. Thanks.I updated Rx, unfortunately I get an error both with Lazarus 2.0.12/Trunk. Please see attached image for more details. Once the error is fixed I will update the package again as soon as possible. Thank you!
GetMem, sorry - the recently updated version of CalLite still contains a compilation issue with ancient Lazarus/fpc versions: please update OPM to v0.3.9 (https://sourceforge.net/projects/lazarus-ccr/files/CalLite/callite-0.3.9.zip/download)Done. Thank you!
Cannot extract package: "EyeCandyControls.zip".
Error message:"Unable to create file "D:\Prog_Lazarus\packages\EC_Controls\ECLW\mf570-io.jpeg"
Will the installation always go into a separate directory in the local repository for the package?Yes. Let's say you wish to install callite and you change the local repository to c:\, OPM will download the zipfile to c:\callite.zip, then extract it to c:\callite folder. Next time, before install, OPM will try to delete the c:\callite folder. Actually I tested this a few minutes ago and works as expected.
I understand. There is one thing which still confuses me. When I install callite inte my local repo the file structure isQuoteWill the installation always go into a separate directory in the local repository for the package?Yes. Let's say you wish to install callite and you change the local repository to c:\, OPM will download the zipfile to c:\callite.zip, then extract it to c:\callite folder. Next time, before install, OPM will try to delete the c:\callite folder. Actually I tested this a few minutes ago and works as expected.
(local repository)
|- callite
|- callight_pkg.lpk
|- README.txt
|- source
|- calendarlite.pas
etc.
Now the package-zip itself has all folders in a callite folder, i.e. the file structure in the zip is callite
|- callight_pkg.lpk
|- README.txt
|- source
|- calendarlite.pas
etc.
So I could say that the file structure is directly transferred from the zip to the local repo. callight_pkg.lpk
README.txt
|- source
|- calendarlite.pas
etc.
Wouldn't the file then go directly into the local repo folder? Now a delete of the installation folder would erase the local repo.I understand. There is one thing which still confuses me. When I install callite inte my local repo the file structure isYes, this is correct.
Code: [Select]
(local repository)
|- callite
|- callight_pkg.lpk
|- README.txt
|- source
|- calendarlite.pas
etc.
Now the package-zip itself has all folders in a callite folder, i.e. the file structure in the zip is
Code: [Select]
callite
|- callight_pkg.lpk
|- README.txt
|- source
|- calendarlite.pas
etc.
So I could say that the file structure is directly transferred from the zip to the local repo.
What if had created the zip without the callite subfolder? i.e. with a directory structure like thisYou can't, if you go to OPM->Create->Create repository package, the first thing you do is select a base directory. OPM will search for *.lpk files in that folder. When the zip file is create the base folder is always included. You can test this by right clicking the package tree, then click "Show Json", each package has a non-empty "PackageBaseDir" entry(please see attached screenshot).
Code: [Select]
callight_pkg.lpk
README.txt
|- source
|- calendarlite.pas
etc.
I' m not sure which package should I update. Can you please be more specific.
Hi, seems that a package is missing CryptoLib, the other two HashLib and SimpleBaseLib are available.
Hi lainz,QuoteI' m not sure which package should I update. Can you please be more specific.
Hi, seems that a package is missing CryptoLib, the other two HashLib and SimpleBaseLib are available.
Maybe I am stupid, but what is CryptoLib?https://github.com/Xor-el/CryptoLib4Pascal#compile-time-dependencies
- This one (https://github.com/cryptomator/cryptolib)is java
- This one (https://github.com/IcyApril/CryptoLib) is php.
- This one (https://cryptlib.com/security-software) is commercial.
- This one (http://cryptlib.sogot.de/delphi.html) is Delphi. But does it work with FPC/Lazarus?
Are you sure that Xor-el wants to have its package in OPM?
Hey GetMem,i had enhanced my package, what should i do to put it in OPM?This is the right place. :)
Ufff, that's a relief ;) !!Unfortunately trunk/main versions may contain bugs and the bug tracker will be flooded with issues about third party packages. Actually this already happened in the past, so it was decided(not by me), that OPM should only target stable version of a particular package. There are a few exception though, like Indy, where the release cycle is slow. With that said, if you or the author of PascalContainer consider that the package is stable, I can add it to OPM. The process is really simple, just let me know in this thread, I will do the rest.
That makes absolute sense. Having a stable release to base it on makes sense.
I think the main issue is with the fact that not every one uses master/main as the repository's stable branch :(
We need to make people use the Release tools more often. On GitHub they are rather amazing. And maybe I'm biased since I only use GitHub and not GitLab ;)
According to the answer to this issue (https://github.com/terrylao/PascalContainer/issues/11), Terry isn't ready yet to get it on OPM. He needs to sort out Iterator for his generics implementation, so I guess I'll bug you here when that happens.
I'll try and make sure that he creates a tag and a release on GitHub. That would be preferable than just a commit hash, right?
As usual, it's always a pleasure to interact with you, many thanks for that!!
Cheers,
Gus
Hello GetMem !!! update please Ray4Laz (https://github.com/GuvaCode/Ray4Laz/archive/refs/tags/4.0.zip)
https://github.com/GuvaCode/Ray4Laz (https://github.com/GuvaCode/Ray4Laz)
Yes there are problems. But this is if you specify to use the latest version of glfw separately when compiling.Hello GetMem !!! update please Ray4Laz (https://github.com/GuvaCode/Ray4Laz/archive/refs/tags/4.0.zip)
https://github.com/GuvaCode/Ray4Laz (https://github.com/GuvaCode/Ray4Laz)
As I understand, for the moment there are problems with the glfw library... raylib devs are expecting a released glfw lib before making any raylib modifications...
I guess it won't take long...
Hello GetMem !!! update please Ray4Laz (https://github.com/GuvaCode/Ray4Laz/archive/refs/tags/4.0.zip)Done. Thanks for the new version.
https://github.com/GuvaCode/Ray4Laz (https://github.com/GuvaCode/Ray4Laz)
After installing the Laz v2.2RC2 and adjusting my usual settings, I noticed that CSVDocument is included in OPM now - maybe it has been there for a long time, I did not notice.I received CSVDocument via the Submit button(OPM->Options->Create Repository Package->Submit). I have no idea who sent it. I removed now to avoid confusion. Thanks!
CSVDocument, however, is already included in the standard FPC installations (folder packages/fcl-base) where it is maintained (last bug fix 2 years ago) while the CCR version from which the OPM version originates has seen its last change in 2014.
To avoid confusion I'd strongly vote for removing CSVDocument from OPM.
So, please could you share what were you smoking when you decided to implement thisI don't smoke, but maybe I was drunk. :D
Or something that made a bit more sense with an array of choices and not an object with infinite members that have a number at the end to signify index?It makes sense to me, the JSON is directly parsed into an object, instance of a class to be more precise. Please take a look at opkman_serializablepackages.pas for more details. The number in the end makes the JSON validators happy, like this one: https://jsonlint.com/.
Just wanted to ask this because we all thought the JSON was rather strangely conceivedI can't argue with that. It's a valid JSON and is fast enough for OPM.
PS: Please don't take this the wrong way!!No problem. Constructive criticism is always good.
I respect your work and I publicise it as often as I can cuz what you do for free is rather invaluable!!!
Take this with a pinch of salt and in a banter kind of context :)
I don't smoke, but maybe I was drunk. :D
It makes sense to me, the JSON is directly parsed into an object, instance of a class to be more precise. Please take a look at opkman_serializablepackages.pas for more details. The number in the end makes the JSON validators happy, like this one: https://jsonlint.com/.
No problem. Constructive criticism is always good.
Hi, GetMan!
Please, can "OPM" get LAMW packages directly from this link:
https://github.com/jmpessoa/lazandroidmodulewizard/archive/refs/heads/master.zip
So we could avoid some noise....
Thank you!
Hi, dsiders!
Yes, if need by OPM I can "create a targed release"
(although at the current stage of development LAMW only exists while "master")
My doubt is how difficult [and costly] to GetMan handle frequent update requests
for the file "update_lamw.json"
Can you explain to me how this process works?
In my opinion the best solution is(for now) to update the packages manually, it only takes about 3-5 minutes for me...
Accepted!You're welcome! I updated LAMW a few minutes ago. Thanks for the new version.
I will try to bother only in case of critical situations or important developments.
Thank you very much!
Ray4Laz 4.0 needs a (re)update as the author added support for physac.h and raygui.h, changed the name of the units to reflect the original names of the C library, modified all examples to reflect the changes and added two more examples.I updated the package. Thanks for the new version.
So, it is still version 4.0 but this time is complete. Thank you very much!
BTW, at this version, the C library of raylib needs some attention from the user regarding configuration, to include the raygui and physac modules in the generated library...
Ray4Laz 4 assumes that the user did this already.
I updated the package. Thanks for the new version.What the hell? >:D Yes I updated the library but I shouldn't have added the master branch. >:(
What the hell? >:D Yes I updated the library but I shouldn't have added the master branch. >:(No worries, I can put back the old version. What do you prefer?
Now we need to create a release with compiled raylib for several platforms.
Now that's good news!
PS: Hopefully we will have a new platform soon, where each package maintainer can update their own packages. The manual package update it's getting increasingly tedious for me.
Getmem,Thank you, I forwarded the file to @Maxim.
OPM turkish language file updated..Thnks
@GetMemI updated Indy. Thanks for the new version!
I have just checked in a bunch of updates to Indy's GitHub repo.
Lazarus trunk and FPC trunk can not install PascalSCADA because of ZEOS compilation and installation failure. Although OPM states that it has 7.2.14, I have tried real 7.2.14 from https://sourceforge.net/p/zeoslib/code-0/HEAD/tree/branches/7.2-patches/ as explained at https://forum.lazarus.freepascal.org/index.php/topic,51162.msg429916.html#msg429916, and ZEOS finally compiles and PascalSCADA installs without problems.Done. Thank you!
It would be nice if OPM ZEOS could be updated to this version.
Tested. It works. Thanks!Lazarus trunk and FPC trunk can not install PascalSCADA because of ZEOS compilation and installation failure. Although OPM states that it has 7.2.14, I have tried real 7.2.14 from https://sourceforge.net/p/zeoslib/code-0/HEAD/tree/branches/7.2-patches/ as explained at https://forum.lazarus.freepascal.org/index.php/topic,51162.msg429916.html#msg429916, and ZEOS finally compiles and PascalSCADA installs without problems.Done. Thank you!
It would be nice if OPM ZEOS could be updated to this version.
Hello GetMem,It was recently introduced, see more details here: https://forum.lazarus.freepascal.org/index.php/topic,34297.msg419813.html#msg419813 In general it's a good idea, however I can see why is not so good idea in case of pl_*components. Luckily only trunk is effected, I will figure something out for pl packages.
It seams that OPM is now deleting all previous pl_* components when new pl_* component is getting installed. The result is that only last pl_* component stays, which is pretty bad since it confuses IDE and pl_0_libs is always deleted. If I remember well, this problem existed long time ago but was fixed. I can download several pl_* components via OPM and install them manually without problems (if my manual installation order is correct).
Tested with a week old trunk laz and trunk fpc in 32bit laz on Win10x64.
I will figure something out for pl packages.Please test with the latest version(d0a2f521d428045f6c6ca1e411c654a2d99398b1).
Now that OPM has VampyreImaging component, we should probably drop pl_vampyreimaging from OPM.Done.
Somehow I do not see any January 18th changes at https://gitlab.com/freepascal.org/lazarus/lazarus/-/commits/main/components/onlinepackagemanager.QuoteI will figure something out for pl packages.Please test with the latest version(d0a2f521d428045f6c6ca1e411c654a2d99398b1).
Somehow I do not see any January 18th changes at https://gitlab.com/freepascal.org/lazarus/lazarus/-/commits/main/components/onlinepackagemanager.Please try again("Skip clean directory for PL packages.").
I have also tried to find mentioned revision at https://gitlab.com/freepascal.org/lazarus/lazarus/-/network/main?extended_sha1=d0a2f521d428045f6c6ca1e411c654a2d99398b1 but failed.
What am I missing?
I have provided patches to MultiLog and now package and all demos compile and run without problems on trunk fpc+laz, and on fixes fpc+laz (tested in 32bit IDE on Win10x64). Please update OPM from https://github.com/blikblum/multilog/archive/refs/heads/master.zip.I updated the package. Thanks for the new version!
Please try again("Skip clean directory for PL packages.").Overwriting my local opkman_common.pas with latest one and recompiling Lazarus has fixed the issue. Thanks!
Thank you!QuoteI have provided patches to MultiLog and now package and all demos compile and run without problems on trunk fpc+laz, and on fixes fpc+laz (tested in 32bit IDE on Win10x64). Please update OPM from https://github.com/blikblum/multilog/archive/refs/heads/master.zip.I updated the package. Thanks for the new version!
This is an announcement that BitHelpers package becomes deprecated since it is now part of trunk FPC RTL.Congratulations @avra! When it's time to remove BitHelpers from OPM please let me know. I suppose FPC 3.4 release, is not so far in the future.
More info here: https://forum.lazarus.freepascal.org/index.php/topic,41672.msg431472.html#msg431472
BitHelpers package will probably be removed from OPM when official Lazarus starts using FPC 3.4. After that it will be available only at https://bitbucket.org/avra/bithelpers. All new development goes to FPC trunk.
If you have FPC newer then July 21st 2021, you have probably noticed that BitHelpers can no longer install. That is intentional, and if you use new FPC then you should adapt your code to use new FPC RTL instead.
Have fun! ::)
Congratulations @avra!Thanks GetMem, I appreciate it! ;)
When it's time to remove BitHelpers from OPM please let me know. I suppose FPC 3.4 release, is not so far in the future.Well, I guess that good removal time would be when FPC 3.4 comes into official Lazarus release...
I prepared a new release version of fpspreadsheet - I has long been overdue...Thank you! I updated the package.
GetMem, could you please update OPM?
release-zip: https://sourceforge.net/projects/lazarus-ccr/files/FPSpreadsheet/fpspreadsheet-1.14.zip/download
update-json: https://sourceforge.net/projects/lazarus-ccr/files/FPSpreadsheet/OPM/update_FPSpreadsheet.json/download
@GetMem
I have just checked in a bunch of updates to Indy's GitHub repo.
Thank you! I updated Indy.@GetMem
I have just checked in a bunch of updates to Indy's GitHub repo.
New update posted.
For item 'KControls' I click the 'homepage' link in the OPM and getThe author most likely deleted the page. IIRC he was busy with other things and did not have time to maintain the package.
https://bitbucket.org/tomkrysl/kcontrols/
Repository not found
The requested repository either does not exist or you do not have access. If you believe this repository exists and you have access, make sure you're authenticated.
For item 'KControls' I click the 'homepage' link in the OPM and getThe author most likely deleted the page. IIRC he was busy with other things and did not have time to maintain the package.
https://bitbucket.org/tomkrysl/kcontrols/
Repository not found
The requested repository either does not exist or you do not have access. If you believe this repository exists and you have access, make sure you're authenticated.
Its on GitHub at: https://github.com/kryslt/KControls. The page indicates that has been its home since Jan 2020.Thank you! I see that the "External JSON" also points to https://github.com/kryslt/KControls/raw/master/laz_opm_update.json
Probably we should change the "Home page" to https://github.com/kryslt/KControls/, but I'm reluctant to make modification without the author's permission.
Free components for Delphi and Lazarus, this is the main repository maintained by the original author.
The repository was originally located at https://bitbucket.org/tomkrysl/kcontrols. Since January 2020 it is on Github, moved from Bitbucket because Atlassian discontinued Mercurial VCS in 2020. The original repository should be deleted on 1th June 2020.
It looks pretty safe to me to do the mentioned modification...OK. I changed the Home page to https://github.com/kryslt/KControls. Thank you!
Hello, I suggest for inclusion in the online package manager "Slim read-write lock" :-[I added the package. Thank you! A demo project would be nice.
@GetMemDone. Thank you.
pls correct the homepage for SlimRWLock:
https://github.com/red-prig/utils_libs/
As i got from this postI updated BGRABitmap in OPM.
https://gitlab.com/freepascal.org/lazarus/lazarus/-/issues/39660#note_863389048
OPM has not the last BGRABitmap ver? I use last one from github and all is ok here.
....
I added the package. Thank you! A demo project would be nice.
I believe that maybe, sometimes, new entries should require that sort of information before being added.That's a good idea. But I would say it should be a "must". I'd strongly vote for a new strategy in OPM to accept new packages only if they contain a demo application and at least a minimum amount of documentation, say: a readme file or the link to a wiki article.
Note "should" means unless its an exceptional case. Its not "must".
Added to package description, added demo, plz updateI updated the package. Thank you!
I believe that maybe, sometimes, new entries should require that sort of information before being added.
Note "should" means unless its an exceptional case. Its not "must".
That's a good idea. But I would say it should be a "must". I'd strongly vote for a new strategy in OPM to accept new packages only if they contain a demo application and at least a minimum amount of documentation, say: a readme file or the link to a wiki article.
Hi GetMem! Can you add BGRAControls v7.4?I updated the package, thanks for the new version. Have a great weekend!
https://forum.lazarus.freepascal.org/index.php/topic,24176.msg436974.html#msg436974
Thanks! Have a great weekend!
could you please add the hidapi library bindings 0.3.0 0.3.2 package from https://github.com/dioannidis/HIDAPI.pas to OPM ?I added the package. Thank you!
@Dimitrios Chr. IoannidisQuotecould you please add the hidapi library bindings 0.3.0 0.3.2 package from https://github.com/dioannidis/HIDAPI.pas to OPM ?I added the package. Thank you!
is there a mechanism to maintain the OPM package ( updating, made some version obsolete etc ) or must be handled by you ?There is a way to push a newer version of your package. You can read more about the mechanism here: https://wiki.freepascal.org/Online_Package_Manager.
EDIT: There was some errors that was are fixed in 0.3.2 ....I downloaded again the package from your github page, but the lpk file still indicates 0.3.0. Am I missing something?
@Dimitrios Chr. IoannidisQuoteis there a mechanism to maintain the OPM package ( updating, made some version obsolete etc ) or must be handled by you ?
< snip >
:) I prefer to update the packages manually.
QuoteEDIT: There was some errors that was are fixed in 0.3.2 ....I downloaded again the package from your github page, but the lpk file still indicates 0.3.0. Am I missing something?
No you didn't missed anything. I missed to update the package version, apologies. Now it's fixed.Thank you. I updated the package.
The ready packageIs there some kind of documentation and a demo example?
https://gitlab.com/bobby100/tiplabel
Hi,The ready packageIs there some kind of documentation and a demo example?
https://gitlab.com/bobby100/tiplabel
Hi,OK then. Do you prefer some kind of license? The lpk file does not contain any license information.
what is exactly needed?
The README.md is at the moment the whole documentation.
Demo is in the folder TestBed
I took the modified LGPL, like the most of the components I saw with Lazarus till now.Thank you! I added the package to OPM.
The pas file contains the license info, and the licenses are available as text files in the repository. Isn't this the usual way?
I have very little understanding of the licenses anyway ::)
I dont see the LPK file, but maybe @GetMem can create it?Why don't you do it yourself?
I added the LPK to hash library, take it fromThanks. I updated OPM.
https://github.com/Alexey-T/rhl
I sent the PullReq.
have you ask the maintainer of the Pascal IO to do this ? Because the active Maintainer of a lib should be responsible for his code and also do the maitenance of the packages.I agree, this should be done by the package maintainer. Not so long ago I got in trouble, because a user asked for a package update. Later it turned out the pm. did not want to update the package.
Hello all, installed lazarus on several vm's (qos x64, antix x86, win10 ent x86 and win11 pro x64) and in all them installed lazarus fixes branch with fpcupdeluxe (the lazarus version with problem is 2.2.3 2022-05-18 fpc 3.2.3 rev lazarus 2.2.2.9-g64bc8e992e i386-win32-win32/win64I had a lot of socket errors too, on almost all packages installed with the online package manager.
the problem is with online package manager, tried to install in all vms the zeosdbo component (as always with install button) and it failed always on win32 with socket error everytime. Can't download either, same error
switched to win64 and download the component ok, and proceed to manually install on win32 vm and worked fine.
i don't know what happen to that component, others downloaded and installed fine (on all vm's), for example
lazbarcodes, scrolltext, powerpdf, eyecandy controls...
Don't know if it is a bug.
thanks!
Hi, there is BGRAControls v7.5 :)Thank you, I updated the package.
QuoteHi, there is BGRAControls v7.5 :)Thank you, I updated the package.
Thank you! I updated Indy.
GetMem, here's another updated package for OPM: ScrollText v1.1.3 (based on this forum thread (https://forum.lazarus.freepascal.org/index.php/topic,59639.msg444750.html)).Done. Thank you!
zip file location: https://sourceforge.net/projects/lazarus-ccr/files/ScrollText/scrolltext-1.1.3.zip/download
Update json: https://sourceforge.net/projects/lazarus-ccr/files/ScrollText/OPM/update_scrolltext.json/download
hidapi new version v0.4.0 ( https://github.com/dioannidis/HIDAPI.pas ) .I updated the package, thanks for the new version.
Adds a new API function introduced in hidapi 0.12.0 .
You can always download the release zip from from https://github.com/dioannidis/HIDAPI.pas/archive/refs/tags/v0.4.0.zip.
Hi GetMem. Please update to Ray4Laz.
Since I released the new version !!!
https://github.com/GuvaCode/Ray4Laz/archive/refs/tags/4.2.zip
Json : https://raw.githubusercontent.com/GuvaCode/GuvaCode/main/update_Ray4Laz.json
thank you in advance ;)
@GetMem
There is a new version of Jujiboutils (2.5.1): https://sourceforge.net/projects/lazarus-ccr/files/Jujiboutils/
Thanks.
getmem please update the ray4laz package.Done. :)
a critical error has been found in the raylib release.
I recompiled libraylib.a
@GetMemDone. Thank you!
There is a new version of IBX ( IBX4Lazarus 2.5.0 ): https://www.mwasoftware.co.uk/ibx
Thanks.
I noticed that Lazarus 2.2 fails to compile the luicontrols package (part of luipack) for breaking change on DoMeasureTextPosition for TCustomLabels. See https://gitlab.com/freepascal.org/lazarus/lazarus/-/issues/39523Done. Thank you!
The good news is that the fix is already present in the Luiz repo (https://github.com/blikblum/luipack/commit/4f77c466c25a7c509680f39b2e4daa6082d3ef0e#diff-cae7cd79681a00a50b060e286911873e324ffd1dc ). Do we update?
Is there any automated way of updating a package on OPM?Unfortunately no. I have to do it manually.
sent the email to opm@lazarus-ide.orgI received your mail and updated the package on september 09.
but the package that I informed didn't updated properly.Can you please be more specific. What went wrong with the update?
Can you please be more specific. What went wrong with the update?The update you did today seems to be working fine. Previously there were only 2 packages on the big package which were part of an old version, now it has all the packages from the new one and on my initial tests its working fine.
The update you did today seems to be working fine. Previously there were only 2 packages on the big package which were part of an old version, now it has all the packages from the new one and on my initial tests its working fine.I’m glad it was successful.
I know that making an automation system is difficult when you have to manually update all those packages but it surely would make your life easier.Yes, I agree.
GetMem, please add the attached new package to OPM: it's the TGridPrinter and the TGridPrintPreviewDialog initiated in this forum thread.
Release versions (currently v0.2.0) will be available at https://sourceforge.net/projects/lazarus-ccr/files/GridPrinter/
The development version is at https://sourceforge.net/p/lazarus-ccr/svn/HEAD/tree/components/gridprinter/
I started a wiki documentation page at https://wiki.freepascal.org/GridPrinter, to be completed in the next days.
And as a teaser, here's a screenshot of one of the sample projects along with the print preview implemented in this package.
QuoteGetMem, please add the attached new package to OPM: it's the TGridPrinter and the TGridPrintPreviewDialog initiated in this forum thread.
Release versions (currently v0.2.0) will be available at https://sourceforge.net/projects/lazarus-ccr/files/GridPrinter/
The development version is at https://sourceforge.net/p/lazarus-ccr/svn/HEAD/tree/components/gridprinter/
I started a wiki documentation page at https://wiki.freepascal.org/GridPrinter, to be completed in the next days.
And as a teaser, here's a screenshot of one of the sample projects along with the print preview implemented in this package.
@wp
Very nicely done! I added the package to OPM.
GetMen, The OPM is a fantastic job, if at some point a screenshot could be added to the description, it would look amazing. I know it's a lot of work, it's just an idea. Thank you for everything you have done so far.Thanks! Screenshot with what? Images would take to much time to load anyways.
@silvestreQuoteGetMen, The OPM is a fantastic job, if at some point a screenshot could be added to the description, it would look amazing. I know it's a lot of work, it's just an idea. Thank you for everything you have done so far.Thanks! Screenshot with what? Images would take to much time to load anyways.
new in v0.6 version (11/2022)
Fixes for OS-X (thanks to rphoover), SynSer(synaser) properties now persistent, v0.3 of GPS simulator (better GUI on Mac OS-X and Linux)
On OS-X you must set the property SynSer/NonBlock to True (https://forum.lazarus.freepascal.org/index.php/topic,20481.msg456012.html#msg456012) in the properties of TLazserial component.
flags variable used in GetSerialPortNames (linux).
there is a new release of Lazserial Package (version 0.6) hereThank you! I updated the package.
Hi GetMem,Hi Mobius1,
I sent you an email with the update for the package REST DataWare, did it not arrived for you?
Anyways the zip for the new version can be found here (https://github.com/OpenSourceCommunityBrasil/REST-DataWare/archive/refs/tags/v2.0.7.zip).
There are no new packages on this one, just fixes.
Hi Mobius1,thanks!
I updated the package. Thank you!
Would you like to add the Lazarus IDE Search Panel to the OPM?
Category: LazIDEPlugin
Done! Thanks for the package.
GetMem, could you please update the GridPrinter in OPM? It is now at version 0.4 with lots of bug fixes and included xml documentation as well as a snapshot of the wiki page as chm file.Done. Thank you!
Download of zip: https://sourceforge.net/projects/lazarus-ccr/files/GridPrinter/gridprinter-v0.4.0.zip/download
the dependency to DCP i have but I think it is a wrong version?When you have it from OPM, just as your screenshot shows, it's the correct version.
No problem here. Just installed DCPCrypt and all the FPSpreadsheet packages into Laz 2.2.4/fpc3.2.2 (64bit) on Windows 11. No problems. Did you try a clean rebuild of the IDE? It's often an easy fix of such compilation issues.
Can you try and have something depend on the package with the _crypto on it?spready (https://sourceforge.net/p/lazarus-ccr/svn/HEAD/tree/applications/spready/) depends on the fpspreadsheet_crypto package. It compiles and runs nicely on the system which I had setup in the previous post for dcpcrypt, fpspreadsheet and its companion packages (among them the _crypto).
So, the problem is that when you compile the crypto package the dcpcrypt cannot find its units? Try a clean compilation of dcpcrypt first.
Hi, sorry for posting it here, but I get this package LazProfiler with OPM with Lazarus 2.2.2, and then Lazarus IDE doesn't works fine once installed.Unfortunately I now nothing about LazProfiler, but I can confirm that it doesn't work properly. Can you please contact the package maintainer?
Hi again, another thing is that I can't install BGRABitmap and BGRAControls from "External Repository".I did run a quick test, install packages from external repository works fine at my side. What error do you get? Which version of Lazarus/FPC?
QuoteHi again, another thing is that I can't install BGRABitmap and BGRAControls from "External Repository".I did run a quick test, install packages from external repository works fine at my side. What error do you get? Which version of Lazarus/FPC?
Fixed an old issue with DCPCrypt being unable to correctly hash files > 4GB. GetMem, could you please update the package in OPM? The current release is at https://sourceforge.net/projects/lazarus-ccr/files/DCPcrypt/DCPCrypt%202.0.4.2/dcpcrypt-2.0.4.2.zip/download.Done. Thanks.
Hi, I'm using Linux Mint 21 Cinammon 64 bit, Lazarus Project 2.2.4-0 amd64.deb downloaded from Sourceforge.Did you changed OPM->Options->General->"Check external repositories for package update" from Never to something else?
Unfortunately the error Window closes really fast. Attached a screenshot that seems that the external package isn't listed..
Thank you.Fixed an old issue with DCPCrypt being unable to correctly hash files > 4GB. GetMem, could you please update the package in OPM? The current release is at https://sourceforge.net/projects/lazarus-ccr/files/DCPcrypt/DCPCrypt%202.0.4.2/dcpcrypt-2.0.4.2.zip/download.Done. Thanks.
In the package, there is an empty file "dcpcrypt.opkman". What is this good for?It shouldn't be there. I updated the package.
Hi, I'm using Linux Mint 21 Cinammon 64 bit, Lazarus Project 2.2.4-0 amd64.deb downloaded from Sourceforge.Did you changed OPM->Options->General->"Check external repositories for package update" from Never to something else?
Unfortunately the error Window closes really fast. Attached a screenshot that seems that the external package isn't listed..
Hi, I changed it from Never to Every few minutes or something like that. And still when clicking on Install from External it fails.I tested with a Linux Mint 20.02 Cinnamon VM. It works fine at my side(see attached picture).
Hello GetMem, here's another updated package: CalLite at v0.3.10 (some bugfixes) https://sourceforge.net/projects/lazarus-ccr/files/CalLite/callite-0.3.10.zip/downloadDone. Thanks.
Hi, I changed it from Never to Every few minutes or something like that. And still when clicking on Install from External it fails.I tested with a Linux Mint 20.02 Cinnamon VM. It works fine at my side(see attached picture).
What It can be? A missing library in Mint 21?The OpenSSL libraries. On windows OPM downloads the dll's(version 1.1.1) from:
@lainzQuoteWhat It can be? A missing library in Mint 21?The OpenSSL libraries. On windows OPM downloads the dll's(version 1.1.1) from:
32 bit: http://packages.lazarus-ide.org/openssl-1.1.1o-i386-win32.zip
64 bit:http://packages.lazarus-ide.org/openssl-1.1.1o-x64_86-win64.zip
On linux it should be installed by default. Open a terminal and type: openssl version
lainz@lainz-VirtualBox:~/Escritorio$ openssl version
OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)
OpenSSL 3.0 is a major release and not fully backwards compatible with the previous release. Most applications that worked with OpenSSL 1.1.1 will still work unchangedSo yes, it should work(most likely :) )
Thanks.Hello GetMem, here's another updated package: CalLite at v0.3.10 (some bugfixes) https://sourceforge.net/projects/lazarus-ccr/files/CalLite/callite-0.3.10.zip/downloadDone. Thanks.
But here's another one: ExtraSyn had compilation issues. The new version (v1.2.1) is at https://sourceforge.net/projects/lazarus-ccr/files/extrasyn/extrasyn-v1.2.1.zip/downloadNo problem. I updated the package.
@lainz
According to the documentation:QuoteOpenSSL 3.0 is a major release and not fully backwards compatible with the previous release. Most applications that worked with OpenSSL 1.1.1 will still work unchangedSo yes, it should work(most likely :) )
the sdl2 package can be updated with the latest ofI did take a quick look, sdl2 is pl_* package actively maintained by @avra. Let's wait and see if he agrees to upgrade the package.
https://github.com/PascalGameDevelopment/SDL2-for-Pascal ?
I was asking because I saw that the date of pl_sdl2 is from 2020 and this other one is constantly being updated.Did you bother actually comparing 2 mentioned SDL2 libraries? They are different. Use the one which you prefer.
Hi getmem, seems that the package LazProfiler is outdated (2019 latest alpha release) and also I've received no response in his main thread:Isn't this a bit harsh? You posted your question about the status four days ago. What if the author did not see the post? And being 3 year without updates also does not automatically mean that the package is orphaned - we have many packages which did not see any updates for a much longer time.
https://forum.lazarus.freepascal.org/index.php/topic,38983.msg465149.html#msg465149
It's better to remove from OPM now, because it fails the user installation...
When answering the post https://forum.lazarus.freepascal.org/index.php/topic,61823.msg466410.html#msg466410 I noticed that the OPM version of FPSpreadsheet does not list the package laz_fpspreadsheet_dataset.lpk which therefore cannot be installed via OPM. After downloading from OPM I do see the lpk file as well as the corresponding units. Therefore, it is probably only the fpspreadsheet json file which is missing the laz_fpspreadsheet_dataset package. GetMem, could you please add this for me?Done.
I've not get any response from LazProfiler author since 2022 12 30...Can be fixed? I will wait a few more days, maybe somebody will take a look at it.
At least, now there is a clear warning in OPM, that package XY is not tested with the current version.Are these the lines "Lazarus compatibility" and "FPC compatibility"? How can the author/maintainer update this information? Tell you when an update is requested?
Are these the lines "Lazarus compatibility" and "FPC compatibility"?Yes.
How can the author/maintainer update this information?The latest stable version of FPC/Lazarus is automatically added + Lazarus Trunk.
Tell you when an update is requested?Only in special cases, when a package does not support Laz version x or FPC version y.
Ok I can understand. Also bgrabitmap and bgracontrols needs dev branch to work in trunk.I will remove it, if nobody willing to maintain it.
QuoteHow can the author/maintainer update this information?The latest stable version of FPC/Lazarus is automatically added + Lazarus Trunk.QuoteTell you when an update is requested?Only in special cases, when a package does not support Laz version x or FPC version y.
captchaI updated the packages. Please test.
chemtext
colorpalette
extrasyn
fpspreadsheet
gridprinter
industrial
jvcllaz
lazbarcodes
lazmapviewer
mbcolorlib
spktoolbar
tparadoxdataset -- 32 bit only!!!
tvplanit
BTW, usually it is marked that packages work with versions as old as Laz 2.0/FPC3.0 - I doubt that is information is validAfter 2.4.0 is released, I will remove the FPC: 3.0.x and Lazarus 2.0.x series. In my opinion there is no point to support old versions.
During the test I noticed that the lazbarcodes package requires an update. Its zip file is here: https://sourceforge.net/projects/lazarus-ccr/files/LazBarcodes/lazbarcodes-2.0.0.zip/downloadDone.
There will be also an update for the tvplanit package in a few days.OK.
I updated the packages. Please test.Thank you.
Here it is: https://sourceforge.net/projects/lazarus-ccr/files/tvplanit/tvplanit-1.8.0.zip/downloadQuoteThere will be also an update for the tvplanit package in a few days.OK.
I updated TVPlanit. Thanks.I updated the packages. Please test.Thank you.Here it is: https://sourceforge.net/projects/lazarus-ccr/files/tvplanit/tvplanit-1.8.0.zip/downloadQuoteThere will be also an update for the tvplanit package in a few days.OK.
Hi GetMem, can you update bgrabitmap and bgracontrols to state that doesn't works anymore with FPC 3.0.4I updated the information. Thanks.
For now the code remains the same. Until we fix trunk issues.
Based on the discussion in https://forum.lazarus.freepascal.org/index.php/topic,61933.msg467601.html I am submitting an updated version of LazBarcodes (v2.0.1) which provides better compatibility with the previous major version 1.0.4.I updated the package.
The zip file of the new version can be found at https://sourceforge.net/projects/lazarus-ccr/files/LazBarcodes/lazbarcodes-2.0.1.zip/download
Hi. About the LazProfiler package the author Pascal says that's open for pull requests. So if anyone is interested can fix the package.Thanks for the info. Let's hope somebody will fix it soon.
GetMem, could you please add another update of LazBarcodes? It is at version 2.0.2 now (https://sourceforge.net/projects/lazarus-ccr/files/LazBarcodes/lazbarcodes-2.0.2.zip/download) and hopefully fixes the installation issue.Done! Thanks for the new version.
Thank you. It did not solve the installation issue though.It does delete the directories, IIRC you were the one who suggested that OPM should clear the old directory just before installing a package. So I did a quick debug, see attached screenshots, just before and after the delete. It works fine at my side, but maybe those files are in use for some reason?
But as I found out now, there are some unexpected files in the directory into which OPM unzipped the download. Without these files compilation runs correctly.
The reason for these "stray" files could be that I have a common "packages" folder into which OPM does all the installations. This means that older installations of LazBarcodes and the new installation went into the same folder and were mixed up.
Could it be that OPM does not delete the directories into which it unzips the downloads?
Now I added a file to the folder src in the installation folder used by OPM for LazBarcodes and repeated the installation - the file is still there afterwards! No file of the destination folder was open, the folder itself was not opened in the Explorer either.I did the same at my side an it's working fine. Can you please add the following code(opkman_zipper, line: 161):
On the other hand, when I simulate your code in a simple test application everything works fine. (see attachment)
Strange...
GetMem, could you please update the TvPlanIt package to v1.8.1? The new version is a bugfix release for TVpCalendar.Done. Thanks for the new version.
Downloadlink: https://sourceforge.net/projects/lazarus-ccr/files/tvplanit/tvplanit-1.8.1.zip/download
https://wiki.freepascal.org/LGenerics#AboutYes, but only Monday. I'm away in the weekend.
Can this be added to OPM, seems well tested.
I've left this on the GitHub repo: Cannot compile current OPM version in latest trunk as of 2023/02/28.Fpcupdeluxe builds the packages from sources(see attached image), OPM is not involved. I can update BGRABitmap in OPM, but it won't help you updating trunk/main with fpcupdeluxe.
I'm kinda CCing it here since I really don't know where it will be more noticeable to the author.
Fpcupdeluxe builds the packages from sources(see attached image), OPM is not involved. I can update BGRABitmap in OPM, but it won't help you updating trunk/main with fpcupdeluxe.
Lazarus/FPC main is a fast changing, unstable environment, if it's possible I would avoid it. I know it's useful in some cases, like testing out new features, but usually a stable version it's a better choice.
Hello,
thank you this expert and for all your your efforts.
I think it would be good thing to add and display the sizes of packages for people whom want to download all packages but not the big ones.
thanks.
Hello,
thank you this expert and for all your your efforts.
I think it would be good thing to add and display the sizes of packages for people whom want to download all packages but not the big ones.
thanks.
Every package has "Repository File Size" metadata.
Yes, But It would be better to display it in the list, so when someone trying to download all packages, he will have the ability to skip the big ones.Display where? There is no more room for another column. OPM already looks like a Christmas tree. :)
For exemple, Me, I do not have a stable internet connection, doing do, It will help me to download only small packages .
What is the Problem, i see actual the size in OPM. Or is the Repository filesize not the wanted one ?Yes, but in order to see it, you have to expand the node. I believe @BSaidus wants to see the file size, in a place where is more visible, like a separate column or something similar.
@af0815If i want a package, i search first for the wanted functionallyty and then i can decide if the packages need my internet budget. And realy, how oft will this be done ? The information is visible, but not on the first level, ok. The next is to have a calculator for all selected packages, because build a sum about the wanted packages is the next, because write down the values and calculate the size is nobody done - so step by step it will grow.QuoteWhat is the Problem, i see actual the size in OPM. Or is the Repository filesize not the wanted one ?Yes, but in order to see it, you have to expand the node. I believe @BSaidus wants to see the file size, in a place where is more visible, like a separate column or something similar.
@af0815If i want a package, i search first for the wanted functionallyty and then i can decide if the packages need my internet budget. And realy, how oft will this be done ? The information is visible, but not on the first level, ok. The next is to have a calculator for all selected packages, because build a sum about the wanted packages is the next, because write down the values and calculate the size is nobody done - so step by step it will grow.QuoteWhat is the Problem, i see actual the size in OPM. Or is the Repository filesize not the wanted one ?Yes, but in order to see it, you have to expand the node. I believe @BSaidus wants to see the file size, in a place where is more visible, like a separate column or something similar.
Your decision, OPM is full is good and IMHO correct (more will not be good). And all the Information is in the JSON, so everybody can write a tool to do it by himself to calculate the data.
Hi GetMem. Please update to Ray4Laz.Done. Thanks for the new version!
Since I released the new version !!!
https://github.com/GuvaCode/Ray4Laz/archive/refs/tags/4.5.zip (https://github.com/GuvaCode/Ray4Laz/archive/refs/tags/4.5.zip)
Json : https://raw.githubusercontent.com/GuvaCode/GuvaCode/main/update_Ray4Laz.json (https://raw.githubusercontent.com/GuvaCode/GuvaCode/main/update_Ray4Laz.json)
thank you in advance ;)
opensslsockets.pp(81,12) Fatal: Can't find unit opensslsockets used by opkman_downloaderFriendly, J.P
Lnet provides its own version of openssl, which is just a copy of some old synapse unit. Since FPC also has a version of synapse and implicitly openssl.pas, the system(LazarusIDE) got confused.The solution is to delete the openssl units shipped with lnet, it's already in FPC.
Ok, thanks GetMem, when i remove the openssl.pas from lnet files now i can install the lnetvisual package but i have always the big crash when i load the testnet project. I think that someThing is wrong in this project example.You're more then welcome! Unfortunately I know nothing about lnet, perhaps you should contact the package developer?
Method = msSslTLSwith this :
Method = msTLSand in the file main.pas comments these lines :
Can I ask you to either blank the PackageBaseDir on the JSON, or redo the zip file so that it includes the VirtualTreeView V5 folder that then contains the code?Done. Please try again.
P.S.: I haven't quitted on the new site for the OPM packages. Like I said many times in my disclaimer, my mental health has been messing with me and I'm kinda just now resuming coding :) I have some backlog, so I can't really offer a date to resume, sorry!!No problem.
@Gustavo 'Gus' CarrenoQuoteCan I ask you to either blank the PackageBaseDir on the JSON, or redo the zip file so that it includes the VirtualTreeView V5 folder that then contains the code?Done. Please try again.
QuoteP.S.: I haven't quitted on the new site for the OPM packages. Like I said many times in my disclaimer, my mental health has been messing with me and I'm kinda just now resuming coding :) I have some backlog, so I can't really offer a date to resume, sorry!!No problem.
Hi,I updated the package, thanks for the new version.
hidapi new version v0.4.1 ( https://github.com/dioannidis/HIDAPI.pas ) .
Fix HidApiLibraryHandle from THandle to TLibHandle, reformat target OS IFDEF and add FresBSD .
You can always download the release zip from from https://github.com/dioannidis/HIDAPI.pas/releases/tag/v0.4.1 page.
regards,
GetMem, could you please add the "NiceGrid" package to OPM? It contains a "stringgrid" variant written by someone called Priyatna whose web site is no longer available. See also the discussion in https://forum.lazarus.freepascal.org/index.php/topic,63731.msg483242.html.Done. Thanks!
I am hosting the development version which is available for both Lazarus and Delphi on CCR: https://sourceforge.net/p/lazarus-ccr/svn/HEAD/tree/components/nicegrid/
A zip file, ready for OPM, is available at https://sourceforge.net/projects/lazarus-ccr/files/NiceGrid/nicegrid-v300.zip/download
Since the original author's site is no longer available I'd propose to refer to our wiki for the home page of the package: https://wiki.freepascal.org/NiceGrid
Thanks. But sorry: Could you upload the file again? I had to change it because there was still a bug in the Delphi version (quite to mess to maintain a package for Lazarus and Delphi).No problem. I updated the package again.
Hi GetMem, can you update BGRABitmap to dev-branch? It has updates to work in "lazarus trunk"Done! Thanks.
Thank you.Thanks. But sorry: Could you upload the file again? I had to change it because there was still a bug in the Delphi version (quite to mess to maintain a package for Lazarus and Delphi).No problem. I updated the package again.
Hello GetMem, I am providing a new version of NiceGrid which avoids the crashes in non-windows widgetsets. Editing the grid still is a bit too intricate compared to the Delphi version, but it's better than before: https://sourceforge.net/projects/lazarus-ccr/files/NiceGrid/nicegrid-v301.zip/downloadDone. Thank you!
And I am attaching two more components originally written by Priyatna for Delphi:
- NiceChart: a simple charting component, https://sourceforge.net/projects/lazarus-ccr/files/NiceChart/nicechart-v200.zip/download, wiki documentation at https://wiki.freepascal.org/NiceChart; development repository: https://sourceforge.net/p/lazarus-ccr/svn/HEAD/tree/components/nicechart/
- NideSidebar: a vertical menu-like component, https://sourceforge.net/projects/lazarus-ccr/files/NiceSidebar/nicesidebar-v200.zip/download, wiki documentation at https://wiki.freepascal.org/NiceSideBar; development repository: https://sourceforge.net/p/lazarus-ccr/svn/HEAD/tree/components/nicesidebar/
Hallo GetMem,I updated TIPEdit. Thank you!
I have updated TIPEdit: https://gitlab.com/bobby100/tiplabel
GetMem, could you please update FPSpreadsheet? There is a new release version 1.16 at https://sourceforge.net/projects/lazarus-ccr/files/FPSpreadsheet/fpspreadsheet-1.16.zip/download.Done. Thank you!
Hi,I updated hidapi. Thanks for the new version.
hidapi new version v0.5.0 ( https://github.com/dioannidis/HIDAPI.pas ) .
Changes in this release :
- Add hidapi's ( 0.13.0 ) HID underlying bus types enumeration.
- Add hidapi's ( 0.13.0 ) hid_get_device_info
Breaking changes :
- Add hidapi's ( 0.14.0 ) hid_get_report_descriptor
- Minor fixes.
- HidApiVersion which returns version string renamed correctly to HidApiVersionStr . The HidApiVersion now returns a THidApiVersion record that contains version (maj,min,patch).
You can always download the release zip from from https://github.com/dioannidis/HIDAPI.pas/releases/tag/v0.5.0 page.
regards,
Hi Getmem,I updated BGRABitmap to 11.5.6. Thanks for the new version.
Please update BGRABitmap to last version (11.5.6).
Regards
Hi GetMem. Please update to Ray4Laz.Done. Thanks for the new version!
Since I released the new version !!!
https://github.com/GuvaCode/Ray4Laz/archive/refs/tags/5.0.zip (https://github.com/GuvaCode/Ray4Laz/archive/refs/tags/5.0.zip)
json https://raw.githubusercontent.com/GuvaCode/GuvaCode/main/update_Ray4Laz.json
Oh. it looks like gitignore has cut the files of compiled libraries. fixed it. please re-uploadHi GetMem. Please update to Ray4Laz.Done. Thanks for the new version!
Since I released the new version !!!
https://github.com/GuvaCode/Ray4Laz/archive/refs/tags/5.0.zip (https://github.com/GuvaCode/Ray4Laz/archive/refs/tags/5.0.zip)
json https://raw.githubusercontent.com/GuvaCode/GuvaCode/main/update_Ray4Laz.json
@guvafiles *.a absence in the old archive
I downloaded the new zip, compared with the one uploaded to OPM a few hours ago, they are exactly the same.
Please try again. I updated Ray4Laz in OPM.@guvafiles *.a absence in the old archive
I downloaded the new zip, compared with the one uploaded to OPM a few hours ago, they are exactly the same.
Please try again. I updated Ray4Laz in OPM.Checked. It's fine. Thank you.
According to
https://forum.lazarus.freepascal.org/index.php/topic,65415.msg498398.html#msg498398
KASComp in OPM is too old.
Let's update it from DoubleCommander sources.
EDIT:
or do not. DC's version of KASComp needs more dependencies.
https://forum.lazarus.freepascal.org/index.php/topic,65415.msg498420.html#msg498420
Hi, seems that GetMem is not part of this forum anymore :'(
Hi, seems that GetMem is not part of this forum anymore :'(
Wait, what?!?! Then, who's managing updates to OPM now?
<looks back in the thread history>
Someone named "balazsszekely", it seems. Who's that? They have no profile.
<looks back further>
Wait a minute... past posts that I know were made by GetMem have been renamed to balazsszekely... Are they the same user? Or was the user account swapped? Or is it a glitch in the Matrix?
---
Should we keep posting in this thread for updates to OPM packages?
Indy probably needs a refresh...
GetMem cancelled his forum account for reasons that I don't know. He told me, however, that he will continue to update packages for OPM outside the forum. Update requests should be directed by mail to him at opm@lazarus-ide.org .@wp, Thank you for that update. It's good to know that, at least, he is alive.
If it's forum related then it might require attention.Indeed. But such a prime product may be integrated in the FreePascal or Lazarus repositories.
Isn't it time to bring update requests to an issue tracker (lazarus tracker with proper label?), so we can track them better?
Yes, but "somebody" must write the infrastructure...
Hi dear OPM,
There is a new version of BGRABitmap as a quick fix for the previous release: https://github.com/bgrabitmap/bgrabitmap/releases/tag/v11.5.8
:)
GetMem cancelled his forum account for reasons that I don't know. He told me, however, that he will continue to update packages for OPM outside the forum. Update requests should be directed by mail to him at opm@lazarus-ide.org .
Yes, but "somebody" must write the infrastructure...
Hi GetMem. Please update to Ray4Laz.
GetMem cancelled his forum account for reasons that I don't know. He told me, however, that he will continue to update packages for OPM outside the forum. Update requests should be directed by mail to him at opm@lazarus-ide.org .
Hi GetMem. Please update to Ray4Laz.
Hi Guva, I guess you missed this post (https://forum.lazarus.freepascal.org/index.php/topic,34297.msg498600.html#msg498600) from a couple of weeks ago:GetMem cancelled his forum account for reasons that I don't know. He told me, however, that he will continue to update packages for OPM outside the forum. Update requests should be directed by mail to him at opm@lazarus-ide.org .
Thank you Avra!You're most welcome, but all the hard work has been done by the original author ;)