LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Labview PLL and Dependencies

Hello,

 

I am trying to figure out how to build up a CI environment with Labview.

 

Right now I am using PLLs (lvlibp) to componentize my projects. The projects have dependencies to each other. I am struggeling at the point how my built PLLs get into the other consuming projects.

I am reading a lot about NIPM and VIPM, but both install the packages in some system folders. I want to have my dependencies included in the project to have them "self contained" and without references to some folders outside of my project folder.

 

Is there a way to specify the installation directory of the packages? Or how could it be done?

 

Best regards,

Jörg

0 Kudos
Message 1 of 6
(2,372 Views)

It should be as simple as going to your consumer project and right-click "add file" and select the PPL. It will then show up in your project window and you can drop VIs from there. There is a lot of heavy baggage that comes with PPLs, so make sure that the benefits are worth the extra hassle.

0 Kudos
Message 2 of 6
(2,328 Views)

And how will this "right-click - add file" mechanism work in an Continuous Integration environment?

I would have to make sure that the referenced files are in a specific folder. But how do they come from one build job to another?

In other environments I used package managers and they had project specific configuration files. But all the Labview Package Mangagers aren't working on project basis, they work on system. That's my problem...

0 Kudos
Message 3 of 6
(2,303 Views)

I'll just give you an idea of what we do to see if that helps. You are right that PPL's are not project specific (although they can be lego blocks of a project as you split things up).

All my common code is built into PPL's, and then those PPL's are included in PKG's. So every single project has a build spec that looks like the following. This is the release code, tested and verified to work so that anything that calls into these vi's will get the expected behavior. (It also gives us the ability to keep modifying the source code without changing the released code because we just don't build a PPL until we are ready).

image.png

The PPL's are all built to a specific location (for us that's "C:\Program Files (x86)\CompanyName\CommonCode\"). Then all the packages do is take the PPL, and install it to the exact same location it was already built to. That way on every computer that works with the PPL it is in the same location because they only need to install the latest package.

In any project that needs to use the PPL we include it in the project by just dragging it from the common folder to the project. Below is an example of that, this project has like 20 PPL's it's built upon (Actor Framework program as you can see, all the PPL's are different actors).

image.png

So you can just expand each PPL, grab the specific vi's you need and put them in your block diagram.

 

One important thing we do is check the box in the PPL build spec for "Exclude dependent packed libraries" that way we aren't building the PPL's everytime they are used. They are only built by their specific project, and then used from that point on.

 

EDIT: I wanted to add one thing, there is a tool made my MGI called GPM that allows you to select where a package installs to. You can read about it here https://gpackage.io/ They seem to be going more for what you want.

0 Kudos
Message 4 of 6
(2,287 Views)

Your workflow just works like I don't want it to work (sorry Smiley Wink):you have all dependencies on the system dependent on one central folder. That feels like going in "dependency hell" because of the projects not beeing self contained (and not fully under version control).

The last paragraph with the G Package manager is indeed the direction I am heading to. In the past I have worked with Nuget a lot. From the very sparse documentation of G Package Manager I can see that it looks like an implementation of such a package manager just written with LabView (not with special functions for LabView). So honestly I would go into the direction of a more popular, well documented package manager (even if it's mainly designed for another language).

0 Kudos
Message 5 of 6
(2,272 Views)

No worries, it's not for everyone. We've just found it's what works best for us so I'm not offended ha.

 

Hopefully then you can use Nuget to achieve what you want!

0 Kudos
Message 6 of 6
(2,263 Views)