"ERROR: Primitive '_FileCopy' failed." under Ubuntu 20.04

Dear sc-Linux-users,

I am testing my tutorial files under macOS with SC3.12.2, Windows with SC3.12.2, and Ubuntu with 3.13.0-dev.

Under Ubuntu, I built SC from source using the following instructions:

I had no problems under Ubuntu three years ago when I last did it.

With Ubuntu 20.04, I have a problem I have never seen:

I copied my materials into the following folder:

/usr/local/share/SuperCollider/HelpSource/Tutorials

as follows in a terminal window:

parallels@ubuntu-linux-20-04-desktop:~$ sudo cp -r '/media/psf/Dropbox/prko/__myDocs/Writings/Making Sound using Open Sources/mixed/SuperCollider.app/Contents/Resources/HelpSource/Tutorials/aKoreanGuide' /usr/local/share/SuperCollider/HelpSource/Tutorials

However, SuperCollider returns the following error when recompiling:

ERROR: Primitive '_FileCopy' failed.
caught exception 'Permission denied: copy from "/usr/local/share/SuperCollider/HelpSource/Tutorials/aKoreanGuide/02/resources/K02_09_-_balanced_signal.gif" to "/home/parallels/.local/share/SuperCollider/Help/Tutorials/aKoreanGuide/02/resources/K02_09_-_balanced_signal.gif"' in primitive in method Meta_File:copy
RECEIVER:
class File (0xaaab0b0ef5c0) {
  instance variables [19]
    name : Symbol 'File'
    nextclass : instance of Meta_FileDialog (0xaaab0ac9d8c0, size=19, set=5)
    superclass : Symbol 'UnixFILE'
    subclasses : nil
    methods : instance of Array (0xaaab0b0ef740, size=12, set=4)
    instVarNames : instance of SymbolArray (0xaaab0b0ef8c0, size=1, set=2)
    classVarNames : instance of SymbolArray (0xaaab0b0efa40, size=1, set=2)
    iprototype : instance of Array (0xaaab0b0ef980, size=1, set=2)
    cprototype : instance of Array (0xaaab0b0efb00, size=1, set=2)
    constNames : nil
    constValues : nil
    instanceFormat : Integer 0
    instanceFlags : Integer 0
    classIndex : Integer 1092
    classFlags : Integer 0
    maxSubclassIndex : Integer 1092
    filenameSymbol : Symbol '/usr/local/share/SuperCollider/SCClassLibrary/Common/Files/File.sc'
    charPos : Integer 0
    classVarIndex : Integer 212
}

