Build Information
Failed to build CoreMLLLM, reference v1.9.0 (c69a4e), with Swift 6.4 for Linux on 16 Sep 2026 01:03:04 UTC.
Build Command
bash -c docker run --pull=always --rm -v "checkouts-53886770-1":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/saguaro1/spi-images:basic-6.4-latest swift build --triple x86_64-unknown-linux-gnu 2>&1Build Log
========================================
RunAll
========================================
Builder version: 5.1.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/john-rocky/CoreML-LLM.git
Reference: v1.9.0
Initialized empty Git repository in /host/spi-builder-workspace/.git/
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
From https://github.com/john-rocky/CoreML-LLM
* tag v1.9.0 -> FETCH_HEAD
HEAD is now at c69a4e9 feat(gemma4-e4b): multimodal CoreML bundle (text+image+video+audio on iPhone) (#165)
Cloned https://github.com/john-rocky/CoreML-LLM.git
Revision (git rev-parse @):
c69a4e9bb8f9574f7b332babd93bb745c1022c11
SUCCESS checkout https://github.com/john-rocky/CoreML-LLM.git at v1.9.0
========================================
Build
========================================
Selected platform: linux
Swift version: 6.4
Building package at path: $PWD
https://github.com/john-rocky/CoreML-LLM.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-53886770-1":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/saguaro1/spi-images:basic-6.4-latest swift build --triple x86_64-unknown-linux-gnu 2>&1
basic-6.4-latest: Pulling from saguaro1/spi-images
Digest: sha256:c77fcce225e223ac0fafed844619173fc6de8d62dd560eeb28db3182af6a282b
Status: Image is up to date for registry.gitlab.com/saguaro1/spi-images:basic-6.4-latest
Fetching https://github.com/huggingface/swift-transformers
[1/7001] Fetching swift-transformers
Fetched https://github.com/huggingface/swift-transformers (1.27s)
Computing version for https://github.com/huggingface/swift-transformers
Computed https://github.com/huggingface/swift-transformers at 1.3.4 (1.52s)
Fetching https://github.com/apple/swift-crypto.git
Fetching https://github.com/huggingface/swift-huggingface.git
Fetching https://github.com/apple/swift-collections.git
Fetching https://github.com/ibireme/yyjson.git
Fetching https://github.com/huggingface/swift-jinja.git
[1/18529] Fetching swift-crypto
[743/21153] Fetching swift-crypto, swift-huggingface
[770/22513] Fetching swift-crypto, swift-huggingface, swift-jinja
[7135/27412] Fetching swift-crypto, swift-huggingface, swift-jinja, yyjson
[7555/54657] Fetching swift-crypto, swift-huggingface, swift-jinja, yyjson, swift-collections
Fetched https://github.com/ibireme/yyjson.git (1.06s)
[38479/49758] Fetching swift-crypto, swift-huggingface, swift-jinja, swift-collections
Fetched https://github.com/apple/swift-crypto.git (1.29s)
Fetched https://github.com/huggingface/swift-jinja.git (1.39s)
Fetched https://github.com/huggingface/swift-huggingface.git (1.39s)
Fetched https://github.com/apple/swift-collections.git (1.40s)
Computing version for https://github.com/ibireme/yyjson.git
Computed https://github.com/ibireme/yyjson.git at 0.12.0 (2.45s)
Computing version for https://github.com/huggingface/swift-huggingface.git
Computed https://github.com/huggingface/swift-huggingface.git at 0.10.1 (0.17s)
Fetching https://github.com/mattt/EventSource.git
[1/303] Fetching eventsource
Fetched https://github.com/mattt/EventSource.git (0.46s)
Computing version for https://github.com/huggingface/swift-jinja.git
Computed https://github.com/huggingface/swift-jinja.git at 2.5.1 (0.61s)
Computing version for https://github.com/mattt/EventSource.git
Computed https://github.com/mattt/EventSource.git at 1.5.1 (0.16s)
Computing version for https://github.com/apple/swift-collections.git
Computed https://github.com/apple/swift-collections.git at 1.6.0 (0.30s)
Computing version for https://github.com/apple/swift-crypto.git
Computed https://github.com/apple/swift-crypto.git at 4.5.2 (1.15s)
Fetching https://github.com/apple/swift-asn1.git
[1/1983] Fetching swift-asn1
Fetched https://github.com/apple/swift-asn1.git (0.95s)
Computing version for https://github.com/apple/swift-asn1.git
Computed https://github.com/apple/swift-asn1.git at 1.7.2 (1.17s)
Creating working copy for https://github.com/mattt/EventSource.git
Working copy of https://github.com/mattt/EventSource.git resolved at 1.5.1
Creating working copy for https://github.com/huggingface/swift-transformers
Working copy of https://github.com/huggingface/swift-transformers resolved at 1.3.4
Creating working copy for https://github.com/apple/swift-crypto.git
Working copy of https://github.com/apple/swift-crypto.git resolved at 4.5.2
Creating working copy for https://github.com/ibireme/yyjson.git
Working copy of https://github.com/ibireme/yyjson.git resolved at 0.12.0
Creating working copy for https://github.com/huggingface/swift-huggingface.git
Working copy of https://github.com/huggingface/swift-huggingface.git resolved at 0.10.1
Creating working copy for https://github.com/huggingface/swift-jinja.git
Working copy of https://github.com/huggingface/swift-jinja.git resolved at 2.5.1
Creating working copy for https://github.com/apple/swift-collections.git
Working copy of https://github.com/apple/swift-collections.git resolved at 1.6.0
Creating working copy for https://github.com/apple/swift-asn1.git
Working copy of https://github.com/apple/swift-asn1.git resolved at 1.7.2
Building for debugging...
[Computing dependencies]
[Pre-planning 1 / 832]
[Planning deferred tasks]
[Starting]
[137 / 627]
[152 / 651] CCryptoBoringSSLShims
[153 / 651] swift-crypto_CXKCP
[155 / 651] InternalCollectionsUtilities
[155 / 651] yyjson
[164 / 651] CryptoBoringWrapper
[170 / 651] InternalCollectionsUtilities
[177 / 651] InternalCollectionsUtilities
[179 / 651] EventSource-product
[184 / 651] CryptoBoringWrapper
[185 / 651] CryptoBoringWrapper
[192 / 653] CCryptoBoringSSL
[194 / 662] OrderedCollections
[195 / 662] CCryptoBoringSSL
[196 / 662] CCryptoBoringSSL
[197 / 662] CCryptoBoringSSL
[198 / 662] CCryptoBoringSSL
[202 / 663] CCryptoBoringSSL
[203 / 663] CCryptoBoringSSL
[205 / 664] CCryptoBoringSSL
[207 / 664] CCryptoBoringSSL
[213 / 664] CCryptoBoringSSL
[215 / 664] CCryptoBoringSSL
[217 / 664] CCryptoBoringSSL
[218 / 664] CCryptoBoringSSL
[220 / 664] CCryptoBoringSSL
[228 / 664] CCryptoBoringSSL
[229 / 664] CCryptoBoringSSL
[233 / 664] CCryptoBoringSSL
[235 / 664] CCryptoBoringSSL
[237 / 664] CCryptoBoringSSL
[245 / 664] CCryptoBoringSSL
[250 / 664] CCryptoBoringSSL
[253 / 664] CCryptoBoringSSL
[254 / 664] CCryptoBoringSSL
[256 / 664] CCryptoBoringSSL
[259 / 664] CCryptoBoringSSL
[260 / 664] CCryptoBoringSSL
[261 / 664] CCryptoBoringSSL
[264 / 664] CCryptoBoringSSL
[269 / 664] CCryptoBoringSSL
[270 / 664] CCryptoBoringSSL
[273 / 664] CCryptoBoringSSL
[276 / 664] CCryptoBoringSSL
[278 / 664] CCryptoBoringSSL
[284 / 664] CCryptoBoringSSL
[285 / 664] CCryptoBoringSSL
[287 / 664] CCryptoBoringSSL
[291 / 664] CCryptoBoringSSL
[292 / 664] CCryptoBoringSSL
[294 / 664] CCryptoBoringSSL
[295 / 664] CCryptoBoringSSL
[305 / 664] CCryptoBoringSSL
[312 / 664] CCryptoBoringSSL
[326 / 664] CCryptoBoringSSL
[332 / 664] CCryptoBoringSSL
[334 / 664] CCryptoBoringSSL
[340 / 664] CCryptoBoringSSL
[341 / 664] CCryptoBoringSSL
[342 / 664] CCryptoBoringSSL
[345 / 664] CCryptoBoringSSL
[348 / 664] CCryptoBoringSSL
[353 / 664] CCryptoBoringSSL
[355 / 664] CCryptoBoringSSL
[357 / 664] CCryptoBoringSSL
[360 / 664] CCryptoBoringSSL
[364 / 664] CCryptoBoringSSL
[367 / 664] CCryptoBoringSSL
[368 / 664] CCryptoBoringSSL
[371 / 664] CCryptoBoringSSL
[374 / 664] CCryptoBoringSSL
[375 / 664] CCryptoBoringSSL
[380 / 664] CCryptoBoringSSL
[387 / 664] CCryptoBoringSSL
[390 / 664] CCryptoBoringSSL
[392 / 664] CCryptoBoringSSL
[397 / 664] CCryptoBoringSSL
[399 / 664] CCryptoBoringSSL
[401 / 664] CCryptoBoringSSL
[405 / 664] CCryptoBoringSSL
[406 / 664] CCryptoBoringSSL
[412 / 664] CCryptoBoringSSL
[420 / 664] CCryptoBoringSSL
[427 / 664] CCryptoBoringSSL
[429 / 664] CCryptoBoringSSL
[434 / 664] CCryptoBoringSSL
[439 / 664] CCryptoBoringSSL
[440 / 664] CCryptoBoringSSL
[442 / 664] CCryptoBoringSSL
[444 / 664] CCryptoBoringSSL
[448 / 664] CCryptoBoringSSL
[451 / 664] CCryptoBoringSSL
[454 / 664] CCryptoBoringSSL
[455 / 664] CCryptoBoringSSL
[458 / 664] CCryptoBoringSSL
[461 / 664] CCryptoBoringSSL
[462 / 664] CCryptoBoringSSL
[466 / 664] CCryptoBoringSSL
[471 / 664] CCryptoBoringSSL
[474 / 664] CCryptoBoringSSL
[475 / 664] CCryptoBoringSSL
[481 / 664] CCryptoBoringSSL
[483 / 664] CCryptoBoringSSL
[495 / 664] CCryptoBoringSSL
[501 / 664] CCryptoBoringSSL
[507 / 664] CCryptoBoringSSL
[512 / 664] CCryptoBoringSSL
[514 / 664] CCryptoBoringSSL
[519 / 664] CCryptoBoringSSL
[527 / 664] CCryptoBoringSSL
[535 / 664] CCryptoBoringSSL
[544 / 664] CCryptoBoringSSL
[549 / 664] CCryptoBoringSSL
[551 / 664] CCryptoBoringSSL
[552 / 664] CCryptoBoringSSL
[555 / 664] CCryptoBoringSSL
[558 / 664] CCryptoBoringSSL
[563 / 664] OrderedCollections
[565 / 664] OrderedCollections
[566 / 664] CCryptoBoringSSL
[568 / 664] OrderedCollections
[569 / 664] OrderedCollections
[570 / 664] Jinja
[577 / 666]
[581 / 684] Crypto
[583 / 684] Jinja
[584 / 684] Jinja
[584 / 684] OrderedCollections
[587 / 685] Jinja
[593 / 685] OrderedCollections
[594 / 685] Jinja-product
[595 / 685] Jinja-product
[596 / 685] Crypto
[598 / 685] Crypto
[604 / 685] Crypto
[605 / 685] Crypto-product
[607 / 686] Jinja
[609 / 686] Crypto-product
[612 / 687] HuggingFace
[615 / 696] HuggingFace
[617 / 696] HuggingFace
[618 / 696] HuggingFace
[619 / 696] HuggingFace
[620 / 697] HuggingFace
[622 / 697] HuggingFace
[623 / 697] Crypto
[627 / 697] CryptoBoringWrapper
[628 / 697] HuggingFace
[639 / 705] Hub
[640 / 705] Hub
[641 / 705] Hub
[650 / 715] Tokenizers
[651 / 715] Tokenizers
[652 / 715] Tokenizers
[653 / 715] Tokenizers
[654 / 715] Tokenizers
[657 / 715] Tokenizers
[661 / 715] Tokenizers
[662 / 716] CoreMLLLM
[666 / 725] CoreMLLLM
[666 / 725] HuggingFace
error: SwiftCompile normal x86_64 /host/spi-builder-workspace/Sources/CoreMLLLM/CrossVocabDraft.swift failed with a nonzero exit code. Command line: cd /host
builtin-SwiftPerFileCompile CrossVocabDraft.swift
[668 / 726] HuggingFace
error: SwiftCompile normal x86_64 /host/spi-builder-workspace/Sources/CoreMLLLM/CrossVocabSpeculativeEngine.swift failed with a nonzero exit code. Command line: cd /host
builtin-SwiftPerFileCompile CrossVocabSpeculativeEngine.swift
error: SwiftCompile normal x86_64 /host/spi-builder-workspace/Sources/CoreMLLLM/DrafterUnion.swift failed with a nonzero exit code. Command line: cd /host
builtin-SwiftPerFileCompile DrafterUnion.swift
error: SwiftCompile normal x86_64 /host/spi-builder-workspace/Sources/CoreMLLLM/EmbeddingLookup.swift failed with a nonzero exit code. Command line: cd /host
builtin-SwiftPerFileCompile EmbeddingLookup.swift
error: SwiftCompile normal x86_64 /host/spi-builder-workspace/Sources/CoreMLLLM/Gemma3BundleDownloader.swift failed with a nonzero exit code. Command line: cd /host
builtin-SwiftPerFileCompile Gemma3BundleDownloader.swift
/host/spi-builder-workspace/Sources/CoreMLLLM/AudioProcessor.swift:1:8: [1;31merror: [1;39mno such module 'Accelerate'[0;0m
[0;36m1 |[0;0m import Accelerate
[0;36m|[0;0m `- [1;31merror: [1;39mno such module 'Accelerate'[0;0m
[0;36m2 |[0;0m import CoreML
[0;36m3 |[0;0m import Foundation
Failed frontend command:
/usr/bin/swift-frontend -frontend -c /host/spi-builder-workspace/Sources/CoreMLLLM/AudioProcessor.swift /host/spi-builder-workspace/Sources/CoreMLLLM/ChunkedEngine.swift /host/spi-builder-workspace/Sources/CoreMLLLM/ComputePlanAudit.swift /host/spi-builder-workspace/Sources/CoreMLLLM/ComputePreferenceLoader.swift /host/spi-builder-workspace/Sources/CoreMLLLM/CoreMLLLM.swift -primary-file /host/spi-builder-workspace/Sources/CoreMLLLM/CrossVocabDraft.swift -primary-file /host/spi-builder-workspace/Sources/CoreMLLLM/CrossVocabSpeculativeEngine.swift -primary-file /host/spi-builder-workspace/Sources/CoreMLLLM/DrafterUnion.swift -primary-file /host/spi-builder-workspace/Sources/CoreMLLLM/EmbeddingLookup.swift -primary-file /host/spi-builder-workspace/Sources/CoreMLLLM/Gemma3BundleDownloader.swift /host/spi-builder-workspace/Sources/CoreMLLLM/Gemma3EmbeddingGemma.swift /host/spi-builder-workspace/Sources/CoreMLLLM/Gemma3FunctionGemma.swift /host/spi-builder-workspace/Sources/CoreMLLLM/Gemma4StatefulEngine.swift /host/spi-builder-workspace/Sources/CoreMLLLM/Gemma4StatefulMultimodalEngine.swift /host/spi-builder-workspace/Sources/CoreMLLLM/ImageProcessor.swift /host/spi-builder-workspace/Sources/CoreMLLLM/LookaheadEngine.swift /host/spi-builder-workspace/Sources/CoreMLLLM/MirrorSpeculativeLoop.swift /host/spi-builder-workspace/Sources/CoreMLLLM/ModelConfig.swift /host/spi-builder-workspace/Sources/CoreMLLLM/ModelDownloader.swift /host/spi-builder-workspace/Sources/CoreMLLLM/MtpDraftSource.swift /host/spi-builder-workspace/Sources/CoreMLLLM/MtpSpeculativeEngine.swift /host/spi-builder-workspace/Sources/CoreMLLLM/PrefixCache.swift /host/spi-builder-workspace/Sources/CoreMLLLM/PrefixKVCache.swift /host/spi-builder-workspace/Sources/CoreMLLLM/PromptLookupDraft.swift /host/spi-builder-workspace/Sources/CoreMLLLM/PromptLookupLoop.swift /host/spi-builder-workspace/Sources/CoreMLLLM/Qwen35Generator.swift /host/spi-builder-workspace/Sources/CoreMLLLM/Qwen35MLKVGenerator.swift /host/spi-builder-workspace/Sources/CoreMLLLM/Qwen3VL2BGenerator.swift /host/spi-builder-workspace/Sources/CoreMLLLM/Qwen3VL2BStatefulGenerator.swift /host/spi-builder-workspace/Sources/CoreMLLLM/Qwen3VL2BVisionEncoder.swift /host/spi-builder-workspace/Sources/CoreMLLLM/SpecProfile.swift /host/spi-builder-workspace/Sources/CoreMLLLM/SpeculativeLoop.swift /host/spi-builder-workspace/Sources/CoreMLLLM/SuffixSpeculativeEngine.swift /host/spi-builder-workspace/Sources/CoreMLLLM/SuffixTree.swift /host/spi-builder-workspace/Sources/CoreMLLLM/VideoProcessor.swift -supplementary-output-file-map /host/spi-builder-workspace/.build/out/Intermediates.noindex/CoreMLLLM.build/Debug-linux-x86_64/CoreMLLLM-t.build/Objects-normal/x86_64/supplementaryOutputs-29 -target x86_64-unknown-linux-gnu -disable-objc-interop -I /host/spi-builder-workspace/.build/out/Products/Debug-linux-x86_64 -module-cache-path /host/spi-builder-workspace/.build/out/ModuleCache.noindex -color-diagnostics -Xcc -fcolor-diagnostics -enable-testing -g -debug-info-format\=dwarf -dwarf-version\=4 -swift-version 5 -Onone -D SWIFT_PACKAGE -D DEBUG -D SWIFT_MODULE_RESOURCE_BUNDLE_UNAVAILABLE -D Xcode -serialize-debugging-options -enable-experimental-feature DebugDescriptionMacro -empty-abi-descriptor -external-plugin-path /usr/lib/swift/host/plugins/testing\#/usr/bin/swift-plugin-server -validate-clang-modules-once -clang-build-session-file /host/spi-builder-workspace/.build/out/ModuleCache.noindex/Session.modulevalidation -Xcc -working-directory -Xcc /host -enable-anonymous-context-mangled-names -file-compilation-dir /host -Xcc -fmodule-map-file\=/host/spi-builder-workspace/.build/checkouts/swift-crypto/Sources/CXKCPShims/include/module.modulemap -Xcc -fmodule-map-file\=/host/spi-builder-workspace/.build/checkouts/swift-crypto/Sources/CXKCP/include/module.modulemap -Xcc -fmodule-map-file\=/host/spi-builder-workspace/.build/checkouts/swift-crypto/Sources/CCryptoBoringSSLShims/include/module.modulemap -Xcc -fmodule-map-file\=/host/spi-builder-workspace/.build/checkouts/swift-crypto/Sources/CCryptoBoringSSL/include/module.modulemap -Xcc -fmodule-map-file\=/host/spi-builder-workspace/.build/out/Intermediates.noindex/GeneratedModuleMaps-linux-x86_64/yyjson.modulemap -Xcc -fno-omit-frame-pointer -Xcc -D_LIBCPP_HARDENING_MODE\=_LIBCPP_HARDENING_MODE_DEBUG -Xcc -fmodules-prune-interval\=86400 -Xcc -fmodules-prune-after\=345600 -Xcc -I/host/spi-builder-workspace/.build/checkouts/swift-crypto/Sources/CXKCPShims/include -Xcc -I/host/spi-builder-workspace/.build/checkouts/swift-crypto/Sources/CXKCP/include -Xcc -I/host/spi-builder-workspace/.build/checkouts/swift-crypto/Sources/CCryptoBoringSSLShims/include -Xcc -I/host/spi-builder-workspace/.build/checkouts/swift-crypto/Sources/CCryptoBoringSSL/include -Xcc -I/host/spi-builder-workspace/.build/checkouts/yyjson/src -Xcc -I/host/spi-builder-workspace/.build/out/Products/Debug-linux-x86_64/include -Xcc -I/host/spi-builder-workspace/.build/out/Intermediates.noindex/CoreMLLLM.build/Debug-linux-x86_64/CoreMLLLM-t.build/DerivedSources-normal/x86_64 -Xcc -I/host/spi-builder-workspace/.build/out/Intermediates.noindex/CoreMLLLM.build/Debug-linux-x86_64/CoreMLLLM-t.build/DerivedSources/x86_64 -Xcc -I/host/spi-builder-workspace/.build/out/Intermediates.noindex/CoreMLLLM.build/Debug-linux-x86_64/CoreMLLLM-t.build/DerivedSources -Xcc -DSWIFT_PACKAGE -Xcc -DDEBUG\=1 -no-auto-bridging-header-chaining -module-name CoreMLLLM -package-name spi_builder_workspace -const-gather-protocols-file /host/spi-builder-workspace/.build/out/Intermediates.noindex/CoreMLLLM.build/Debug-linux-x86_64/CoreMLLLM-t.build/Objects-normal/x86_64/CoreMLLLM_const_extract_protocols.json -in-process-plugin-server-path /usr/lib/swift/host/libSwiftInProcPluginServer.so -plugin-path /usr/lib/swift/host/plugins -plugin-path /usr/local/lib/swift/host/plugins -parse-as-library -o /host/spi-builder-workspace/.build/out/Intermediates.noindex/CoreMLLLM.build/Debug-linux-x86_64/CoreMLLLM-t.build/Objects-normal/x86_64/CrossVocabDraft.o -o /host/spi-builder-workspace/.build/out/Intermediates.noindex/CoreMLLLM.build/Debug-linux-x86_64/CoreMLLLM-t.build/Objects-normal/x86_64/CrossVocabSpeculativeEngine.o -o /host/spi-builder-workspace/.build/out/Intermediates.noindex/CoreMLLLM.build/Debug-linux-x86_64/CoreMLLLM-t.build/Objects-normal/x86_64/DrafterUnion.o -o /host/spi-builder-workspace/.build/out/Intermediates.noindex/CoreMLLLM.build/Debug-linux-x86_64/CoreMLLLM-t.build/Objects-normal/x86_64/EmbeddingLookup.o -o /host/spi-builder-workspace/.build/out/Intermediates.noindex/CoreMLLLM.build/Debug-linux-x86_64/CoreMLLLM-t.build/Objects-normal/x86_64/Gemma3BundleDownloader.o -index-unit-output-path /CoreMLLLM.build/Debug-linux-x86_64/CoreMLLLM-t.build/Objects-normal/x86_64/CrossVocabDraft.o -index-unit-output-path /CoreMLLLM.build/Debug-linux-x86_64/CoreMLLLM-t.build/Objects-normal/x86_64/CrossVocabSpeculativeEngine.o -index-unit-output-path /CoreMLLLM.build/Debug-linux-x86_64/CoreMLLLM-t.build/Objects-normal/x86_64/DrafterUnion.o -index-unit-output-path /CoreMLLLM.build/Debug-linux-x86_64/CoreMLLLM-t.build/Objects-normal/x86_64/EmbeddingLookup.o -index-unit-output-path /CoreMLLLM.build/Debug-linux-x86_64/CoreMLLLM-t.build/Objects-normal/x86_64/Gemma3BundleDownloader.o -index-store-path /host/spi-builder-workspace/.build/out -index-system-modules
error: Build failed
BUILD FAILURE 6.4 linux