diff --git a/.gitmodules b/.gitmodules index 62e685e5..f5e69777 100644 --- a/.gitmodules +++ b/.gitmodules @@ -5,10 +5,6 @@ path = repos/Fundamental url = https://github.com/VCVRack/Fundamental.git branch = master -[submodule "repos/AS"] - path = repos/AS - url = https://github.com/AScustomWorks/AS - branch = master [submodule "repos/AmalgamatedHarmonics"] path = repos/AmalgamatedHarmonics url = https://github.com/jhoar/AmalgamatedHarmonics @@ -125,10 +121,6 @@ path = repos/SonusModular url = https://gitlab.com/sonusdept/sonusmodular.git branch = master -[submodule "repos/Bidoo"] - path = repos/Bidoo - url = https://github.com/sebastien-bouffier/Bidoo - branch = master [submodule "repos/trowaSoft"] path = repos/trowaSoft url = https://github.com/j4s0n-c/trowaSoft-VCV @@ -181,7 +173,7 @@ path = repos/KoralfxVCV url = https://github.com/koralfx/KoralfxVCV branch = master -[submodule "repos/mscHack"] - path = repos/mscHack - url = https://github.com/mschack/VCV-Rack-Plugins +[submodule "repos/NonLinearInstruments"] + path = repos/NonLinearInstruments + url = https://github.com/NonLinearInstruments/NLNRI_VCVRackPlugins branch = master diff --git a/README.md b/README.md index e64e9d68..0cc23f89 100644 --- a/README.md +++ b/README.md @@ -5,23 +5,45 @@ The VCV community members are responsible for curating Rack plugins into a centr All Rack plugins are welcome assuming they - are not malware (i.e. harm your computer or your privacy) -- do not misuse intellectual property (legally or morally). +- do not misuse intellectual property (legally or morally) -## For plugin developers: Adding/updating your plugin +## For plugin developers: -To add your plugin(s) to the Plugin Manager, update its information, or inform us of new builds, create an [issue](https://github.com/VCVRack/community/issues) with the title equal to your plugin slug (or slugs, comma-separated). -If you already have an existing issue for your plugin, reuse it for additional requests. -Give us each plugin name, your desired author name, license information, relevant URLs, and anything else under the *Manifest* section below. -A Library Team member will handle your request. +Create exactly one thread in the [Issue Tracker](https://github.com/VCVRack/community/issues), with a title equal to your plugin slug (or multiple slugs, comma-separated, if you have more than one plugin). +This will be your permanent communication channel with VCV community members. + + +#### Adding/updating your plugin's information + +Post a comment in your plugin's thread with the plugin name, license, all available URLs, and your email address if you want it to be public. + +A Library team member will handle your request and post a comment when updated. + + +#### Adding/updating your plugin's build (for open-source plugins) + +To inform us of an update to the plugin itself, make sure to increment the `VERSION` in your Makefile (e.g. from 0.6.12 to 0.6.13), and push a commit to your repository. +Post a comment in your plugin's thread with +- the new version +- the new commit hash (given by `git log` or `git rev-parse HEAD`) +- the branch of the commit. + +A Review team member will handle your request and post a comment when updated. + + +#### Adding/updating your plugin's build (for closed-source plugins) + +We are currently designing a procedure to add closed-source plugins to the Plugin Manager. +Stay tuned. ## Manifest files -The filename of each manifest should be `YourSlug.json`. -See [Fundamental.json](manifests/Fundamental.json) for an example. +The path of each manifest should be `manifests/YourSlug.json`. +See [manifest/Fundamental.json](manifests/Fundamental.json) for an example. -All properties are optional. URLs should not be redundant across different keys, meaning you must choose the most relevant key for a particular URL. +All properties are currently optional, but it is recommended to enter as much information as possible. URLs should not be redundant across different keys, e.g. you should not add a `pluginUrl` if it is the same URL as `sourceUrl`. - **name**: Human-readable display name for your plugin. You can change this on a whim, unlike slugs. - **author**: Your name, company, alias, or GitHub username. @@ -41,7 +63,7 @@ All properties are optional. URLs should not be redundant across different keys, Clone all repos with `git submodule update --init --recursive` -Then build all repos with `RACK_DIR= make dist_all` +Then build all repos with `RACK_DIR= make -j$(nproc) dist_all` ## Adding a repo diff --git a/manifests/AS.json b/manifests/AS.json index 72da998f..6a369136 100644 --- a/manifests/AS.json +++ b/manifests/AS.json @@ -7,5 +7,6 @@ "sourceUrl": "https://github.com/AScustomWorks/AS", "donateUrl": "https://www.paypal.me/frederius/", "latestVersion": "0.6.0", + "repoVersion": "0.6.0.2", "status": "available" -} \ No newline at end of file +} diff --git a/manifests/AmalgamatedHarmonics.json b/manifests/AmalgamatedHarmonics.json index 38e472e2..bb55708e 100644 --- a/manifests/AmalgamatedHarmonics.json +++ b/manifests/AmalgamatedHarmonics.json @@ -1,9 +1,11 @@ { "name": "Amalgamated Harmonics", "author": "John Hoar", - "license": "BSD 3-Clause", + "license": "BSD-3-Clause", "manualUrl": "https://github.com/jhoar/AmalgamatedHarmonics/wiki", "sourceUrl": "https://github.com/jhoar/AmalgamatedHarmonics", - "latestVersion": "0.6.0", - "status": "available" -} + "latestVersion": "0.6.1", + "repoVersion": "0.6.1", + "status": "available", + "buildTimestamp": 1522750473 +} \ No newline at end of file diff --git a/manifests/Bidoo.json b/manifests/Bidoo.json index db3159c2..3a7b88d4 100644 --- a/manifests/Bidoo.json +++ b/manifests/Bidoo.json @@ -1,9 +1,11 @@ { - "name": "bid°°", + "name": "Bidoo", "author": "Sébastien Bouffier", + "authorEmail": "sebastien.bouffier@gmail.com", "license": "BSD-3-Clause", "manualUrl": "https://github.com/sebastien-bouffier/Bidoo/wiki", "sourceUrl": "https://github.com/sebastien-bouffier/Bidoo", "donateUrl": "https://paypal.me/sebastienbouffier", + "repoVersion": "0.6.1", "latestVersion": "0.6.0" } diff --git a/manifests/Bogaudio.json b/manifests/Bogaudio.json index a3fc6c35..e956d490 100644 --- a/manifests/Bogaudio.json +++ b/manifests/Bogaudio.json @@ -4,7 +4,8 @@ "license": "BSD-3-Clause", "manualUrl": "https://github.com/bogaudio/BogaudioModules/blob/master/README.md", "sourceUrl": "https://github.com/bogaudio/BogaudioModules", - "latestVersion": "0.6.4", + "latestVersion": "0.6.5", "repoVersion": "0.6.5", - "status": "available" + "status": "available", + "buildTimestamp": 1522781773 } \ No newline at end of file diff --git a/manifests/FrozenWasteland.json b/manifests/FrozenWasteland.json index 80a75b06..eb310a0e 100644 --- a/manifests/FrozenWasteland.json +++ b/manifests/FrozenWasteland.json @@ -5,7 +5,8 @@ "manualUrl": "https://github.com/almostEric/FrozenWasteland/blob/master/README.md", "sourceUrl": "https://github.com/almostEric/FrozenWasteland", "donateUrl": "https://paypal.me/FrozenWasteland", - "latestVersion": "0.6.0", + "latestVersion": "0.6.2", "status": "available", - "repoVersion": "0.6.1" -} + "repoVersion": "0.6.2", + "buildTimestamp": 1522751401 +} \ No newline at end of file diff --git a/manifests/ImpromptuModular.json b/manifests/ImpromptuModular.json index 90dff5bf..84277a63 100644 --- a/manifests/ImpromptuModular.json +++ b/manifests/ImpromptuModular.json @@ -1,11 +1,12 @@ { "name": "ImpromptuModular", - "author": "Marc Boulé", + "author": "Marc Boul\u00e9", "license": "BSD-3-Clause", "authorEmail": "marc.boule@etsmtl.ca", "manualUrl": "https://github.com/MarcBoule/ImpromptuModular/blob/master/README.md", "sourceUrl": "https://github.com/MarcBoule/ImpromptuModular", - "latestVersion": "0.6.0", + "latestVersion": "0.6.1", "repoVersion": "0.6.1", - "status": "available" -} + "status": "available", + "buildTimestamp": 1522781789 +} \ No newline at end of file diff --git a/manifests/JW-Modules.json b/manifests/JW-Modules.json index d16b3af4..4c7c9371 100644 --- a/manifests/JW-Modules.json +++ b/manifests/JW-Modules.json @@ -1,7 +1,7 @@ { "name": "JW-Modules", "author": "Jeremy Wentworth", - "license": "BSD 3-Clause", + "license": "BSD-3-Clause", "authorUrl": "http://jeremywentworth.com", "manualUrl": "https://github.com/jeremywen/JW-Modules/blob/master/README.md", "sourceUrl": "https://github.com/jeremywen/JW-Modules", diff --git a/manifests/NonLinearInstruments.json b/manifests/NonLinearInstruments.json index 13afa263..6d2aef16 100644 --- a/manifests/NonLinearInstruments.json +++ b/manifests/NonLinearInstruments.json @@ -1,8 +1,12 @@ { "name": "Non Linear Instruments", - "author": "Ignasi Álvarez Garriga", - "license": "BSD 3-clause", + "author": "Ignasi \u00c1lvarez Garriga", + "authorUrl": "https://www.ignasialvarez.cat", + "license": "BSD-3-Clause", "manualUrl": "https://github.com/NonLinearInstruments/NLNRI_VCVRackPlugins/blob/master/README.md", "sourceUrl": "https://github.com/NonLinearInstruments/NLNRI_VCVRackPlugins", - "latestVersion": "0.5.3" -} + "repoVersion": "0.6.0", + "latestVersion": "0.6.0", + "buildTimestamp": 1522751321, + "status": "available" +} \ No newline at end of file diff --git a/manifests/Ohmer.json b/manifests/Ohmer.json index 4e4e35f6..a5e2204f 100644 --- a/manifests/Ohmer.json +++ b/manifests/Ohmer.json @@ -1,11 +1,13 @@ { "name": "Ohmer Modules", "author": "Dominique Camus", + "authorUrl": "https://github.com/DomiKamu", "license": "BSD-3-Clause", - "manualUrl": "https://github.com/DomiKamu/Ohmer-Modules/blob/WIP050/README.md", + "manualUrl": "https://github.com/DomiKamu/Ohmer-Modules/blob/master/README.md", "sourceUrl": "https://github.com/DomiKamu/Ohmer-Modules", "donateUrl": "https://www.paypal.me/DominiqueCAMUS", - "latestVersion": "0.6.0", - "repoVersion": "0.6.1", - "status": "available" -} + "latestVersion": "0.6.2", + "repoVersion": "0.6.2", + "status": "available", + "buildTimestamp": 1522751360 +} \ No newline at end of file diff --git a/manifests/SubmarineFree.json b/manifests/SubmarineFree.json index 3d56c435..95a511dd 100644 --- a/manifests/SubmarineFree.json +++ b/manifests/SubmarineFree.json @@ -1,7 +1,7 @@ { "name": "SubmarineFree", "author": "David O'Rourke", - "license": "BSD 3-Clause", + "license": "BSD-3-Clause", "sourceUrl": "https://github.com/david-c14/SubmarineFree/", "latestVersion": "0.6.0" } diff --git a/manifests/Valley.json b/manifests/Valley.json index e4c88aeb..8a8c8b38 100644 --- a/manifests/Valley.json +++ b/manifests/Valley.json @@ -5,7 +5,8 @@ "manualUrl": "https://github.com/ValleyAudio/ValleyRackFree/blob/master/README.md", "sourceUrl": "https://github.com/ValleyAudio/ValleyRackFree/", "donateUrl": "https://www.paypal.me/valleyvcv", - "latestVersion": "0.6.0", - "repoVersion": "0.6.1", - "status": "available" + "latestVersion": "0.6.2", + "repoVersion": "0.6.2", + "status": "available", + "buildTimestamp": 1522752854 } \ No newline at end of file diff --git a/manifests/alto777_LFSR.json b/manifests/alto777_LFSR.json new file mode 100644 index 00000000..f561a4c1 --- /dev/null +++ b/manifests/alto777_LFSR.json @@ -0,0 +1,6 @@ +{ + "name": "alto777 LFSR", + "author": "Robert A Moeser", + "license": "BSD-3-Clause", + "sourceUrl": "https://github.com/alto777/LFSR" +} diff --git a/manifests/cf.json b/manifests/cf.json index 42426edb..911d525d 100644 --- a/manifests/cf.json +++ b/manifests/cf.json @@ -1,10 +1,14 @@ { "name": "cf", - "author": "clément foulc", + "author": "cl\u00e9ment foulc", "authorEmail": "c.foulc@gmail.com", + "license": "MIT", "authorUrl": "https://www.facebook.com/clement.foulc", "manualUrl": "https://github.com/cfoulc/cf/blob/master/README.md", "sourceUrl": "https://github.com/cfoulc/cf", "donateUrl": "https://www.paypal.me/cfoulc", - "latestVersion": "0.5.16" -} + "repoVersion": "0.6.0", + "latestVersion": "0.6.0", + "buildTimestamp": 1522750550, + "status": "available" +} \ No newline at end of file diff --git a/manifests/moDllz.json b/manifests/moDllz.json index 1887cbe5..31b45331 100644 --- a/manifests/moDllz.json +++ b/manifests/moDllz.json @@ -4,7 +4,8 @@ "license": "BSD-3-Clause", "manualUrl": "https://drive.google.com/file/d/12kjCLSeyaaqXEvfS1c4HcnfrrbHeQ0ot/view", "sourceUrl": "https://github.com/dllmusic/VCV_moDllz", - "latestVersion": "0.6.0", + "latestVersion": "0.6.1", "repoVersion": "0.6.1", - "status": "available" + "status": "available", + "buildTimestamp": 1522750927 } \ No newline at end of file diff --git a/manifests/squinkylabs-plug1.json b/manifests/squinkylabs-plug1.json index ea58b1b1..3cd0abfa 100644 --- a/manifests/squinkylabs-plug1.json +++ b/manifests/squinkylabs-plug1.json @@ -5,6 +5,8 @@ "license": "MIT", "manualUrl": "https://github.com/squinkylabs/SquinkyVCV/blob/master/docs/booty-shifter.md", "sourceUrl": "https://github.com/squinkylabs/SquinkyVCV", - "latestVersion": "0.6.0", - "repoVersion": "0.6.1" -} + "latestVersion": "0.6.1", + "repoVersion": "0.6.1", + "buildTimestamp": 1522750486, + "status": "available" +} \ No newline at end of file diff --git a/repos/AS b/repos/AS deleted file mode 160000 index fde24b7f..00000000 --- a/repos/AS +++ /dev/null @@ -1 +0,0 @@ -Subproject commit fde24b7fa209e0d24ada48f42972405087450d20 diff --git a/repos/AmalgamatedHarmonics b/repos/AmalgamatedHarmonics index b7e3111a..9c46438c 160000 --- a/repos/AmalgamatedHarmonics +++ b/repos/AmalgamatedHarmonics @@ -1 +1 @@ -Subproject commit b7e3111af18daac71f5376123a4502c9a50c541e +Subproject commit 9c46438c36069783063e162874509be7ff5101a7 diff --git a/repos/Bidoo b/repos/Bidoo deleted file mode 160000 index 8849ebc2..00000000 --- a/repos/Bidoo +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8849ebc2ac199d2e62c1c28a1e9b7c6ccff01e11 diff --git a/repos/FrozenWasteland b/repos/FrozenWasteland index 049f2b01..da73489d 160000 --- a/repos/FrozenWasteland +++ b/repos/FrozenWasteland @@ -1 +1 @@ -Subproject commit 049f2b01ae0de7ec2081b381a4f8d1be75760ae3 +Subproject commit da73489d1f7aa3dba77925777d485a3e66f8aec1 diff --git a/repos/NonLinearInstruments b/repos/NonLinearInstruments new file mode 160000 index 00000000..551e5f84 --- /dev/null +++ b/repos/NonLinearInstruments @@ -0,0 +1 @@ +Subproject commit 551e5f84b49849f2b472214992ee8a406791ee24 diff --git a/repos/Ohmer b/repos/Ohmer index 38842f95..288c9084 160000 --- a/repos/Ohmer +++ b/repos/Ohmer @@ -1 +1 @@ -Subproject commit 38842f95e4cd8fe5bafa29291888bd005def23d7 +Subproject commit 288c90847d4c61c8d09f633db6d3b0b243fa1a8c diff --git a/repos/Valley b/repos/Valley index 41432baf..e92ce4c0 160000 --- a/repos/Valley +++ b/repos/Valley @@ -1 +1 @@ -Subproject commit 41432baf7607a7a356d503a8dc92b383dc6e2e1e +Subproject commit e92ce4c007a3e54b6d29ec8733e98f79d0c5165e diff --git a/repos/cf b/repos/cf index 72eecd78..81fac9fa 160000 --- a/repos/cf +++ b/repos/cf @@ -1 +1 @@ -Subproject commit 72eecd78a85df9cff86a07997dd18a35ecf50cad +Subproject commit 81fac9faf08c9789b766d39d78cd988c3b8b1cde diff --git a/repos/moDllz b/repos/moDllz index 0bf58cdf..10c8b362 160000 --- a/repos/moDllz +++ b/repos/moDllz @@ -1 +1 @@ -Subproject commit 0bf58cdf138c55ce74b009e852d6ce5ea79b8087 +Subproject commit 10c8b362a8f207e987fa12969c1acd02cccc181b diff --git a/repos/mscHack b/repos/mscHack deleted file mode 160000 index 2057b6e9..00000000 --- a/repos/mscHack +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2057b6e92deb128bf87c1c71cae8d98cc7625184 diff --git a/scripts/build_updates.py b/scripts/build_updates.py new file mode 100644 index 00000000..4a44d20f --- /dev/null +++ b/scripts/build_updates.py @@ -0,0 +1,70 @@ +import glob +import json +import time +import os + + +def build_mac(slug): + env = f'CC=x86_64-apple-darwin15-clang CXX=x86_64-apple-darwin15-clang++-libc++ STRIP=x86_64-apple-darwin15-strip RACK_DIR=../../Rack-SDK' + make = f'{env} make -j$(nproc) -C repos/{slug}' + if os.system(f'{make} clean'): + raise Exception(f"Could not clean Mac build of {slug}") + if os.system(f'{make} dist'): + raise Exception(f"Could not make Mac build of {slug}") + + +def build_win(slug): + env = f'CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ STRIP=x86_64-w64-mingw32-strip RACK_DIR=../../Rack-SDK' + make = f'{env} make -j$(nproc) -C repos/{slug}' + if os.system(f'{make} clean'): + raise Exception(f"Could not clean Windows build of {slug}") + if os.system(f'{make} dist'): + raise Exception(f"Could not make Windows build of {slug}") + + +def build_lin(slug): + env = f'-e RACK_DIR=../../Rack-SDK' + make = f'make -j$(nproc) -C repos/{slug}' + if os.system(f'docker run --rm -v $(pwd):/mnt -u vortico {env} a0b9c87ec456 {make} clean'): + raise Exception(f"Could not clean Linux build of {slug}") + if os.system(f'docker run --rm -v $(pwd):/mnt -u vortico {env} a0b9c87ec456 {make} dist'): + raise Exception(f"Could not make Linux build of {slug}") + + +def move_package(slug): + os.system('mkdir -p downloads') + if os.system(f'mv repos/{slug}/dist/{slug}-*.zip downloads/'): + raise Exception(f"No package found for {slug}") + + +for filename in glob.glob("manifests/*"): + slug = os.path.splitext(os.path.basename(filename))[0] + with open(filename, "r") as f: + manifest = json.load(f) + + # Skip if update is not needed + if 'repoVersion' not in manifest: + continue + if 'latestVersion' in manifest and manifest['latestVersion'] == manifest['repoVersion']: + continue + if not os.path.exists('repos/' + slug): + continue + + try: + build_mac(slug) + move_package(slug) + build_win(slug) + move_package(slug) + build_lin(slug) + move_package(slug) + except Exception as e: + print(e) + break + + # Update build information + manifest['latestVersion'] = manifest['repoVersion'] + manifest['buildTimestamp'] = round(time.time()) + manifest['status'] = "available" + + with open(filename, "w") as f: + json.dump(manifest, f, indent=" ")