» it.SDK vvvv
This site relies heavily on Javascript. You should enable it if you want the full experience. Learn more.

it.SDK vvvv

English

The original english version of this page is newer and may contain information this translation does not have! Click here to view the english version.

La soluzione per contribuire facilmente all'Addonpack si chiama Software Development Kit di vvvv (vvvv SDK). Include tutto il codice sorgente open source di vvvv ed il codice di tutti gli addon. Si tratta di un repository git: consente perciò di essere convenientemente aggiornati sugli ultimi passi dello sviluppo del software; inoltre il build dei vostri addon avviene sempre in relazione all'ultima alpha build.

Se volete solo scorrere un po' il codice del SDK, potrete farlo nella pagina GitHub di vvvv.
Ci sono tre ragioni per cui potreste seguire le istruzioni che seguono:

  • volete migliorare helppatch\moduli\effetti\freeframe\plugin
  • volete contribuire con i vostri addon all'Addonpack
  • siete h4kc3r
Tenete presente che per il semplice sviluppo di dynamic plugins, effetti e moduli non avrete bisogno della documentazione che segue.

Installare Git

Esistono innumerevoli modi di lavorare con i repository git con Windows. Per mantenere semplice questa guida, raccomandiamo l'uso della GUI Git Extensions, che ci ha reso un gran servizio. Mentre installate Git Extensions, assicuratevi di barrare le rispettive caselle ed installare anche:

  • MsysGit
  • KDiff3

Il primo è il motore attuale di Git (per il quale Git Extension è solo una GUI); il secondo è un tool per confrontare file quando ci sono conflitti di fusione, merge-conflicts.

Quando si esegue Git Extensions per la prima volta, dovrete inserire il nome e l'indirizzo email che verrà usato per i commit: seguite quindi le istruzioni che vi verranno proposte.

Se ad un certo punto avete bisogno o volete sapere qualcosa in più su come lavorare con Git, il modo migliore è sul sito ufficiale di Git, con la sua doumentazione ed il materiale di riferimento.

A questo punto installate Git Credential Winstore, che chiederà le vostre credenziali su GitHub, quando vorrete eseguire un push commit, cosa che ad un certo punto vorrete fare (questo sistema è più semplice da gestire di quello delle chiavi SSH, se ne avete sentito parlare).

Nel malaugurato caso che Git Credential Winstore non si installi, è probabile che ci siano problemi con la variabile PATH (almeno con Win7 x64).
Aggiungete quindi questa stringa:

  C:\Program Files (x86)\Git\bin\;

posto che sia il percorso nel quale si trova l'eseguibile git.exe. In caso contrario inserite il percorso nel quale si trova git.exe nel vostro pc.
Assicuratevi che:

  1. la stringa esistente e quella che inserite siano separate da un punto e virgola, " ; "
  2. che al termine della stringa che inserite ci sia un backslash, " \ ", e subito dopo anche un punto e virgola, " ; ", come nell'esempio qui sopra

Biforcare, fork, il SDK su GitHub

Il repository Git del SDK è ospitato suhttp://github.com (che è solo uno dei molti repository Git che ospitano servizi). Per poter contribuire a quel repository, dovrete effettuare una biforcazione, fork. Ecco come:

Clonate il fork nel disco locale

Ora su GitHub avete la vostra personale versione "biforcata" del repository Git del SDK, ed è su questa versione che lavorerete principalmente. Clonate questo repository nel vostro disco locale usando Git Extensions così:

Ci vorrà un po', dato che ora viene scaricata localmente, clonata, una copia di tutti i file del repository indicato.

La struttura del repository

Una volta terminato il processo di clonazione, il repository dovrebbe avere la seguente struttura:

 \common
 \Hoster
 \scripts
 \tools
 \vvvv45

Per il momento non preoccupatevi di \common \Hoster e \scripts e muovetevi dentro la directory \vvvv45. Qui trovate all'incirca la stessa struttura che ha vvvv quando lo scaricate come utenti normali (eccezion fatta per \src e \tests).

 \addonpack
 \girlpower
 \lib
 \licenses
 \src
 \tests

Spostatevi dentro la directory \addonpack, che è quella nella quale lavorerete. Contiene 4 cartelle:

 \girlpower
 \lib
 \licenses
 \src

La cartella \src contiene addon che devono essere compilati prima di poter essere usati (in forma di plugin ad esempio), mentre la cartella \lib contiene addon, come moduli ed effetti, già pronti all'uso.

Così, a seconda del tipo di addon su cui state lavorando, inserite i vostri nodi nelle rispettive sottocartelle:

 \src\nodes\plugins 
 \lib\nodes\effects
 \lib\nodes\modules

