All Projects → billziss-gh → Cgofuse

billziss-gh / Cgofuse

Licence: mit
Cross-platform FUSE library for Go - Works on Windows, macOS, Linux, FreeBSD, NetBSD, OpenBSD

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects
cgo
20 projects

Projects that are alternatives of or similar to Cgofuse

Upcount
Invoicing for freelancers & small businesses
Stars: ✭ 230 (-6.12%)
Mutual labels:  cross-platform
Hprose Html5
Hprose is a cross-language RPC. This project is Hprose 2.0 Client for HTML5
Stars: ✭ 237 (-3.27%)
Mutual labels:  cross-platform
Rsock
The best companion of kcptun
Stars: ✭ 242 (-1.22%)
Mutual labels:  cross-platform
Mason
Cross platform package manager for C/C++ apps
Stars: ✭ 230 (-6.12%)
Mutual labels:  cross-platform
Qhotkey
A global shortcut/hotkey for Desktop Qt-Applications
Stars: ✭ 234 (-4.49%)
Mutual labels:  cross-platform
Gdx Rpg
java & libgdx制作的RPG游戏! an RPG by java and LibGDX
Stars: ✭ 239 (-2.45%)
Mutual labels:  cross-platform
Taro Demo
github上能找到的taro适配Android、iOS、微信小程序、H5最佳实践项目脚手架
Stars: ✭ 229 (-6.53%)
Mutual labels:  cross-platform
Pillar Valley
👾A cross-platform video game built with Expo, three.js, and Firebase! 🎮🕹
Stars: ✭ 242 (-1.22%)
Mutual labels:  cross-platform
Dialog
Simple cross-platform dialog API for go-lang
Stars: ✭ 237 (-3.27%)
Mutual labels:  cross-platform
Renamer
Rename files in bulk.
Stars: ✭ 240 (-2.04%)
Mutual labels:  cross-platform
Forge
F# CLI tool for project, file, and solution management
Stars: ✭ 233 (-4.9%)
Mutual labels:  cross-platform
Mqttclient
A high-performance, high-stability, cross-platform MQTT client, developed based on the socket API, can be used on embedded devices (FreeRTOS / LiteOS / RT-Thread / TencentOS tiny), Linux, Windows, Mac, with a very concise The API interface realizes the quality of service of QOS2 with very few resources, and seamlessly connects the mbedtls encryption library.
Stars: ✭ 234 (-4.49%)
Mutual labels:  cross-platform
Classicuo
ClassicUO - an open source implementation of the Ultima Online Classic Client.
Stars: ✭ 239 (-2.45%)
Mutual labels:  cross-platform
Reactivision
computer vision framework for tangible interactive surfaces
Stars: ✭ 231 (-5.71%)
Mutual labels:  cross-platform
Ninfs
FUSE filesystem Python scripts for Nintendo console files
Stars: ✭ 241 (-1.63%)
Mutual labels:  fuse
Titanium mobile
🚀 Native iOS- and Android- Apps with JavaScript
Stars: ✭ 2,553 (+942.04%)
Mutual labels:  cross-platform
Sparsebundlefs
FUSE filesystem for reading macOS sparse-bundle disk images
Stars: ✭ 238 (-2.86%)
Mutual labels:  fuse
Ecere Sdk
Ecere SDK (eC Language, Ecere IDE, Cross platform GUI, graphics, and more) — http://ec-lang.org —
Stars: ✭ 244 (-0.41%)
Mutual labels:  cross-platform
Asciimatics
A cross platform package to do curses-like operations, plus higher level APIs and widgets to create text UIs and ASCII art animations
Stars: ✭ 2,869 (+1071.02%)
Mutual labels:  cross-platform
Mitype
Typing speed test in terminal
Stars: ✭ 241 (-1.63%)
Mutual labels:  cross-platform

Cross-platform FUSE library for Go

Cgofuse is a cross-platform FUSE library for Go. It is supported on multiple platforms and can be ported to any platform that has a FUSE implementation. It has cgo and !cgo ("nocgo") variants depending on the platform.

