Skip to content

Release archives incompatible with modern Arduino IDE due to missing root folder #1

@per1234

Description

@per1234

Describe the problem

Per the Arduino Package Index Specification, platform and tool release archives must contain a root folder:

https://arduino.github.io/arduino-cli/latest/package_index_json-specification/#archive-structure

The release script generates archive files that don't contain a root folder.

🐛 Installation of the platforms in modern versions of Arduino IDE and Arduino CLI fails:

Installing PulseRain_RISCV:Reindeer_upload@2.1.0
Failed to install platform: 'PulseRain_RISCV:Reindeer:1.4.2'.
Error: 13 INTERNAL: Cannot install tool PulseRain_RISCV:Reindeer_upload@2.1.0: searching package root dir: files in archive must be placed in a subdirectory

To reproduce

Follow the installation instructions while using Arduino IDE 2.x.

Expected behavior

The releases are specification-compliant and can be installed using modern development tools.

Additional context

The problem is caused by the tar commands in package_release.sh. For example:

cd ./Reindeer_upload;tar zcf ../package/$Reindeer_upload_name .;cd ..

This produces an archive with this structure:

Reindeer_upload_2.1.0.tar.gz
└── reindeer_config.exe

It would be fixed by passing the path to the folder containing the component as the argument to tar instead of cding to the folder and then using . as the argument:

--- a/package_release.sh
+++ b/package_release.sh
@@ -113,7 +113,7 @@ if [ -f "./package/$Reindeer_upload_name" ]
 then
     echo "=====================> $Reindeer_upload_name already exists!"
 else
-    cd ./Reindeer_upload;tar zcf ../package/$Reindeer_upload_name .;cd ..
+    tar zcf ./package/$Reindeer_upload_name ./Reindeer_upload
 fi
 sha256_Reindeer_upload=$(sha256sum ./package/$Reindeer_upload_name | awk '{print $1}')
 size_Reindeer_upload=$(stat -c %s ./package/$Reindeer_upload_name)

This produces an archive with the correct structure:

Reindeer_upload_2.1.0.tar.gz
└── Reindeer_upload/
    └── reindeer_config.exe

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions