June 21, 2016
A new feature of RAD Studio 10.1 Berlin that has gone mostly unnoticed is the ability to have project dependencies to GetIt packages. This makes is much easier to share projects that depend on third party libraries.
A new feature of RAD Studio 10.1 Berlin that has gone mostly unnoticed is the ability to have project dependencies to GetIt packages. This makes is much easier to share projects that depend on third party libraries.
Since its introduction last year, the GetIt Package Manager has been continuously updated and extended with more capabilities. Since the beginning, the GetIt architecture allowed for dependencies: if library A depends on library B, when installing A you'll be prompted to install the dependent library B first. Now in Delphi and C++Builder 10.1 Berlin the mechanism has been extended so that a specific project can declare which libraries it depends on (this is not an automatic mechanism). Before looking to the solution, let me recap the issue at stake. Suppose that another developer send you a Delphi project, in my scenario one that uses the VirtualTreeView component. You open it, and if you don't have the package installed, you'll end up with an error like:
Now suppose that before sending me the project, the developer has opened the new GetIt Dependencies tab of the Project Options and set the proper dependencies, as below:
Now as I receive the project and open it, if I don't have the package installed, I'll be prompted to download it:
In theory, this will automatically trigger the download of the package. In practice, this triggers an error and and up making the dependencies unstable. So my recommendation is to select No, let the project open, eventually click Cancel if you receive an error that a component is not found, close all forms (but not the project), open the Project Options and install all missing packages, as below:
Now open your project forms, compile your projects and you should be up and running.
As you can see from reading above, there are still some hiccups in the process, but this is a very important new feature for the GetIt package manager, and I felt it was worth sharing despite the pending issues. If you go for a partially manual process, using the GetIt Dependencies page of the Project Options, everything should work fine.
posted by
marcocantu @ 8:50AM | 14 Comments
[0 Pending]
14 Comments
GetIt Packages Project Dependencies
Marco,
I had a look at this the other day in Berlin but
didn't like the fact I had no control over where the
package would be downloaded and installed (therefore
potentially being missed from backups). Further, it
didn't seem to me that you could get incremental
changes from the library source (GitHub, etc). I
therefore chose to use the GitHub desktop application
to download various libraries and manage the changes
this way.
Could the above two items be considered for future
versions?
regards
Dave.
Comment by David Hoyle
[http://www.davidghoyle.co.uk/WordPress/]
on June 21, 12:06
GetIt Packages Project Dependencies
before I would ever click yes, I would want an exhaustive list of those
dependencies first.
Comment by C Johnson on June 21, 13:11
GetIt Packages Project Dependencies
Thanks for the info Marco. I have also noticed
another problem with the GetIt package manager. It
tries to install Seattle packages for some libs
(230.bpl) instead of Berlin libs (240.bpl). Example:
Abbrevia (and others). I am assuming this is because
they are third party libs and have not been updated.
If that is the case wouldn't it be better to exclude
these from the Git package manager rather than having
them fail to install into the IDE?
Comment by James Parks on June 21, 13:18
GetIt Packages Project Dependencies
Great stuff, if you can convince third package
providers to use GetIt. Devexpress, rem objects,
even TMS don't use it. I believe you must add some
kind of validation services to help them to validate if
have or not access to full versions.
Comment by Donald Dhimoda on June 21, 13:49
GetIt Packages Project Dependencies
Some answers...
Dave, versioning of libraries / dependencies is in the plans. Clearly
this doesn't replace GitHub if you want to have full control
C Johnson, you press No and get to see the list of the
dependencies, as the blog post suggests doing
James, updating those libraries is under way -- I know we'd had a
huge delay, hoping to catch up
Donald, we are engaging with third party vendors right now...
Comment by Marco Cantu
[http://www.marcocantu.com]
on June 21, 15:12
GetIt Packages Project Dependencies
Getit is still not really usable as a package manager, it's missing
too many basic package manager features
Package dependency versioning - I want to control which version
of a library projects use, not all will be the same
Command line tool, I need to be able to restore packages during
the build process.
Custom package feeds - the package feed is tightly under
embarcadero's control, the submission process is not very friendly.
I want to point to a network share folder so I can build when the
net is down, or host a custom feed server with securable feeds.
Ideally there should be a public feed server like nuget.
Comment by Vincent Parrett
[http://www.finalbuilder.com]
on June 22, 07:35
GetIt Packages Project Dependencies
Vincent,
Versioning is weak, I agree. Command line tools we are working on.
A public feed has advantages and disadvantages, as the JavaScript
public package management debacles have demonstrated. Pulling
directly form a repository, with no vetting, exposes to more hiccups
and security issues -- so I think we need a balance. A more open
process and a minimal control.
Comment by Marco Cantu
[http://www.marcocantu.com]
on June 22, 07:39
GetIt Packages Project Dependencies
Agree public repositories can have issues, but a private black box
repo is not much better.
Still, being able to store packages on a network share and use that
as a feed would be a major improvement... I may not want to
publish my packages to the world but still want to use a package
manager to improve my build process.
The main problem I see with Getit is it's being developed in private
with little to no consultation with the people who will ultimately
use it, your customers and partners.
Comment by Vincent Parrett
[https://www.finalbuilder.com]
on June 22, 23:34
GetIt Packages Project Dependencies
Vincent, the idea of having a local mirror / local download /
network share is a nice idea, and also something we are interested
in doing for the installer -- use the GetIt-based installer without
Internet connection. There are piracy issues to consider in the mix,
though.
> developed in private with little to no consultation with the people
who will ultimately use it, your customers and partners
Given we had a partner meeting recently, we are having an MVP
discussion on GetIt and more involvement coming I think this is an
unfair criticism.
Comment by Marco Cantu
[http://www.marcocantu.com]
on June 23, 07:49
GetIt Packages Project Dependencies
What partner meeting? I guess I didn't get an invite.
Comment by Vincent Parrett
[https://www.finalbuilder.com]
on June 27, 00:49
GetIt Packages Project Dependencies
Libraries have to be in version control as well -
hence, the getit packages should be installed in a
directory of our choosing so we can ensure the library
can be added to version control as well.
An extra editbox at the top of that tab, with a button
to choose the path would make up a lot.
Comment by Thomas on June 28, 07:01
GetIt Packages Project Dependencies
Though the current incarnation has many flaws,. i do
applaud the attempt to improve the way packages and
dependencies are handled.
It's a nightmare at times to have the message pop up
"X not found, ignore the error and continue" is a real
pain,. and even being told the name of the package you
should get - and perhaps where to find it, would
already be a big improvement.
Comment by Thomas on June 28, 10:29
GetIt Packages Project Dependencies
Marco,
It is now August 10 and this still has not been fixed.
I still have Seattle installed until I have Berlin fully
setup. After using GetIt in Berlin, the Abbrevia
BPLs will not load into Seattle IDE. It is really
annoying. Please update GetIt.
Ric Hupalo
GetIt Packages Project Dependencies
Thanks for the info Marco. I have also noticed
another problem with the GetIt package manager. It
tries to install Seattle packages for some libs
(230.bpl) instead of Berlin libs (240.bpl). Example:
Abbrevia (and others). I am assuming this is because
they are third party libs and have not been updated.
If that is the case wouldn't it be better to exclude
these from the Git package manager rather than
having
them fail to install into the IDE?
Comment by James Parks on June 21, 13:18
Comment by on August 10, 15:10
GetIt Packages Project Dependencies
Integration with nuget would also be good as existing resources can
be consumed from existing repositories like the jfrog artifactory or
the open source sonatype nexus servers - making integration easier
with existing projects from other developers/teams that are not
necessarily delphi/c++builder based. nuget is not just .net anymore,
but also supporting native binaries via powershell extensions such as
CoApp (http://coapp.org/).
Comment by Conrad Vermeulen
[]
on March 7, 22:07
Post Your Comment
Click
here for posting
your feedback to this blog.
There are currently 0 pending (unapproved) messages.