LinuxCommandLibrary

sfdk

Manage Salesforce DX projects and metadata

TLDR

Setup the current environment for building for SailfishOS with a specific versions and architecture target

$ sfdk config target=SailfishOS-[5.0.0.62]-[aarch64]
copy

Initialize the current directory as the build directory
$ sfdk build-init
copy

Execute build steps of the RPM SPEC file for a specific project
$ sfdk -C [path/to/project] build
copy

List repositories in the SailfishOS 5.0.0.62 armv7hl build target
$ sfdk -c 'target=SailfishOS-5.0.0.62-armv7hl' build-shell --maintain ssu lr
copy

Deploy the package to the emulator
$ sfdk config device="[Sailfish OS Emulator 5.0.0.62]"; sfdk deploy --sdk
copy

Display help
$ sfdk --help
copy

Display help for specific topic (building, testing, maintaining, ide, all)
$ sfdk --help-[topic]
copy

Display version
$ sfdk --version
copy

SYNOPSIS

sfdk [global-options] <command> [<command-options>]

PARAMETERS

--help, -h
    Display help for sfdk or specific command

--version
    Print sfdk version information

--color={auto|on|off}
    Control colored output

--bind-all-interfaces
    Bind server to all network interfaces

--config <file>
    Load additional config file

--device-config <file>
    Load device-specific config

--sdk-config <file>
    Load SDK config file

--user-config <dir>
    Set user config directory

--ssh-config <file>
    Use custom SSH config

--device <target>
    Specify default target device

--tunnel
    Enable SSH port tunneling

--tunnel-device <tunnel>
    Specify tunnel device

--no-tunneling
    Disable automatic SSH tunneling

--devel
    Enable development mode (skip some checks)

DESCRIPTION

The sfdk command is the primary CLI interface for the Sailfish OS SDK, enabling developers to build, deploy, manage, and debug native applications for Sailfish OS devices and emulators.

It handles RPM package creation, target device configuration, SSH-based deployment with optional tunneling, file transfer, and remote execution. Sfdk supports multiple targets like physical devices, VirtualBox VMs, and QEMU emulators.

Key workflows include initializing projects, building RPMs with sfdk build, deploying via sfdk deploy, and running apps with sfdk run. It integrates with rpm tools for package manipulation and provides utilities for QML projects.

Sfdk streamlines cross-compilation using SDK engines (scratchbox2-based), manages repositories, and supports devel mode for faster iterations. Primarily used for Sailfish OS and derivatives like SailfishOS community ports.

CAVEATS

Requires Sailfish SDK installation and configured targets. Network access needed for device communication. Not for general Linux use; Sailfish-specific.

MAIN COMMANDS

build: Build RPMs
deploy: Deploy to target
device: List/add targets
run: Execute on device
engine: Manage SDK engines

SETUP EXAMPLE

sfdk target add --from-line "SFOS_4.4.0.72 sailfishos:4.4.0.72"
sfdk build
sfdk deploy

HISTORY

Introduced in Sailfish SDK 2.0 (2016) as successor to mb2 and scratchbox tools. Evolved with SDK releases; major updates in 3.0+ for better device support and RPM v4.

SEE ALSO

mb2(1), sb2(1), rpmbuild(8), ssh(1)

Copied to clipboard