arduino-cli: Add core packages support

master
Rui-Xiang Guo 2024-03-14 19:13:54 +08:00
parent 621655be07
commit 84455f459d
5 changed files with 56 additions and 18 deletions

View File

@ -13,7 +13,7 @@ LICENSE= gnu-gpl-v3
.include "../../mk/bsd.prefs.mk"
.if ${OPSYS} == "NetBSD"
DEPENDS+= arduino-ctags>=5.8:../../wip/arduino-ctags
DEPENDS+= arduino-ctags>=5.8.arduino11:../../wip/arduino-ctags
DEPENDS+= arduino-dfu-discovery>=0.1.2:../../wip/arduino-dfu-discovery
DEPENDS+= arduino-mdns-discovery>=1.0.9:../../wip/arduino-mdns-discovery
DEPENDS+= arduino-serial-discovery>=1.4.0:../../wip/arduino-serial-discovery
@ -21,7 +21,8 @@ DEPENDS+= arduino-serial-monitor>=0.13.0:../../wip/arduino-serial-monitor
.endif
pre-build:
${SED} -i 's|/usr/pkg|${PREFIX}|g' ${WRKSRC}/commands/instances.go
${SED} -i 's|/usr/pkg|${LOCALBASE}|g' ${WRKSRC}/arduino/cores/packagemanager/install_uninstall.go
${SED} -i 's|/usr/pkg|${LOCALBASE}|g' ${WRKSRC}/commands/instances.go
.include "go-modules.mk"
.include "../../lang/go/go-module.mk"

View File

@ -1 +0,0 @@
functional testing

View File

@ -2121,7 +2121,8 @@ Size (rsc.io_quote_v3_@v_v3.1.0.mod) = 55 bytes
BLAKE2s (rsc.io_sampler_@v_v1.3.0.mod) = 6d4d3ba7c381b9a923679a73562a7cf3d6b7d49f94f585f274c8955bb1b932b4
SHA512 (rsc.io_sampler_@v_v1.3.0.mod) = 2137507eb25fbae419605e0cd6bca4cfa584110eebc276cd759a4dcb6f97e52928e5b2d9b276e76bcabcec3bbfc2c42f97fa29f54695d27fb00f9423e1638863
Size (rsc.io_sampler_@v_v1.3.0.mod) = 88 bytes
SHA1 (patch-commands_instances.go) = 622524ad142f34007dce9bd5edc7a43e19f7a3f5
SHA1 (patch-arduino_cores_packagemanager_install__uninstall.go) = 541341b556a49832379b3718b171b6a8e741ae3b
SHA1 (patch-commands_instances.go) = e6f9c0315a0d63c458d577aa71a0df6275349984
SHA1 (patch-configuration_configuration.go) = fb7dd8e323668336f7c26b20b9252c4df5e73e68
SHA1 (patch-executils_executils__netbsd.go) = 95ab98ab2c10fb4140a7477871331821e9e529ab
SHA1 (patch-go.mod) = 00c02d207a282ac5253d8ccd98f5f88458e9e0f3

View File

@ -0,0 +1,43 @@
$NetBSD$
--- arduino/cores/packagemanager/install_uninstall.go.orig 2024-03-09 06:51:20.561238937 +0000
+++ arduino/cores/packagemanager/install_uninstall.go
@@ -19,11 +19,13 @@ import (
"bytes"
"encoding/json"
"fmt"
+ "path/filepath"
"runtime"
"github.com/arduino/arduino-cli/arduino"
"github.com/arduino/arduino-cli/arduino/cores"
"github.com/arduino/arduino-cli/arduino/cores/packageindex"
+ "github.com/arduino/arduino-cli/configuration"
"github.com/arduino/arduino-cli/executils"
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
"github.com/arduino/go-paths-helper"
@@ -79,6 +81,24 @@ func (pme *Explorer) DownloadAndInstallP
skipPostInstall bool, skipPreUninstall bool) error {
log := pme.log.WithField("platform", platformRelease)
+ // Search for third-party packages
+ if runtime.GOOS == "netbsd" {
+ prefixDir := paths.New("/usr/pkg")
+ platformDir := filepath.Join("packages", platformRelease.Platform.Package.Name, "hardware", platformRelease.Platform.Name, platformRelease.Version.String())
+ packageDir := prefixDir.Join("arduino15", platformDir)
+ _, err := packageDir.IsDirCheck()
+ if err != nil {
+ return fmt.Errorf("%w", err)
+ }
+
+ dataDir := configuration.Settings.GetString("directories.Data")
+ destDir := paths.New(filepath.Join(dataDir, platformDir))
+ if err := packageDir.CopyDirTo(destDir); err != nil {
+ return fmt.Errorf("%w", err)
+ }
+ return nil
+ }
+
// Prerequisite checks before install
toolsToInstall := []*cores.ToolRelease{}
for _, tool := range requiredTools {

View File

@ -1,38 +1,32 @@
$NetBSD$
--- commands/instances.go.orig 2024-02-13 11:40:35.243625117 +0000
--- commands/instances.go.orig 2024-02-19 13:15:51.000000000 +0000
+++ commands/instances.go
@@ -19,7 +19,9 @@ import (
"context"
@@ -20,6 +20,7 @@ import (
"fmt"
"net/url"
+ "os"
"path/filepath"
+ "runtime"
"strings"
"github.com/arduino/arduino-cli/arduino"
@@ -48,6 +50,28 @@ var tr = i18n.Tr
@@ -48,6 +49,24 @@ var tr = i18n.Tr
func installTool(pm *packagemanager.PackageManager, tool *cores.ToolRelease, downloadCB rpc.DownloadProgressCB, taskCB rpc.TaskProgressCB) error {
pme, release := pm.NewExplorer()
defer release()
+ // Search for third-party packages
+ if runtime.GOOS == "netbsd" {
+ prefixDir := paths.New("/usr/pkg")
+ subDir := filepath.Join("packages", tool.Tool.Package.Name, "tools", tool.Tool.Name)
+ packageDir := prefixDir.Join("arduino15", subDir)
+ toolDir := filepath.Join("packages", tool.Tool.Package.Name, "tools", tool.Tool.Name, tool.Version.String())
+ packageDir := prefixDir.Join("arduino15", toolDir)
+ _, err := packageDir.IsDirCheck()
+ if err != nil {
+ return fmt.Errorf("%w", err)
+ }
+
+ userHomeDir, err := os.UserHomeDir()
+ if err != nil {
+ return fmt.Errorf("%w", err)
+ }
+
+ userDataDir := paths.New(filepath.Join(userHomeDir, ".arduino15", subDir))
+ if err := packageDir.CopyDirTo(userDataDir); err != nil {
+ dataDir := configuration.Settings.GetString("directories.Data")
+ destDir := paths.New(filepath.Join(dataDir, toolDir))
+ if err := packageDir.CopyDirTo(destDir); err != nil {
+ return fmt.Errorf("%w", err)
+ }
+ return nil