Platform.startupFiles returns error on 3.11.1 version, arch os

Hello, on SuperCollider 3.11.1, on arch linux, I tried this:

Platform.startupFiles;

and got the error message quoted below.

Any ideas how to solve this?

Iannis Zannos

ERROR: A primitive was not bound. 0 861
Instance of Method {    (0x55e587bd79c0, gc=01, fmt=00, flg=11, set=04)
  instance variables [15]
    raw1 : Float 0.000000   00000000 0080000C
    raw2 : Float 0.000000   00000300 03020003
    code : instance of Int8Array (0x55e587bd7d80, size=4, set=2)
    selectors : instance of Array (0x55e587bd7cc0, size=1, set=2)
    constants : nil
    prototypeFrame : instance of Array (0x55e587bd7c00, size=3, set=2)
    context : nil
    argNames : instance of SymbolArray (0x55e587bd7b40, size=3, set=2)
    varNames : nil
    sourceCode : nil
    ownerClass : instance of Meta_SequenceableCollection (0x55e588036f80, size=19, set=5)
    name : Symbol 'prEditDistance'
    primitiveName : Symbol '_ArrayLevenshteinDistance'
    filenameSymbol : Symbol '/home/iani/Dev/SC/sc-source-iz-workfolder-20200819/SCClassLibrary/Common/Collections/SequenceableCollection.sc'
    charPos : Integer 3418
}
ERROR: Message 'prLevenshteinDistance' not understood.
RECEIVER:
   nil
ARGS:
   nil
   nil
PATH: /home/iani/.config/SuperCollider/test.scd
CALL STACK:
	DoesNotUnderstandError:reportError
		arg this = <instance of DoesNotUnderstandError>
	Nil:handleError
		arg this = nil
		arg error = <instance of DoesNotUnderstandError>
	Thread:handleError
		arg this = <instance of Thread>
		arg error = <instance of DoesNotUnderstandError>
	Object:throw
		arg this = <instance of DoesNotUnderstandError>
	Object:doesNotUnderstand
		arg this = nil
		arg selector = 'prLevenshteinDistance'
		arg args = [*2]
	< FunctionDef in Method Collection:collectAs >
		arg elem = "dependantsdictionary"
		arg i = 0
	ArrayedCollection:do
		arg this = [*399]
		arg function = <instance of Function>
		var i = 0
	Collection:collectAs
		arg this = [*399]
		arg function = <instance of Function>
		arg class = <instance of Meta_Array>
		var res = [*0]
	DoesNotUnderstandError:init
		arg this = <instance of DoesNotUnderstandError>
		var methods = [*399]
		var methodNames = [*399]
		var editDistances = nil
		var minIndex = nil
		var lowerCaseSelector = "startupfiles"
	Object:doesNotUnderstand
		arg this = <instance of Meta_Platform>
		arg selector = 'startupFiles'
		arg args = [*0]
	Interpreter:interpretPrintCmdLine
		arg this = <instance of Interpreter>
		var res = nil
		var func = <instance of Function>
		var code = "Platform.startupFiles;"
		var doc = <instance of ScelDocument>
		var ideClass = nil
	Process:interpretPrintCmdLine
		arg this = <instance of Main>
^^ ERROR: Message 'prLevenshteinDistance' not understood.
RECEIVER: nil


Probably a mismatch between your class library and the sclang binary.

It’s not supported to update only the class library without also updating the binary.

You probably need to rebuild.

hjh

Thank you @jamshark70.
I’ll try to find out how to build on arch from source.
Iannis Zannos

Oh, I apologize, I should have checked the help first.

It’s thisProcess.platform.startupFiles – it’s an instance method, not a class method, so you can’t access it directly from the class Platform.

(In Linux, building is the best way to update anyway… so it’s worth it to set up that environment. The Linux readme is thorough about this – I’m not good with build tools but managed to set it up pretty quickly.)

hjh

Thanks indeed, @jamshark70.
thisProcess.platform.startupFiles works on my arch setup.
I checked http://doc.sccode.org/Classes/Platform.html#-startupFiles
and it is consistent with your instructions, although it needs careful reading.

I tried to get started with building on my arch laptop. The info does list all versions of all required compiler parts and libraries. However, I do not yet know how to find out the versions of libraries. I guess I have to go to the source code and read the README or the headers of some files there. I also could not find out what the initial config/compile/install commands are on the terminal. Finally, I do not know what the compile does to the version already installed, so I am reluctant to try out before learning more about where libraries and binaries are placed.

Another topic related to compiling: On arch, yay offers to install a pulseaudio version, which I am interested in trying out in order to avoid the complications of using jack concurrently with software like web browsers or zoom. But yay failed to compile. So I need to study all this more before addressing this in a different entry on the forum.

Cheers,

Iannis Zannos

hey Iannos, i also use arch.

@jamshark70 arch is one of the few (maybe the only?) linux distributions where there is a package maintainer for SC (David Runge) who updates promptly. on other linux distros the situation is definitely less stable, but on arch building from source is rarely necessary if you just want to use SC. the package is in the community repo, if you have it enabled you can install with pacman -S supercollider.

you can check package versions with pacman -Q and pacman -Si. but you don’t need to find out the versions, because SC generally stays compatible with arch’s rolling release model.

check the linux readme.

if you don’t set CMAKE_INSTALL_PREFIX, then binaries by default go in /usr/bin, libraries in /usr/lib, and class files in /usr/share.

reporting this on the aur page would be best if it is a problem you experience when building with yay/aur. David would be able to help better there since he authors the packages.

2 Likes

Hey, @VIRTUALDOG. Thanks indeed. All this information encourages me to try my own build soon.

Iannis

1 Like

great! happy to help if you run into more issues.