From c10c1974a0442aa6f45c0e9bb7f854435671bc6f Mon Sep 17 00:00:00 2001 From: Konstantin Dmitriev Date: Jan 11 2019 09:43:31 +0000 Subject: OSX build: Fix missing icons --- diff --git a/1-setup-brew.sh b/1-setup-brew.sh index 9c61e36..aaf74a4 100755 --- a/1-setup-brew.sh +++ b/1-setup-brew.sh @@ -13,6 +13,11 @@ set -e +WORKDIR=`dirname "$0"` +pushd "${WORKDIR}" > /dev/null +WORKDIR=`pwd` +popd > /dev/null + PACKAGES="adwaita-icon-theme autoconf automake ccache libtool intltool imagemagick gettext pkg-config glibmm libxml++ cairo fftw pango mlt boost gtkmm3 sdl2 sdl2_mixer" export HOMEBREW_NO_AUTO_UPDATE=1 @@ -21,9 +26,8 @@ export HOMEBREW_NO_ANALYTICS=1 export OS=`uname -r | cut -d "." -f1` if [ $OS -lt 15 ]; then #For OSX < 10.11 - # Workaround to compile 'rust' (required by adwaita-icon-theme) on OSX < 10.11 - # https://github.com/rust-lang/rust/issues/51838#issuecomment-430804450 - ulimit -Hs 8192 + brew install "${WORKDIR}/autobuild/osx/librsvg-2.40.20.rb" + brew install "${WORKDIR}/autobuild/osx/adwaita-icon-theme.rb" fi for pkg in $PACKAGES; diff --git a/3-package-osx-dmg.sh b/3-package-osx-dmg.sh index ff8faba..3bef821 100755 --- a/3-package-osx-dmg.sh +++ b/3-package-osx-dmg.sh @@ -99,6 +99,19 @@ mkapp() cp -R "${MACPORTS}${PKG_PREFIX}/share/gir-1.0" "${APPCONTENTS}/share/" cp -R "${MACPORTS}${PKG_PREFIX}/share/locale" "${APPCONTENTS}/share/" + if [ -d "$MACPORTS/librsvg-2.40.20" ]; then + PKG_PREFIX="/librsvg-2.40.20" + elif [ -d "$MACPORTS/librsvg" ]; then + PKG_PREFIX="/librsvg" + else + PKG_PREFIX="" + fi + pushd "${MACPORTS}${PKG_PREFIX}/lib/gdk-pixbuf-2.0/2.10.0/loaders/" + for FILE in `ls -1 *.so`; do + "$SCRIPTPATH/autobuild/osx-relocate-binary.sh" "${MACPORTS}${PKG_PREFIX}/lib/gdk-pixbuf-2.0/2.10.0/loaders/$FILE" "$MACPORTS" "$APPCONTENTS" + done + popd + if [ -d "$MACPORTS/gtk+3" ]; then PKG_PREFIX="/gtk+3" else @@ -142,7 +155,7 @@ mkapp() else PKG_PREFIX="" fi - #cp -R "${MACPORTS}${PKG_PREFIX}/share/icons" "${APPCONTENTS}/share/" + cp -R "${MACPORTS}${PKG_PREFIX}/share/icons/Adwaita" "${APPCONTENTS}/share/icons/" if [ -d "$MACPORTS/cairo" ]; then PKG_PREFIX="/cairo" diff --git a/autobuild/osx/adwaita-icon-theme.rb b/autobuild/osx/adwaita-icon-theme.rb new file mode 100644 index 0000000..8ad4ad8 --- /dev/null +++ b/autobuild/osx/adwaita-icon-theme.rb @@ -0,0 +1,36 @@ +class AdwaitaIconTheme < Formula + desc "Icons for the GNOME project" + homepage "https://developer.gnome.org" + url "https://download.gnome.org/sources/adwaita-icon-theme/3.30/adwaita-icon-theme-3.30.1.tar.xz" + sha256 "6d752a2b1bc668483956d4485c39cad1642d9358e133ff689526e43674a4e1ce" + + bottle do + cellar :any_skip_relocation + sha256 "50a30cbc9017985d9ca2ff7285a0da47563dd3be313ee6fd406c172305bf0d7c" => :mojave + sha256 "11a39582ae7f7e34f0d9d3557e01553d967546b6cbb6c9913799352437c0dbbe" => :high_sierra + sha256 "11a39582ae7f7e34f0d9d3557e01553d967546b6cbb6c9913799352437c0dbbe" => :sierra + end + + depends_on "gettext" => :build + depends_on "gtk+3" => :build # for gtk3-update-icon-cache + depends_on "intltool" => :build + depends_on "pkg-config" => :build + depends_on "librsvg-2.40.20" + + def install + system "./configure", "--disable-dependency-tracking", + "--prefix=#{prefix}", + "GTK_UPDATE_ICON_CACHE=#{Formula["gtk+3"].opt_bin}/gtk3-update-icon-cache" + system "make", "install" + end + + test do + # This checks that a -symbolic png file generated from svg exists + # and that a file created late in the install process exists. + # Someone who understands GTK+3 could probably write better tests that + # check if GTK+3 can find the icons. + png = "weather-storm-symbolic.symbolic.png" + assert_predicate share/"icons/Adwaita/96x96/status/#{png}", :exist? + assert_predicate share/"icons/Adwaita/index.theme", :exist? + end +end diff --git a/autobuild/osx/librsvg-2.40.20.rb b/autobuild/osx/librsvg-2.40.20.rb new file mode 100644 index 0000000..c989443 --- /dev/null +++ b/autobuild/osx/librsvg-2.40.20.rb @@ -0,0 +1,98 @@ +class Librsvg24020 < Formula + desc "Library to render SVG files using Cairo" + homepage "https://live.gnome.org/LibRsvg" + url "https://download.gnome.org/sources/librsvg/2.40/librsvg-2.40.20.tar.xz" + sha256 "cff4dd3c3b78bfe99d8fcfad3b8ba1eee3289a0823c0e118d78106be6b84c92b" + + bottle do + sha256 "072c7a4450eee5154aa380ada8cd193ca37f81ff1d3eaeb21a7e80eae384392b" => :high_sierra + sha256 "a764af163564b1a20b4d85b8ce408cacd28e3dfdc369a31341edd788be34dde8" => :sierra + sha256 "2be12f4d27cd0b87cefcb526ad4af4dde9555fe67e64b2218d4d15d8a58e2615" => :el_capitan + end + + depends_on "pkg-config" => :build + depends_on "cairo" + depends_on "gdk-pixbuf" + depends_on "glib" + depends_on "libcroco" + depends_on "pango" + depends_on "gtk+3" => :optional + depends_on "gobject-introspection" + + def install + args = %W[ + --disable-dependency-tracking + --prefix=#{prefix} + --disable-Bsymbolic + --enable-tools=yes + --enable-pixbuf-loader=yes + --enable-introspection=yes + ] + + system "./configure", *args + + # disable updating gdk-pixbuf cache, we will do this manually in post_install + # https://github.com/Homebrew/homebrew/issues/40833 + inreplace "gdk-pixbuf-loader/Makefile", + "$(GDK_PIXBUF_QUERYLOADERS) > $(DESTDIR)$(gdk_pixbuf_cache_file) ;", + "" + + system "make", "install", + "gdk_pixbuf_binarydir=#{lib}/gdk-pixbuf-2.0/2.10.0/loaders", + "gdk_pixbuf_moduledir=#{lib}/gdk-pixbuf-2.0/2.10.0/loaders" + end + + def post_install + # librsvg is not aware GDK_PIXBUF_MODULEDIR must be set + # set GDK_PIXBUF_MODULEDIR and update loader cache + ENV["GDK_PIXBUF_MODULEDIR"] = "#{HOMEBREW_PREFIX}/lib/gdk-pixbuf-2.0/2.10.0/loaders" + system "#{Formula["gdk-pixbuf"].opt_bin}/gdk-pixbuf-query-loaders", "--update-cache" + end + + test do + (testpath/"test.c").write <<~EOS + #include + + int main(int argc, char *argv[]) { + RsvgHandle *handle = rsvg_handle_new(); + return 0; + } + EOS + cairo = Formula["cairo"] + fontconfig = Formula["fontconfig"] + freetype = Formula["freetype"] + gdk_pixbuf = Formula["gdk-pixbuf"] + gettext = Formula["gettext"] + glib = Formula["glib"] + libpng = Formula["libpng"] + pixman = Formula["pixman"] + flags = %W[ + -I#{cairo.opt_include}/cairo + -I#{fontconfig.opt_include} + -I#{freetype.opt_include}/freetype2 + -I#{gdk_pixbuf.opt_include}/gdk-pixbuf-2.0 + -I#{gettext.opt_include} + -I#{glib.opt_include}/glib-2.0 + -I#{glib.opt_lib}/glib-2.0/include + -I#{include}/librsvg-2.0 + -I#{libpng.opt_include}/libpng16 + -I#{pixman.opt_include}/pixman-1 + -D_REENTRANT + -L#{cairo.opt_lib} + -L#{gdk_pixbuf.opt_lib} + -L#{gettext.opt_lib} + -L#{glib.opt_lib} + -L#{lib} + -lcairo + -lgdk_pixbuf-2.0 + -lgio-2.0 + -lglib-2.0 + -lgobject-2.0 + -lintl + -lm + -lrsvg-2 + ] + system ENV.cc, "test.c", "-o", "test", *flags + system "./test" + end +end