[Nim] nimble Update

  • Leider kennt nimble (noch) kein Command, mit dem man ein Update der bereits installierten Pakete machen kann, sondern diese lediglich erneut installieren, bzw. mit einer neueren Version überschreiben kann.

    Update kennt nimble leider nicht:

    nimble Update pkgname

    Nur Install:

    nimble Install pkgname ; shows interactive prompts (y/n)

    nimble Install pkgname -y ; Accept all interactive prompts (Overwrite existing packages).

    nimble Install pkgname -n ; Reject all interactive prompts (Skip existing packages).

    Hier habe ich dann ein Script gefunden, mit dem alle installierten Pakete in einem Rutsch mit der jeweils aktuellen Version überschrieben werden können.

    https://forum.nim-lang.org/t/4648

    Auf dieser Seite verweist der Author jedoch auf github, wo er eine aktuellere Version anbietet:

    https://gist.github.com/zaferarican/91fe52dcf3f9aa78c24d86168d8aa5fb

    Diese Version habe ich dann ein wenig erweitert und auch einen kleinen Fehler abgefangen. ; ==>> if package == "": continue

    Als Default wird bei ihm die Option -y gesetzt:

    let (outP, errP) = gorgeEx("nimble -y install " & package)

    Das habe ich nun so umgeschrieben, dass auch -n als Option angegeben werden kann, oder keine, dann wird -y verwendet.

    update_all.nims

    Durch die Option -n passiert aber noch mehr, als "Reject all interactive prompts (Skip existing packages).", denn nun sieht meine Liste der installierten Pakete so aus und hat evtl. auch Probleme verursacht, denn das Nim-Example von Oscar zu GetBkColor funktioniert bei mir nicht. Andere Scripte hingegen schon... z.B. BassTest.nim, WinList.nim.

    Liste der installierten Pakete anzeigen:

    C:\Users\ghost>nimble list -i

    c2nim [0.9.14]

    cligen [1.2.0]

    miniz [0.1.0]

    nimbass [0.1.3, 0.2.0]

    nimble [#head, 0.11.4]

    nimgen [#head, 0.5.1]

    nimterop [#head, 0.6.11]

    regex [0.14.1, 0.16.2]

    segmentation [0.1.0]

    unicodedb [0.9.0]

    unicodeplus [0.6.0, 0.8.0]

    winim [3.3.3, 3.4.0]

    wnim [0.11.0, 0.11.2, 0.11.3]

    c:\Users\Ghost\.nimble\pkgs\

    c2nim-0.9.14\

    cligen-1.2.0\

    miniz-0.1.0\

    nimbass-0.1.3\

    nimbass-0.2.0\

    nimble-#head\

    nimble-0.11.4\

    nimgen-#head\

    nimgen-0.5.1\

    nimterop-#head\

    nimterop-0.6.11\

    regex-0.14.1\

    regex-0.16.2\

    segmentation-0.1.0\

    unicodedb-0.9.0\

    unicodeplus-0.6.0\

    unicodeplus-0.8.0\

    winim-3.3.3\

    winim-3.4.0\

    wnim-0.11.0\

    wnim-0.11.2\

    wnim-0.11.3\

    Fehler bei GetBkColor.nim:

    C:\Users\ghost\NIM\@Oscar>nim c -r "c:\Users\ghost\NIM\@Oscar\GetBkColor.nim"

    Hint: used config file 'C:\Users\ghost\scoop\apps\nim\current\config\nim.cfg' [Conf]

    C:\Users\ghost\.nimble\pkgs\winim-3.4.0\winim\inc\winsock.nim(1624, 83) Error: undeclared identifier: 'equalMem'

    Tja... wo drückt hier der Schuh und wie biege ich es hin, dass es (wieder) funktioniert?

    Sollte ich die älteren Version evtl. löschen, oder besser doch behalten? Habt ihr auch mehrere Versionen installiert?

    __

    C:\Users\ghost>nim -V

    Nim Compiler Version 1.2.6 [Windows: amd64]

    Compiled at 2020-07-29

    Copyright (c) 2006-2020 by Andreas Rumpf

    git hash: bf320ed172f74f60fd274338e82bdc9ce3520dd9

    active boot switches: -d:release

  • Um dem Fehler auf die Spur zu kommen, habe ich Nim und alles was dazugehört auf einem anderen PC installiert. Doch damit habe ich noch mehr Probleme... das nun aktuelle VSCodium (v1.48.2) findet im Repo die Hälfte der auf dem anderen PC installierten Erweiterungen nicht mehr, so fehlt z.B. die unverzichtbare Erweiterung für Nim, und auch das Sprachpaket, um VSCodium auf German umzustellen.

    BugFix / Oscar - habt ihr keine Idee, woran das liegen könnte? Macht mich echt kirre, dass ich Nim nicht bzw. nicht mehr richtig ans Laufen bekomme.

    • Offizieller Beitrag

    habt ihr keine Idee, woran das liegen könnte? Macht mich echt kirre, dass ich Nim nicht bzw. nicht mehr richtig ans Laufen bekomme.

    Hast Du VSCodium über scoop installiert scoop install vscodium?

    Ich habe nämlich gerade ein Update gemacht scoop update vscodium und bei mir läuft das neue VSCodium (v1.49) problemlos.

  • Hast Du VSCodium über scoop installiert scoop install vscodium?

    Nur bei der Erstinstallation (1.44.2), alle weiteren Versionen (1.48.2, 1.49.0) mit scoop update vscodium.

    Den Fehler bei GetBkColor.nim habe ich aber immer noch... und in VSCodium kann ich die Erweiterungen Nim und das deutsche Sprachpaket immer noch nicht finden... auf meinem Haupt-System werden sie als installiert angezeigt, aber wenn ich danach suche, werden sie nicht gefunden. Auf dem PC, auf dem ich den ganzen Kram gestern installiert habe, komme ich nun also nicht mehr dazu, Nim und das Sprachpaket zu installieren.

    GetBkColor.nim

    C:\Users\ghost\.nimble\pkgs\winim-3.4.0\winim\inc\winsock.nim(1624, 83) Error: undeclared identifier: 'equalMem'

    BassTest.nim (da habe ich bis auf einen Fehler alle beheben können)

    c:\Users\ghost\NIM\@Bitnugger\BassTest.nim(112, 22) Error: type mismatch: got <HSTREAM, bool>

    but expected one of:

    proc BASS_ChannelPlay(handle: DWORD; restart: BOOL): BOOL

    first type mismatch at position: 2

    required type for restart: BOOL

    but expression 'false' is of type: bool

    expression: BASS_ChannelPlay(hChannel, false)

    Hier meldete scoop zwar ein paar Fehler, die ich inzwischen behoben habe, doch die waren, wie ich schon vermutet hatte, nicht relevant für meine Probleme.

    PS C:\Users\ghost> scoop checkup

    WARN LongPaths support is not enabled.

    You can enable it with running:

    Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name 'LongPathsEnabled' -Value 1

    ERROR 'Inno Setup Unpacker' is not installed! It's required for unpacking InnoSetup files. Please run 'scoop install innounp'. 

    ERROR 'dark' is not installed! It's required for unpacking installers created with the WiX Toolset. Please run 'scoop install dark' or 'scoop install wixtoolset'. 

    WARN Found 3 potential problems.

    • Offizieller Beitrag

    Nur bei der Erstinstallation (1.44.2), alle weiteren Versionen (1.48.2, 1.49.0) mit scoop update vscodium.

    Das ist auch OK, genauso mache ich es auch.

    Die aktuelle Version:

    Code
    Version: 1.49.0
    Commit: e790b931385d72cf5669fcefc51cdf65990efa5d
    Datum: 2020-09-11T10:41:02.560Z
    Electron: 9.2.1
    Chrome: 83.0.4103.122
    Node.js: 12.14.1
    V8: 8.3.110.13-electron.0
    Betriebssystem: Windows_NT x64 6.1.7601

    So lief das Update bei mir (gerade ausgeführt):

    Notfalls kannst du ja erst mal auf die vorige Version zurückgreifen.

    Die neueste Version ist immer unter demselben Pfad: C:\Users\USER\scoop\apps\vscodium\current\VSCodium.exe zu finden und ist ein Link auf die jeweils höchste Installationsnummer.

    Der reale Pfad dahinter ist also (bei v1.49.0): C:\Users\USER\scoop\apps\vscodium\1.49.0\VSCodium.exe

    Wenn du dir einen Link auf C:\Users\USER\scoop\apps\vscodium\1.44.2\VSCodium.exe setzt, solltest du zumindest mit der vorigen Version problemlos arbeiten können. Da scoop alle Dateien ausschliesslich in seinem Unterordner apps ablegt, hast du hier auch keine Probleme mit irgendwelchen Abhängigkeiten.

  • Ich habe den bzw. die Fehler gefunden...

    Der Grund für die fehlenden Erweiterungen:

    https://github.com/VSCodium/vscod…ons-marketplace

    c:\Users\Ghost\scoop\apps\vscodium\current\resources\app\product.json

    In der product.json wie auf dieser Seite empfohlen, den Teil für extensionsGallery ändern, und alles ist wieder gut:

    "extensionsGallery": {

    "serviceUrl": "https://open-vsx.org/vscode/gallery",

    "itemUrl": "https://open-vsx.org/vscode/item"

    },

    "extensionsGallery": {

    "serviceUrl": "https://marketplace.visualstudio.com/_apis/public/gallery",

    "itemUrl": "https://marketplace.visualstudio.com/items"

    }

    Zudem waren sämtliche "package.json" Dateien in diesem Pfad mit Linux-Zeilenumbrüchen (@LF) und nicht wie in der 1.44.2 mit @CRLF... bin mir aber nicht sicher, ob das eine Rolle spielt.

    C:\Users\Ghost\scoop\apps\vscodium\current\resources\app\extensions\*\package.json

    Das Script GetBkColor.nim und die von mir geänderte Version von BassTest.nim von Oscar werfen aber beide immer noch denselben Fehler, doch damit kann ich erst einmal leben.

  • Meine etwas erweiterte Version von BassTest.nim (s. Anhang) habe ich wieder ans Laufen bekommen, benötigt nun >= nimbass 0.2.0. Die nicht mehr funktionierenden Zeilen habe ich als Kommentar drin gelassen.

    GetBkColor.nim aber leider nicht...

    .\.nimble\pkgs\winim-3.4.0\winim\inc\winsock.nim(1624, 83) Error: undeclared identifier: 'equalMem'

    Edit:

    Oscar , BugFix

    Nun habe ich endlich auch diesen selten dämlichen Fehler mit GetBkColor.nim gefunden... es lag am Dateinamen... der darf nicht gleichlautend (case sensitiv!) mit dem einer importierten proc sein. <X

    • :thumbdown:nim c -r "c:\Users\ghost\NIM\ Oscar \GetBkColor.nim"
    • :thumbup:nim c -r "c:\Users\ghost\NIM\ Oscar \getBkColor.nim"
    • :thumbup:nim c -r "c:\Users\ghost\NIM\ Oscar \GetBkColor2.nim"