Announcement
Nikolay Soloviev · Jan 11, 2021

InterSystems Package Manager ZPM 0.2.10 release

We released a new version of ZPM (Package Manager)

New in ZPM 0.2.10 release:

1) FileCopy

Added some improvements to already existing tag FileCopy

Example of module.xml


<?xml version="1.0" encoding="UTF-8"?>
<Export generator="Cache" version="25">
  <Document name="test-binary.ZPM">
    <Module>
      <Name>test-binary</Name>
      <Version>0.0.1</Version>
      <Packaging>module</Packaging>
      <SourcesRoot>src</SourcesRoot>
      <FileCopy Name="lib" Target="${libdir}my-lib"/> <!-- Copies content of lib folder to target -->
      <FileCopy Name="somefile.jar" Target="${libdir}my-lib"/> <!-- Copies just desired file to target -->
    </Module>
  </Document>
</Export>

Added aliases Target and Dest to attribute InstallDirectory

Supports files as well as directories, no wildcards, just folder content of which should be copied, or particular file

${libdir}, ${bindir} added, installdir/lib and installdir/bin respectively. 

Using bindir in docker environments may cause to security issues during install. Using libdir works in this case, so, recommended way.

 

This should work (ending slash in Target is important)

<FileCopy Name="dsw/irisapp.json" Target="${cspdir}dsw/configs/"/>

And this should be the same

<FileCopy Name="dsw/irisapp.json" Target="${cspdir}dsw/configs/irisapp.json"/>

If the Name ends with a slash, it will copy it as a folder. During uninstall it will delete Target folder

<FileCopy Name="dsw/" Target="${cspdir}dsw/configs/"/>

And added support for packaging and uninstalling module. When the module uninstalled it correctly deletes previously copied files.

 

2) Invoke improvements

Don't need wrapper tag anymore

Added a few more attributes:

CheckStatus (Default: false), expects that invoked method returns %Status, and use it to check the status of installation.

Phase, (Default: Configure), the phase during which it should be executed

When, (Default: After), values: Before and After. To execute before or after the main execution for the phase

added support for variables, added ${verbose} variable

<Invoke Class="%EnsembleMgr" Method="EnableNamespace" Phase="Compile" When="Before" CheckStatus="true">
  <Arg>${namespace}</Arg>
  <Arg>${verbose}</Arg>
</Invoke>

 

00
1 0 2 40

Replies

Docker images with IRIS 2020.4 and 2020.3 and ZPM 0.2.10 are now available.

Tags:

intersystemsdc/iris-community:2020.4.0.524.0-zpm
intersystemsdc/iris-community:2020.3.0.221.0-zpm
intersystemsdc/iris-ml-community:2020.3.0.302.0-zpm
intersystemsdc/irishealth-community:2020.4.0.524.0-zpm
intersystemsdc/irishealth-community:2020.3.0.221.0-zpm

More info in documentation https://github.com/intersystems-community/zpm/wiki/04.-Docker-Images

And to launch the image do:

docker run --name my-iris -d --publish 9091:51773 --publish 9092:52773 intersystemsdc/iris-community:2020.4.0.524.0-zpm
docker run --name my-iris -d --publish 9091:51773 --publish 9092:52773 intersystemsdc/iris-community:2020.3.0.221.0-zpm
docker run --name my-iris -d --publish 9091:51773 --publish 9092:52773 intersystemsdc/iris-ml-community:2020.3.0.302.0-zpm
docker run --name my-iris -d --publish 9091:51773 --publish 9092:52773 intersystemsdc/irishealth-community:2020.4.0.524.0-zpm
docker run --name my-iris -d --publish 9091:51773 --publish 9092:52773 intersystemsdc/irishealth-community:2020.3.0.221.0-zpm