PROTECTED CALL STACK:
	Meta_MethodError:new	0xaaab0aa8f600
		arg this = PrimitiveFailedError
		arg what = caught exception 'Permission denied: copy from "/usr/local/share/SuperCollider/HelpSource/Tutorials/aKoreanGuide/02/resources/K02_09_-_balanced_signal.gif" to "/home/parallels/.local/share/SuperCollider/Help/Tutorials/aKoreanGuide/02/resources/K02_09_-_balanced_signal.gif"' in primitive in method Meta_File:copy
		arg receiver = File
	Meta_PrimitiveFailedError:new	0xaaab0aa97440
		arg this = PrimitiveFailedError
		arg receiver = File
	Object:primitiveFailed	0xaaab0a62acc0
		arg this = File
	ArrayedCollection:do	0xaaab0b59bdc0
		arg this = [ [ /usr/local/share/SuperCollider/HelpSource/BrokenLink.html, BrokenLink.html ], [ /usr/local/share/SuperCollider/HelpSource/browse.css, browse.css ], [ /usr/local/share/SuperCollider/HelpSource/Browse.html, Browse.html ], [ /usr/local/share/SuperCollider/HelpSource/browse.js, browse.js ], [ /usr/local/share/SuperCollider/HelpSource/codemirror.css, codemirror.css ], [ /usr/local/share/SuperCollider/HelpSource/editor.css, editor.css ], [ /usr/local/share/SuperCollider/HelpSource/editor.js, editor.js ], [ /u...etc...
		arg function = a Function
		var i = 106
	Meta_SCDoc:indexAllDocuments	0xaaab0a9b7640
		arg this = SCDoc
		arg clearCache = false
		var now = 0.593810654
		var key = Classes/String
		var doc = SCDocEntry("Classes/Help", "Help", "(Undocumented class)")
		var nonHelpFiles = [ [ /usr/local/share/SuperCollider/HelpSource/BrokenLink.html, BrokenLink.html ], [ /usr/local/share/SuperCollider/HelpSource/browse.css, browse.css ], [ /usr/local/share/SuperCollider/HelpSource/Browse.html, Browse.html ], [ /usr/local/share/SuperCollider/HelpSource/browse.js, browse.js ], [ /usr/local/share/SuperCollider/HelpSource/codemirror.css, codemirror.css ], [ /usr/local/share/SuperCollider/HelpSource/editor.css, editor.css ], [ /usr/local/share/SuperCollider/HelpSource/editor.js, editor.js ], [ /u...etc...
		var undocClasses = IdentitySet[ TextViewBase, TopScrollWidget, PrimitiveFailedError, AbstractStepValue, QFont, PmonoStream, PureMultiOutUGen, QMultiSliderView, PowerOfTwoBlock, QDragSink, QEnvelopeView, FunctionDefInspector, HIDDeviceDispatcher, PrettyEcho, AbstractActionView, Chat, URI, SystemSynthDefs, QAlignment, ScoreStreamPlayer, SineWarp, ScaleStream, ContiguousBlock, StackNumberAllocator, DragView, QRangeSlider, ClearBuf, AbstractOpPlug, QAbstractStepValue, AbstractMDPlugin, QCheckBox, NodeID, QTreeViewItem, QWebView, ...etc...
		var additions = Dictionary[ (Classes/String -> [ /usr/local/share/SuperCollider/HelpSource/Classes/String.ext.schelp ]) ]
	Meta_SCDoc:documents	0xaaab0a9bb000
		arg this = SCDoc
	Meta_SCDoc:prepareHelpForURL	0xaaab0a9bf280
		arg this = SCDoc
		arg url = file:///home/parallels/.local/share/SuperCollider/Help/Help.html
		var path = /home/parallels/.local/share/SuperCollider/Help/Help.html
		var targetBasePath = /home/parallels/.local/share/SuperCollider/Help
		var pathIsCaseInsensitive = false
		var subtarget = Help
		var src = nil
		var c = nil
		var cmd = nil
		var doc = nil
		var destExist = true
		var destMtime = 1651965388
		var verpath = /home/parallels/.local/share/SuperCollider/Help/version
	a FunctionDef	0xaaab0a90efc0
		sourceCode = "<an open Function>"
	Function:prTry	0xaaab0ad1d0c0
		arg this = a Function
		var result = nil
		var thread = a Routine
		var next = nil
		var wasInProtectedFunc = true
	
CALL STACK:
	MethodError:reportError
		arg this = <instance of PrimitiveFailedError>
	< closed FunctionDef >
		arg error = <instance of PrimitiveFailedError>
	Integer:forBy
		arg this = 0
		arg endval = 0
		arg stepval = 2
		arg function = <instance of Function>
		var i = 0
		var j = 0
	SequenceableCollection:pairsDo
		arg this = [*2]
		arg function = <instance of Function>
	Scheduler:seconds_
		arg this = <instance of Scheduler>
		arg newSeconds = 0.854831558
	Meta_AppClock:tick
		arg this = <instance of Meta_AppClock>
		var saveClock = <instance of Meta_SystemClock>
	Process:tick
		arg this = <instance of Main>
^^ The preceding error dump is for ERROR: Primitive '_FileCopy' failed.
caught exception 'Permission denied: copy from "/usr/local/share/SuperCollider/HelpSource/Tutorials/aKoreanGuide/02/resources/K02_09_-_balanced_signal.gif" to "/home/parallels/.local/share/SuperCollider/Help/Tutorials/aKoreanGuide/02/resources/K02_09_-_balanced_signal.gif"' in primitive in method Meta_File:copy
RECEIVER: File

How could I resolve the problem?

best regards,

The problem was the permission of that file. So I changed the permission of all files and subfolders of the root folder of my tutorials, and it works!

Sorry, the problem was not sclang-specific but file properties-specific.