Effettuare il Build del Core e dell'Addonpack

Prima di effettuare il build, dovrete scaricare nella directory \vvvv45 un eseguibile vvvv.exe che collimi con il materiale che avete.
Il primo passo è quello di installare PowerShell 3.0 (installato di default su Windows 8).

Per chi fosse interessato, la stringa $PSVersionTable consente di conoscere la versione di PowerShell

Ora lanciate Git Extensions, cliccate (nella versione 2.47.3) su Tools -> Git bash (Ctrl + G)
Nel bash spostatevi nella directory di vvvv SDK:

 cd /c/dev/vvvv-sdk

quindi digitate

 scripts/fetch-binaries x86

A questo punto avrete bisogno di SharpDevelop 4 (SD4) o di Visual Studio 2012 (VS2012); installate inoltre Windows 8.1 SDK.

Prima di lanciare vvvv.exe dalla directory \vvvv45 (l'ultima alpha build disponibile tra le closed sources di vvvv), effettuerete il build delle parti open source, incluso l'intero Addonpack, così da avere tutti i plugin disponibili.

L'Addonpack è suddiviso in due soluzioni:

  • \vvvv45\addonpack\src\Addonpack.sln
  • \vvvv45\addonpack\src\AddonpackCPP.sln

la prima delle quali contiene solo plugin gestiti, managed, è la parte più ampia dell'Addonpack, e si compilerà probabilmente senza problemi.

La seconda contiene invece un misto di plugin managed/unmanaged che possono essere costruiti solo con una macchina con Windows 7 con installato Windows SDK 7.1.

Usare SharpDevelop 4

  • aprite Addonpack.sln
  • assicuratevi che: Build -> Set Platform sia impostato su x86
  • effettuate il build (F8)

Usare Visual Studio 2012

  • aprite Addonpack.sln
  • assicuratevi che: Build -> Configuration Manager -> Active Build Platform sia impostato su x86
  • effettuate il build (F7)

Questa operazione potrebbe richiedere un po' di tempo, e dovrebbe restituire il messaggio "Build Successfull. 0 Errors", nel qual caso potrete chiudere la soluzione. Se l'operazione fallisce, contattateci su irc?.

Integrate i vostri plugin nell'Addonpack.sln

Ora siete pronti a lavorare sul vostro codice. Aprite quindi Addonpack.sln e aggiungete il vostro progetto. Per poter costruire il vostro progetto all'interno di quella soluzione, c'è un passaggio da eseguire manualmente:

  • aprite il vostro file progetto con un editor di testo
  • inserite questa stringa:

<Import Project="..\..\Default.Plugin.Project.settings" />

  • rimuovete tutti questi gruppi, conditional property groups:

<PropertyGroup Condition="...">...</PropertyGroup>

Potete anche sbirciare nel file progetto di un altro plugin nell'Addonpack per avere un'idea di come dovrebbe essere il vostro.

Dipendenze Managed

Se il vostro progetto ha dipendenze da .dll di terze parti, inseritele in una directory chiamata

 \dependencies

nella directory del vostro progetto, ed impostate i riferimenti rispetto a quella posizione.

Se il vostro progetto dipende da assembly piattaforma-dipendenti inseritele in

 \dependencies\x86
 \dependencies\x64

aprite il file progetto con un editor di testo e scrivete qualcosa come:

  <Reference Include="AssemblyName">
    <HintPath>dependencies\$(Platform)\AssemblyName.dll</HintPath>
  </Reference>

Dipendenze Unmanaged

Se il vostro progetto contiene riferimenti a .dll unmanaged, potete inserirle localmente nella directory

 \dependencies\PLATFORM 

ed invece di aggiungerle come riferimento al progetto (cosa che non è possibile), seguite questa procedura:

  • abilitate "Show All Files", mostra tutti i file, nel solution explorer
  • click destro sulla cartella delle dipendenze appena apparsa, e scegliete l'opzione "Include in project", Includi nel progetto
  • selezionate tutte le dipendenze native, click destro e selezionate Properties, Proprietà
  • nelle proprietà impostate Copy to ouptut directory, Copia nella directory di output, su Copy if newer, Copia se più recente.

Questo procedimento è necessario solo per il collegamento di questi file .dll nativi, dato che per i riferimenti ordinari Local copy = true è il valore di default in ogni caso.
Quando compilate il vostro progetto, noterete che queste dipendenze native verranno copiate nella directory di output includendo il loro percorso relativo. Per fare sì che siano trovate in runtime, dobbiamo aggiungere questo percorso relativo nella variabile d'ambiente PATH una volta che il plugin viene caricato. Aggiungete quindi uno static constructor al vostro plugin ed inserite queste stringhe:

public class MyPlugin ...
{
  // Static constructor
  static MyPlugin
  {
    var platform = IntPtr.Size == 4 ? "x86" : "x64";
    var pathToThisAssembly = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
    var pathToBinFolder = Path.Combine(pathToThisAssembly, "dependencies", platform);
    var envPath = Environment.GetEnvironmentVariable("PATH");
    envPath = string.Format("{0};{1}", envPath, pathToBinFolder);
    Environment.SetEnvironmentVariable("PATH", envPath);
  }
}

Licenza

Inserite un file chiamato

 license-MYPLUG.txt 

nella directory del plugin. Da lì sarà collezionato automaticamente ed inserito nella directory comune \addonpack\licenses in seguito al build.

Helppatch

Non dimenticate di fornire anche una helppatch per il plugin. Inserite le helppatch nella directory

 \addonpack\lib\nodes\plugins

Sì, qui c'è un po' di confusione. Parliamone su irc?.

Aggiornare il clone del SDK

Il comando git pull viene usato per collezionare, fetch (e unire, merge) da un repository remoto. Di norma, quando si esegue il comando pull nel proprio repository, si aggiorna il codice locale dal codice remoto. Per poter ottenere i bit più freschi dal SDK di vvvv, dovete eseguire pull dal repository originale.

Dovete così aggiungere il repository originale come un remoto extra al vostro repository. In Git Extensions aprite il repository locale, e dal menu (nella versione 2.47.3) scegliete:

 Repository -> Remote repositories...

cliccate su New, inserite il nome "upstream" e l'url:

Ora potrete eseguire il comando pull dal remoto

  • origin: il repository remoto della vostra biforcazione su GitHub
  • upstream: il repository remoto del SDK di vvvv ufficiale

Eseguendo pull da upstream otterete gli ultimi cambiamenti al SDK di vvvv ed il corrispondente vvvv.exe dell'alpha build. Assicuratevi, ogni volta che aggiornate il repository locale, di ricostruire la soluzione Addonpack.sln per fare sì che il file vvvv.exe che avete ottenuto sia compatibile con le ultime modifiche del codice.

In questo modo potete aggiungere ulteriori remoti, ad esempio quelli di altri utenti. In questo modo potrete testare i cambiamenti che quelle persone hanno fatto nei loro repository prima che siano incorporati nelle risorse ufficiali.

Contribuite con il vostro materiale al SDK

Avete aggiunto un progetto all'Addonpack e volete che sia distribuito con l'Addonpack ufficiale? Inviateci una richiesta di pull, facendolo nei confronti del ramo di sviluppo di vvvv-SDK.

vvvv segue questo modello di ramificazione.

Tenete presente che potete inviare richieste multiple creando localmente rami differenti, e da quelli inviare una richiesta verso il ramo di sviluppo di vvvv-SDK.

Prima di effettuare tali richieste, assicuratevi:

64bit builds

Le soluzioni a 64bit vengono costruite solo con Visual Studio 2012 per il momento, dato che SharpDevelop 4 ignora certe impostazioni nell'Addonpack.sln e di conseguenza fallisce nel tentativo.

Per effettuare un build a 64bit, avete la necessità di ottenere il corrispondente eseguibile vvvv.exe alpha a 64bit.
Eseguite perciò il comando in Git bash (Ctrl+G in GitExtensions):

 scripts/fetch-binaries x64

anonymous user login

Shoutbox

~2d ago

joreg: vvvvTv S0204 is out: Custom Widgets with Dear ImGui: https://youtube.com/live/nrXfpn5V9h0

~2d ago

joreg: New user registration is currently disabled as we're moving to a new login provider: https://visualprogramming.net/blog/2024/reclaiming-vvvv.org/

~9d ago

joreg: vvvvTv S02E03 is out: Logging: https://youtube.com/live/OpUrJjTXBxM

~11d ago

~13d ago

joreg: Follow TobyK on his Advent of Code: https://www.twitch.tv/tobyklight

~17d ago

joreg: vvvvTv S02E02 is out: Saving & Loading UI State: https://www.youtube.com/live/GJQGVxA1pIQ

~17d ago

joreg: We now have a presence on LinkedIn: https://www.linkedin.com/company/vvvv-group

~24d ago

joreg: vvvvTv S02E01 is out: Buttons & Sliders with Dear ImGui: https://www.youtube.com/live/PuuTilbqd9w

~1mth ago

joreg: vvvvTv S02E00 is out: Sensors & Servos with Arduino: https://visualprogramming.net/blog/2024/vvvvtv-is-back-with-season-2/

~1mth ago