├── .github └── workflows │ ├── publish.yml │ └── tests.yml ├── .gitignore ├── README.md └── gerbera.rb /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | name: brew pr-pull 2 | on: 3 | pull_request_target: 4 | types: 5 | - labeled 6 | jobs: 7 | pr-pull: 8 | if: contains(github.event.pull_request.labels.*.name, 'pr-pull') 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Set up Homebrew 12 | uses: Homebrew/actions/setup-homebrew@master 13 | 14 | - name: Set up git 15 | uses: Homebrew/actions/git-user-config@master 16 | 17 | - name: Pull bottles 18 | env: 19 | HOMEBREW_GITHUB_API_TOKEN: ${{ github.token }} 20 | PULL_REQUEST: ${{ github.event.pull_request.number }} 21 | run: brew pr-pull --debug --tap="$GITHUB_REPOSITORY" "$PULL_REQUEST" 22 | 23 | - name: Push commits 24 | uses: Homebrew/actions/git-try-push@master 25 | with: 26 | token: ${{ github.token }} 27 | branch: main 28 | 29 | - name: Delete branch 30 | if: github.event.pull_request.head.repo.fork == false 31 | env: 32 | BRANCH: ${{ github.event.pull_request.head.ref }} 33 | run: git push --delete origin "$BRANCH" 34 | -------------------------------------------------------------------------------- /.github/workflows/tests.yml: -------------------------------------------------------------------------------- 1 | name: brew test-bot 2 | on: 3 | push: 4 | branches: main 5 | pull_request: 6 | jobs: 7 | test-bot: 8 | runs-on: macOS-latest 9 | 10 | steps: 11 | - name: Set up Homebrew 12 | id: set-up-homebrew 13 | uses: Homebrew/actions/setup-homebrew@master 14 | 15 | - name: Cache Homebrew Bundler RubyGems 16 | id: cache 17 | uses: actions/cache@v4 18 | with: 19 | path: ${{ steps.set-up-homebrew.outputs.gems-path }} 20 | key: ${{ runner.os }}-rubygems-${{ steps.set-up-homebrew.outputs.gems-hash }} 21 | restore-keys: ${{ runner.os }}-rubygems- 22 | 23 | - name: Install Homebrew Bundler RubyGems 24 | if: steps.cache.outputs.cache-hit != 'true' 25 | run: brew install-bundler-gems 26 | 27 | - run: brew test-bot --only-cleanup-before 28 | 29 | - run: brew test-bot --only-setup 30 | 31 | - run: brew test-bot --only-tap-syntax 32 | 33 | - run: brew test-bot --only-formulae 34 | if: github.event_name == 'pull_request' 35 | 36 | - name: Upload bottles as artifact 37 | if: always() && github.event_name == 'pull_request' 38 | uses: actions/upload-artifact@main 39 | with: 40 | name: bottles 41 | path: "*.bottle.*" 42 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.gem 2 | *.rbc 3 | /.config 4 | /coverage/ 5 | /InstalledFiles 6 | /pkg/ 7 | /spec/reports/ 8 | /spec/examples.txt 9 | /test/tmp/ 10 | /test/version_tmp/ 11 | /tmp/ 12 | .idea 13 | 14 | # Used by dotenv library to load environment variables. 15 | # .env 16 | 17 | ## Specific to RubyMotion: 18 | .dat* 19 | .repl_history 20 | build/ 21 | *.bridgesupport 22 | build-iPhoneOS/ 23 | build-iPhoneSimulator/ 24 | 25 | ## Specific to RubyMotion (use of CocoaPods): 26 | # 27 | # We recommend against adding the Pods directory to your .gitignore. However 28 | # you should judge for yourself, the pros and cons are mentioned at: 29 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 30 | # 31 | # vendor/Pods/ 32 | 33 | ## Documentation cache and generated files: 34 | /.yardoc/ 35 | /_yardoc/ 36 | /doc/ 37 | /rdoc/ 38 | 39 | ## Environment normalization: 40 | /.bundle/ 41 | /vendor/bundle 42 | /lib/bundler/man/ 43 | 44 | # for a library or gem, you might want to ignore these files since the code is 45 | # intended to run in multiple environments; otherwise, check them in: 46 | # Gemfile.lock 47 | # .ruby-version 48 | # .ruby-gemset 49 | 50 | # unless supporting rvm < 1.11.0 or doing something fancy, ignore this: 51 | .rvmrc 52 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Homebrew Tap for Gerbera Media Server 2 | 3 | [![Build Status](https://travis-ci.org/gerbera/homebrew-gerbera.svg?branch=master)](https://travis-ci.org/gerbera/homebrew-gerbera) 4 | 5 | This repository holds the relevant homebrew formulas to install the Gerbera Media Server. 6 | 7 | ## Using this Homebrew Tap 8 | 9 | Use the documentation to establish a new Tap: 10 | 11 | [https://docs.brew.sh/Taps](https://docs.brew.sh/Taps) 12 | 13 | ### Add the Gerbera Tap 14 | ``` 15 | $ brew tap gerbera/homebrew-gerbera 16 | ``` 17 | 18 | Check that you have the `gerbera/gerbera` tap. 19 | 20 | ``` 21 | $ brew tap 22 | ==> Auto-updated Homebrew! 23 | caskformula/caskformula 24 | gerbera/gerbera 25 | homebrew/cask 26 | homebrew/core 27 | ``` 28 | 29 | ## Install and launch Gerbera 30 | 31 | ``` 32 | brew install gerbera 33 | mkdir ~/.config/gerbera 34 | gerbera --create-config | sed 's/accounts enabled="no"/accounts enable="yes"/' > ~/.config/gerbera/config.xml 35 | gerbera & 36 | sleep 5 ; open -a Safari http://0.0.0.0:49152/ 37 | ``` 38 | 39 | Use gerbera/gerbera for login and password to connect. 40 | -------------------------------------------------------------------------------- /gerbera.rb: -------------------------------------------------------------------------------- 1 | class Gerbera < Formula 2 | desc "UPnP Media Server for 2025" 3 | homepage "https://gerbera.io" 4 | url "https://github.com/gerbera/gerbera/archive/refs/tags/v3.0.0.tar.gz" 5 | sha256 "d7934a2318f45330deb2ed1b589bd37b49f42f7929a9d11650349d17c998f920" 6 | 7 | depends_on "cmake" => :build 8 | depends_on "pkg-config" => :build 9 | depends_on "duktape" 10 | depends_on "exiv2" 11 | depends_on "ffmpeg" 12 | depends_on "ffmpegthumbnailer" 13 | depends_on "fmt" 14 | depends_on "icu4c" 15 | depends_on "jsoncpp" 16 | depends_on "libebml" 17 | depends_on "libexif" 18 | depends_on "libmagic" 19 | depends_on "libmatroska" 20 | depends_on "libupnp" 21 | depends_on "lzlib" 22 | depends_on "ossp-uuid" 23 | depends_on "pugixml" 24 | depends_on "spdlog" 25 | depends_on "taglib" 26 | depends_on "wavpack" 27 | 28 | def install 29 | mkdir "build" do 30 | grb_pkg_config_path = ENV["PKG_CONFIG_PATH"] 31 | grb_cmake_prefix_path = ENV["CMAKE_PREFIX_PATH"] 32 | ENV["CMAKE_PKG_CONFIG_PC_LIB_DIRS"] = "/opt/homebrew/Cellar/libupnp/lib/pkgconfig:#{grb_pkg_config_path}" 33 | ENV["PKG_CONFIG_PATH"] = "/opt/homebrew/Cellar/libupnp/lib/pkgconfig:#{grb_pkg_config_path}" 34 | ENV["CMAKE_PREFIX_PATH"] = "/opt/homebrew/Cellar/libupnp:#{grb_cmake_prefix_path}" 35 | 36 | args = std_cmake_args 37 | args << "--preset=macos" 38 | args << "-DWITH_ICU=YES" 39 | args << "-DWITH_TESTS=NO" 40 | args << "-DCMAKE_FIND_FRAMEWORK=LAST" 41 | args << "-DCMAKE_CXX_FLAGS=\"-stdlib=libc++\"" 42 | args << "-DCMAKE_CXX_COMPILER=/usr/bin/clang++" 43 | args << "-DCMAKE_INSTALL_PREFIX:PATH=#{prefix}" 44 | 45 | system "cmake", "..", *args 46 | system "make", "install" 47 | end 48 | end 49 | 50 | test do 51 | assert_match(/Gerbera UPnP Server/, shell_output("#{bin}/gerbera --compile-info").strip) 52 | end 53 | end 54 | --------------------------------------------------------------------------------