NI Package Management Idea Exchange

cancel
Showing results for 
Search instead for 
Did you mean: 
Eric.M

Automatically install NI dependencies from NI Package Manager

Status: Looking for Maintainer(s)

Hi everyone,

 

I'm happy to announce that this feature can be found in the newest NIPM release (20.0). If a package depends on a package that is hosted on ni.com (e.g. LabVIEW NXG Run-Time), then NIPM will find that package at installation, register the feed that contains that package so that NIPM can find it, and then install it.

 

NOTE: This is not supported when installing through the NIPM CLI (nipkg.exe). This only works when installed via the UI, which can be invoked in many ways - e.g. double-clicking the .nipkg directly, from a package installer, running the NIPM UI in Command Mode, from the Packages tab after registering the feed containing the top-level package.

 

Enjoy!

 

Aaron Peña

Productization Lead, Package and License Management

National Instruments

 

With the NI Package Manager we can now create packages for a variety of purposes (libraries, tools, APIs, stand-alone applications, plugins...).

 

However, there's currently a limitation with the dependencies. For example, if you want to create a .nipkg file that relies on the LabVIEW Runtime Engine that successfully deploys to any PC, you have 2 choices:

- manually install the LV RTE from NIPM on the deployment machine

- add the LV RTE (and your app) to a custom feed, and manually add that feed to NIPM on the deployment machine.

 

In any case, there's a manual operation for a user. This is because NIPM does not automatically search for NI feeds when installing a custom package (it only looks into already installed feeds).

 

There should be (at least) an option like this in NIPM (ideally it should be the default behavior)!

NIPM Options.png

 

This way, NIPM would behave pretty much like any other package manager (think Linux or mobile platforms)...

 

Useful links:

https://forums.ni.com/t5/SystemLink/Use-the-NI-feeds-to-find-package-dependencies/td-p/3811361

https://forums.ni.com/t5/NI-Package-Management/NI-Package-Management-Portal-READ-THIS-FIRST/ta-p/380...

 

--Eric

Eric M. - Senior Software Engineer
Certified LabVIEW Architect - Certified LabVIEW Embedded Systems Developer - Certified LabWindows™/CVI Developer
Neosoft Technologies inc.

15 Comments
metux
Member

Just properly use the operating system's native package manager (eg, apt, yum, ...)

Properly package everything for the distro, decleare dependencies, etc - and it will do it completely automatically.

 

That's how things are working for over 20 years in GNU/Linux world.

Linux Embedded / Kernel Hacker / BSP / Driver development / Systems engineering
Eric.M
Active Participant

Yeah sure, if there was a global, decent, usable package manager in Windows to use for whoever is not a developer... You know, with a clear and intuitive UI so the user does not get drowned in shell commands (think apt/yum/rpm/opkg/choco...) 😄

Also NIPM could specifically address software packaging for a whole market/industry if it's done correctly so I'll go ahead and give it a chance - it's still a young product.

 

Edit: I haven't looked at chocolatey for a while and it seems like it got in a pretty good shape! Worth taking a look 🙂

Eric M. - Senior Software Engineer
Certified LabVIEW Architect - Certified LabVIEW Embedded Systems Developer - Certified LabWindows™/CVI Developer
Neosoft Technologies inc.

metux
Member

There are existing package managers for Windows: apt-cyg, sage, choco, pacman, etc. (I'd pick one that's supporting .deb/apt format natively)

And yes: there also exists GUIs for them.

 

It also shouldn't be the big deal to port the complete apt toolchain to win32 (eg. via mingw32/msys). At least less than completely reinventing the wheel. It's been many years since I last touched that toy platform, but I wouldn't need more than 6 month (yes: me alone).

 

I don't really see any value for reinventing the wheel over and over again, instead of just using standard technology.

Linux Embedded / Kernel Hacker / BSP / Driver development / Systems engineering
MichaelAivaliotis
Active Participant

I think this request should be generalized. I realize possibly that NI feeds are special and would contain the drivers and tools that we often need. However, I think the fundamental design issue is that NIPM only looks for dependancies within the feed where the parent package came from? Correct me if I'm wrong.

 

So perhaps a modification of this request would be to allow dependancies to be searched from across multiple feeds. But how this would be controlled by the end user, i'm not sure. Perhaps a list of all the feeds with checkboxes.



Michael Aivaliotis
VI Shots LLC
Eric.M
Active Participant

A package can search for dependencies in other registered feeds in NIPM. However, in a classic case described above, where you want your custom package to also install NI drivers/utilities on a PC that does not have these installed (and their feeds not registered), it just fails.

Eric M. - Senior Software Engineer
Certified LabVIEW Architect - Certified LabVIEW Embedded Systems Developer - Certified LabWindows™/CVI Developer
Neosoft Technologies inc.

NikitaProrekhin
Member

+1 for this idea.

 

As a workaround:

1. During the build generate the list of required URI feeds (except those that are included by default in NIPM), required for resolving dependencies for the software from NI - like list-source-feeds command

2. (Optionally) Have a web-page (with a search input) to search for packages from NI. Provide user-friendly (or developer-friendly) snippets to register to those feeds:

 

"C:\Program Files\National Instruments\NI Package Manager\nipkg.exe"  feed-add -s -n="ni-runtime-engine-labview2018-feed" https://ni.com/nipm/feeds/ni-runtime-engine-labview2018-feed && "C:\Program Files\National Instruments\NI Package Manager\nipkg.exe" update "ni-runtime-engine-labview2018-feed"

 

Nikita Prorekhin
CLA
APena
Member
Status changed to: Development Started
 
StephenKM
Member

I would also like an option to add a list of dependent feeds before a package gets installed. We could do this now if there was someway to run a batch file before a package checks for dependencies. Clearly NI has this functionality as that is what happens when you install a new product in NIPM. This would let us get around the NI feed issue but also allow us to use other internal dependent feeds.

APena
Member
Status changed to: In Development
 
CL_eisenwr
Active Participant

I just noticed this today 😁

__________________________________
Bill Eisenhower
Certified LabVIEW & TestStand Developer