Windows
AppVeyor
macOS
Travis CI
Linux
Travis CI
FreeBSD
Cirrus CI
NetBSD*
no CI
OpenBSD*
no CI
XGO
DockerHub
cgo
!cgo

* NetBSD and OpenBSD support is experimental. There are known issues that stem from the differences in the NetBSD librefuse and OpenBSD libfuse implementations from the reference libfuse implementation

How to build

Windows cgo

  • Prerequisites: WinFsp, gcc (e.g. from Mingw-builds)
  • Build:
    > cd cgofuse
    > set CPATH=C:\Program Files (x86)\WinFsp\inc\fuse
    > go install -v ./fuse ./examples/memfs
    

Windows !cgo

  • Prerequisites: WinFsp
  • Build:
    > cd cgofuse
    > set CGO_ENABLED=0
    > go install -v ./fuse ./examples/memfs
    

macOS

Linux

  • Prerequisites: libfuse-dev, gcc
  • Build:
    $ cd cgofuse
    $ go install -v ./fuse ./examples/memfs ./examples/passthrough
    

FreeBSD

  • Prerequisites: fusefs-libs
  • Build:
    $ cd cgofuse
    $ go install -v ./fuse ./examples/memfs ./examples/passthrough
    
    # You may also need the following in order to run FUSE file systems.
    # Commands must be run as root.
    $ vi /boot/loader.conf                      # add: fuse_load="YES"
    $ sysctl vfs.usermount=1                    # allow user mounts
    $ pw usermod USERNAME -G operator           # allow user to open /dev/fuse
    

NetBSD

  • Prerequisites: NONE
  • Build:
    $ cd cgofuse
    $ go install -v ./fuse ./examples/memfs ./examples/passthrough
    
    # You may also need the following in order to run FUSE file systems.
    # Commands must be run as root.
    $ chmod go+rw /dev/puffs
    $ sysctl -w vfs.generic.usermount=1
    

OpenBSD

  • Prerequisites: NONE
  • Build:
    $ cd cgofuse
    $ go install -v ./fuse ./examples/memfs ./examples/passthrough
    
  • NOTE: OpenBSD 6 removed the kern.usermount option, which allowed non-root users to mount file systems [link]. Therefore you must be root in order to use FUSE and cgofuse.

How to cross-compile your project using xgo

You can easily cross-compile your project using xgo and the billziss/xgo-cgofuse docker image.

  • Prerequisites: docker, xgo
  • Build:
    $ docker pull billziss/xgo-cgofuse
    $ go get -u github.com/karalabe/xgo
    $ cd YOUR-PROJECT-THAT-USES-CGOFUSE
    $ xgo --image=billziss/xgo-cgofuse \
        --targets=darwin/386,darwin/amd64,linux/386,linux/amd64,windows/386,windows/amd64 .
    

Cross-compilation only works for Windows, macOS and Linux.

How to use

User mode file systems are expected to implement fuse.FileSystemInterface. To make implementation simpler a file system can embed ("inherit") a fuse.FileSystemBase which provides default implementations for all operations. To mount a file system one must instantiate a fuse.FileSystemHost using fuse.NewFileSystemHost.

The full documentation is available at GoDoc.org: package fuse

There are currently three example file systems:

  • Hellofs is an extremely simple file system. Runs on all OS'es.
  • Memfs is an in memory file system. Runs on all OS'es.
  • Passthrough is a file system that passes all operations to the underlying file system. Runs on all OS'es except Windows.

How it is tested

Cgofuse is regularly built and tested on Travis CI, AppVeyor and DockerHub. The following software is being used to test cgofuse.

Windows (cgo and !cgo)

macOS

Linux

FreeBSD

Contributors

  • Bill Zissimopoulos <billziss at navimatics.com>
  • Nick Craig-Wood <nick at craig-wood.com>
  • Fredrik Medley <fredrik.medley at veoneer.com>
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].