From 62806df678933ec105fd699076db93b9557b43e4 Mon Sep 17 00:00:00 2001 From: midchildan Date: Sun, 18 Apr 2021 02:17:13 +0900 Subject: [PATCH] mikutter: 4.0.0 -> 4.1.4 (#119454) --- .../instant-messengers/mikutter/default.nix | 196 ++++++++++++------ .../mikutter/{ => deps}/Gemfile | 8 +- .../mikutter/{ => deps}/Gemfile.lock | 78 ++++--- .../mikutter/{ => deps}/gemset.nix | 152 +++++++------- .../mikutter/{ => deps}/plugin/gtk/Gemfile | 0 .../plugin/image_file_cache/Gemfile | 0 .../{ => deps}/plugin/photo_support/Gemfile | 0 .../mikutter/deps/plugin/uitranslator/Gemfile | 5 + .../mikutter/mikutter.desktop | 9 - .../mikutter/plugin/uitranslator/Gemfile | 6 - .../mikutter/test_plugin.rb | 10 + .../instant-messengers/mikutter/update.sh | 51 +++++ .../ruby-modules/gem-config/default.nix | 43 ++-- pkgs/top-level/all-packages.nix | 5 +- 14 files changed, 345 insertions(+), 218 deletions(-) rename pkgs/applications/networking/instant-messengers/mikutter/{ => deps}/Gemfile (84%) rename pkgs/applications/networking/instant-messengers/mikutter/{ => deps}/Gemfile.lock (59%) rename pkgs/applications/networking/instant-messengers/mikutter/{ => deps}/gemset.nix (74%) rename pkgs/applications/networking/instant-messengers/mikutter/{ => deps}/plugin/gtk/Gemfile (100%) rename pkgs/applications/networking/instant-messengers/mikutter/{ => deps}/plugin/image_file_cache/Gemfile (100%) rename pkgs/applications/networking/instant-messengers/mikutter/{ => deps}/plugin/photo_support/Gemfile (100%) create mode 100644 pkgs/applications/networking/instant-messengers/mikutter/deps/plugin/uitranslator/Gemfile delete mode 100644 pkgs/applications/networking/instant-messengers/mikutter/mikutter.desktop delete mode 100644 pkgs/applications/networking/instant-messengers/mikutter/plugin/uitranslator/Gemfile create mode 100644 pkgs/applications/networking/instant-messengers/mikutter/test_plugin.rb create mode 100755 pkgs/applications/networking/instant-messengers/mikutter/update.sh diff --git a/pkgs/applications/networking/instant-messengers/mikutter/default.nix b/pkgs/applications/networking/instant-messengers/mikutter/default.nix index be84342787d..111a3ed091e 100644 --- a/pkgs/applications/networking/instant-messengers/mikutter/default.nix +++ b/pkgs/applications/networking/instant-messengers/mikutter/default.nix @@ -1,82 +1,160 @@ -{ lib, stdenv, fetchurl -, bundlerEnv, ruby -, alsaUtils, libnotify, which, wrapGAppsHook, gtk2, atk, gobject-introspection +{ lib +, stdenv +, fetchurl +, bundlerEnv +, alsaUtils +, atk +, copyDesktopItems +, gobject-introspection +, gtk2 +, ruby +, libicns +, libnotify +, makeDesktopItem +, which +, wrapGAppsHook +, writeText }: -# how to update: -# find latest version at: http://mikutter.hachune.net/download#download -# run these commands: -# -# wget http://mikutter.hachune.net/bin/mikutter.4.0.0.tar.gz -# mkdir mikutter -# cd mikutter -# tar xvf ../mikutter.4.0.0.tar.gz -# find . -not -name Gemfile -exec rm {} \; -# find . -type d -exec rmdir -p --ignore-fail-on-non-empty {} \; -# cd .. -# mv mikutter/* . -# rm mikutter.4.0.0.tar.gz -# rm gemset.nix Gemfile.lock; nix-shell -p bundler bundix --run 'bundle lock && bundix' - -stdenv.mkDerivation rec { - pname = "mikutter"; - version = "4.0.0"; - - src = fetchurl { - url = "https://mikutter.hachune.net/bin/mikutter.${version}.tar.gz"; - sha256 = "0nx14vlp7p69m2vw0s6kbiyymsfq0r2jd4nm0v5c4xb9avkpgc8g"; +let + # NOTE: $out may have different values depending on context + mikutterPaths = rec { + optPrefixDir = "$out/opt/mikutter"; + appPrefixDir = "$out/Applications/mikutter.app/Contents"; + appBinDir = "${appPrefixDir}/MacOS"; + appResourceDir = "${appPrefixDir}/Resources"; + iconPath = "${optPrefixDir}/core/skin/data/icon.png"; }; - buildInputs = [ alsaUtils libnotify which gtk2 ruby atk gobject-introspection ]; - nativeBuildInputs = [ wrapGAppsHook ]; + gems = bundlerEnv { + name = "mikutter-gems"; # leave the version out to enable package reuse + gemdir = ./deps; + groups = [ "default" "plugin" ]; + inherit ruby; - unpackPhase = '' - mkdir source - cd source - unpackFile $src + # Avoid the following error: + # > `': uninitialized constant Moneta::Builder (NameError) + # + # Related: + # https://github.com/NixOS/nixpkgs/pull/76510 + # https://github.com/NixOS/nixpkgs/pull/76765 + # https://github.com/NixOS/nixpkgs/issues/83442 + # https://github.com/NixOS/nixpkgs/issues/106545 + copyGemFiles = true; + }; + + mkDesktopItem = { description }: + makeDesktopItem { + name = "mikutter"; + desktopName = "mikutter"; + exec = "mikutter"; + icon = "mikutter"; + categories = "Network;"; + comment = description; + extraDesktopEntries.Keywords = "Mastodon;"; + }; + + mkInfoPlist = { version }: + writeText "Info.plist" (lib.generators.toPlist { } { + CFBundleName = "mikutter"; + CFBundleDisplayName = "mikutter"; + CFBundleExecutable = "mikutter"; + CFBundleIconFile = "mikutter"; + CFBundleIdentifier = "net.hachune.mikutter"; + CFBundleInfoDictionaryVersion = "6.0"; + CFBundlePackageType = "APPL"; + CFBundleVersion = version; + CFBundleShortVersionString = version; + }); + + inherit (gems) wrappedRuby; +in +with mikutterPaths; stdenv.mkDerivation rec { + pname = "mikutter"; + version = "4.1.4"; + + src = fetchurl { + url = "https://mikutter.hachune.net/bin/mikutter-${version}.tar.gz"; + sha256 = "05253nz4i1lmnq6czj48qdab2ny4vx2mznj6nsn2l1m2z6zqkwk3"; + }; + + nativeBuildInputs = [ copyDesktopItems wrapGAppsHook ] + ++ lib.optionals stdenv.isDarwin [ libicns ]; + buildInputs = [ + atk + gtk2 + gobject-introspection + libnotify + which # some plugins use it at runtime + wrappedRuby + ] ++ lib.optionals stdenv.isLinux [ alsaUtils ]; + + scriptPath = lib.makeBinPath ( + [ wrappedRuby libnotify which ] + ++ lib.optionals stdenv.isLinux [ alsaUtils ] + ); + + postUnpack = '' rm -rf vendor ''; - installPhase = let - env = bundlerEnv { - name = "mikutter-${version}-gems"; - gemdir = ./.; + installPhase = '' + runHook preInstall - inherit ruby; - }; - in '' - install -v -D -m644 README $out/share/doc/mikutter/README - install -v -D -m644 LICENSE $out/share/doc/mikutter/LICENSE - rm -v README LICENSE + mkdir -p $out/bin ${optPrefixDir} - cp -rv . $out - mkdir $out/bin/ - # hack wrapGAppsHook wants a file not a symlink - mv $out/mikutter.rb $out/bin/mikutter + install -Dm644 README $out/share/doc/mikutter/README + install -Dm644 LICENSE $out/share/doc/mikutter/LICENSE + rm -r README LICENSE deployment - gappsWrapperArgs+=( - --prefix PATH : "${ruby}/bin:${alsaUtils}/bin:${libnotify}/bin" - --prefix GEM_HOME : "${env}/${env.ruby.gemPath}" + cp -r . ${optPrefixDir} + + gappsWrapperArgsHook # FIXME: currently runs at preFixup + wrapGApp ${optPrefixDir}/mikutter.rb \ + --prefix PATH : "${scriptPath}" \ --set DISABLE_BUNDLER_SETUP 1 - ) - # --prefix GIO_EXTRA_MODULES : "$prefix/lib/gio/modules" + mv ${optPrefixDir}/mikutter.rb $out/bin/mikutter - mkdir -p $out/share/mikutter $out/share/applications - ln -sv $out/core/skin $out/share/mikutter/skin - substituteAll ${./mikutter.desktop} $out/share/applications/mikutter.desktop + install -Dm644 ${iconPath} $out/share/icons/hicolor/256x256/apps/mikutter.png + + runHook postInstall ''; - postFixup = '' - mv $out/bin/.mikutter-wrapped $out/mikutter.rb - substituteInPlace $out/bin/mikutter \ - --replace "$out/bin/.mikutter-wrapped" "$out/mikutter.rb" + postInstall = + let + infoPlist = mkInfoPlist { inherit version; }; + in + lib.optionalString stdenv.isDarwin '' + mkdir -p ${appBinDir} ${appResourceDir} + install -Dm644 ${infoPlist} ${appPrefixDir}/Info.plist + ln -s $out/bin/mikutter ${appBinDir}/mikutter + png2icns ${appResourceDir}/mikutter.icns ${iconPath} + ''; + + installCheckPhase = '' + runHook preInstallCheck + + testDir="$(mktemp -d)" + install -Dm644 ${./test_plugin.rb} "$testDir/plugin/test_plugin/test_plugin.rb" + + $out/bin/mikutter --confroot="$testDir" --plugin=test_plugin --debug + + runHook postInstallCheck ''; + desktopItems = [ + (mkDesktopItem { inherit (meta) description; }) + ]; + + doInstallCheck = true; + dontWrapGApps = true; # the target is placed outside of bin/ + + passthru.updateScript = [ ./update.sh version (toString ./.) ]; + meta = with lib; { - description = "An extensible Twitter client"; + description = "An extensible Mastodon client"; homepage = "https://mikutter.hachune.net"; platforms = ruby.meta.platforms; license = licenses.mit; - broken = true; }; } diff --git a/pkgs/applications/networking/instant-messengers/mikutter/Gemfile b/pkgs/applications/networking/instant-messengers/mikutter/deps/Gemfile similarity index 84% rename from pkgs/applications/networking/instant-messengers/mikutter/Gemfile rename to pkgs/applications/networking/instant-messengers/mikutter/deps/Gemfile index 216af305b4a..fbe6a2f29c5 100644 --- a/pkgs/applications/networking/instant-messengers/mikutter/Gemfile +++ b/pkgs/applications/networking/instant-messengers/mikutter/deps/Gemfile @@ -11,12 +11,12 @@ ruby '>= 2.5.0' group :default do gem 'addressable','>= 2.7.0', '< 2.8' - gem 'delayer','>= 1.0.1', '< 1.1' - gem 'delayer-deferred','>= 2.1.1', '< 2.2' - gem 'diva','>= 1.0.1', '< 1.1' + gem 'delayer','>= 1.1.2', '< 2.0' + gem 'delayer-deferred','>= 2.2.0', '< 3.0' + gem 'diva','>= 1.0.2', '< 2.0' gem 'memoist','>= 0.16.2', '< 0.17' gem 'oauth','>= 0.5.4' - gem 'pluggaloid','>= 1.2.0', '< 1.3' + gem 'pluggaloid','>= 1.5.0', '< 2.0' gem 'typed-array','>= 0.1.2', '< 0.2' end diff --git a/pkgs/applications/networking/instant-messengers/mikutter/Gemfile.lock b/pkgs/applications/networking/instant-messengers/mikutter/deps/Gemfile.lock similarity index 59% rename from pkgs/applications/networking/instant-messengers/mikutter/Gemfile.lock rename to pkgs/applications/networking/instant-messengers/mikutter/deps/Gemfile.lock index 63f9a63849b..92568056d52 100644 --- a/pkgs/applications/networking/instant-messengers/mikutter/Gemfile.lock +++ b/pkgs/applications/networking/instant-messengers/mikutter/deps/Gemfile.lock @@ -5,22 +5,23 @@ GEM public_suffix (>= 2.0.2, < 5.0) atk (3.4.1) glib2 (= 3.4.1) - cairo (1.16.4) + cairo (1.17.5) native-package-installer (>= 1.0.3) pkg-config (>= 1.2.2) + red-colors cairo-gobject (3.4.1) cairo (>= 1.16.2) glib2 (= 3.4.1) - crack (0.4.3) - safe_yaml (~> 1.0.0) - delayer (1.0.1) - delayer-deferred (2.1.1) - delayer (>= 1.0, < 2.0) - diva (1.0.1) + crack (0.4.5) + rexml + delayer (1.2.0) + delayer-deferred (2.2.0) + delayer (>= 1.1.2, < 2.0) + diva (1.0.2) addressable (>= 2.5.2, < 2.8) gdk_pixbuf2 (3.4.1) gio2 (= 3.4.1) - gettext (3.2.9) + gettext (3.3.7) locale (>= 2.0.5) text (>= 1.3.0) gio2 (3.4.1) @@ -34,40 +35,38 @@ GEM atk (= 3.4.1) gdk_pixbuf2 (= 3.4.1) pango (= 3.4.1) - hashdiff (1.0.0) + hashdiff (1.0.1) httpclient (2.8.3) instance_storage (1.0.0) - io-console (0.5.3) - irb (1.2.1) - reline (>= 0.0.1) - locale (2.1.2) + locale (2.1.3) memoist (0.16.2) - mini_portile2 (2.4.0) - mocha (1.11.1) - moneta (1.2.1) - native-package-installer (1.0.9) - nokogiri (1.10.7) - mini_portile2 (~> 2.4.0) - oauth (0.5.4) + mini_portile2 (2.5.0) + mocha (1.12.0) + moneta (1.4.1) + native-package-installer (1.1.1) + nokogiri (1.11.3) + mini_portile2 (~> 2.5.0) + racc (~> 1.4) + oauth (0.5.6) pango (3.4.1) cairo-gobject (= 3.4.1) gobject-introspection (= 3.4.1) - pkg-config (1.4.0) - pluggaloid (1.2.0) - delayer (>= 1.0.0, < 2.0) + pkg-config (1.4.6) + pluggaloid (1.5.0) + delayer (>= 1.1.0, < 2.0) instance_storage (>= 1.0.0, < 2.0.0) - power_assert (1.1.5) - public_suffix (4.0.1) - rake (13.0.1) - reline (0.1.2) - io-console (~> 0.5) - ruby-prof (1.1.0) - safe_yaml (1.0.5) - test-unit (3.3.4) + power_assert (2.0.0) + public_suffix (4.0.6) + racc (1.5.2) + rake (13.0.3) + red-colors (0.1.1) + rexml (3.2.5) + ruby-prof (1.4.3) + test-unit (3.4.0) power_assert text (1.3.1) typed-array (0.1.2) - webmock (3.7.6) + webmock (3.12.2) addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) @@ -77,19 +76,18 @@ PLATFORMS DEPENDENCIES addressable (>= 2.7.0, < 2.8) - delayer (>= 1.0.1, < 1.1) - delayer-deferred (>= 2.1.1, < 2.2) - diva (>= 1.0.1, < 1.1) - gettext (>= 3.2.9, < 3.3) + delayer (>= 1.1.2, < 2.0) + delayer-deferred (>= 2.2.0, < 3.0) + diva (>= 1.0.2, < 2.0) + gettext (>= 3.3.5, < 3.4) gtk2 (= 3.4.1) httpclient - irb (>= 1.2.0, < 1.3) memoist (>= 0.16.2, < 0.17) mocha (>= 1.11.1) moneta nokogiri oauth (>= 0.5.4) - pluggaloid (>= 1.2.0, < 1.3) + pluggaloid (>= 1.5.0, < 2.0) rake (>= 13.0.1) ruby-prof (>= 1.1.0) test-unit (>= 3.3.4, < 4.0) @@ -97,7 +95,7 @@ DEPENDENCIES webmock (>= 3.7.6) RUBY VERSION - ruby 2.7.0p0 + ruby 2.6.6p146 BUNDLED WITH - 2.1.2 + 2.1.4 diff --git a/pkgs/applications/networking/instant-messengers/mikutter/gemset.nix b/pkgs/applications/networking/instant-messengers/mikutter/deps/gemset.nix similarity index 74% rename from pkgs/applications/networking/instant-messengers/mikutter/gemset.nix rename to pkgs/applications/networking/instant-messengers/mikutter/deps/gemset.nix index 2bc4db978dd..b45a36c6fec 100644 --- a/pkgs/applications/networking/instant-messengers/mikutter/gemset.nix +++ b/pkgs/applications/networking/instant-messengers/mikutter/deps/gemset.nix @@ -22,15 +22,15 @@ version = "3.4.1"; }; cairo = { - dependencies = ["native-package-installer" "pkg-config"]; + dependencies = ["native-package-installer" "pkg-config" "red-colors"]; groups = ["default" "plugin"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0yvv2lcbsybzbw1nrmfivmln23da4rndrs3av6ymjh0x3ww5h7p8"; + sha256 = "0vbj9szp2xbnxqan8hppip8vm9fxpcmpx745y5fvg2scdh9f0p7s"; type = "gem"; }; - version = "1.16.4"; + version = "1.17.5"; }; cairo-gobject = { dependencies = ["cairo" "glib2"]; @@ -44,25 +44,25 @@ version = "3.4.1"; }; crack = { - dependencies = ["safe_yaml"]; + dependencies = ["rexml"]; groups = ["default" "test"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k"; + sha256 = "1cr1kfpw3vkhysvkk3wg7c54m75kd68mbm9rs5azdjdq57xid13r"; type = "gem"; }; - version = "0.4.3"; + version = "0.4.5"; }; delayer = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "09p4rkh3dpdm1mhq721m4d6zvxqqp44kg7069s8l7kmaf7nv2nb3"; + sha256 = "0iqf4i18i8rk3x7qgvkhbiqskf0xzdf733fjimrq6xkag2mq60bl"; type = "gem"; }; - version = "1.0.1"; + version = "1.2.0"; }; delayer-deferred = { dependencies = ["delayer"]; @@ -70,10 +70,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1mbdxn1hskjqf3zlj4waxl71ccvbj6lk81c99769paxw4fajwrgx"; + sha256 = "0i2das3ncssacpqdgaf4as77vrxm7jfiizaja884fqv4rzv6s2sv"; type = "gem"; }; - version = "2.1.1"; + version = "2.2.0"; }; diva = { dependencies = ["addressable"]; @@ -81,10 +81,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "182gws1zihhpl7r3m8jsf29maqg9xdhj46s9lidbldar8clpl23h"; + sha256 = "05wl4wg57vvng4nrp4lzjq148v908xzq092kq93phwvyxs7jnw2g"; type = "gem"; }; - version = "1.0.1"; + version = "1.0.2"; }; gdk_pixbuf2 = { dependencies = ["gio2"]; @@ -103,10 +103,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0764vj7gacn0aypm2bf6m46dzjzwzrjlmbyx6qwwwzbmi94r40wr"; + sha256 = "1fqlwq7i8ck1fjyhn19q3skvgrbz44q7gq51mlr0qym5rkj5f6rn"; type = "gem"; }; - version = "3.2.9"; + version = "3.3.7"; }; gio2 = { dependencies = ["gobject-introspection"]; @@ -157,10 +157,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "18jqpbvidrlnq3xf0hkdbs00607jgz35lry6gjw4bcxgh52am2mk"; + sha256 = "1nynpl0xbj0nphqx1qlmyggq58ms1phf5i03hk64wcc0a17x1m1c"; type = "gem"; }; - version = "1.0.0"; + version = "1.0.1"; }; httpclient = { groups = ["plugin"]; @@ -182,36 +182,15 @@ }; version = "1.0.0"; }; - io-console = { - groups = ["default" "plugin"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0srn91ly4cc5qvyj3r87sc7v8dnm52qj1hczzxmysib6ffparngd"; - type = "gem"; - }; - version = "0.5.3"; - }; - irb = { - dependencies = ["reline"]; - groups = ["default" "plugin"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1r1y8i46qd5izdszzzn5jxvwvq00m89rk0hm8cs8f21p7nlwmh5w"; - type = "gem"; - }; - version = "1.2.1"; - }; locale = { groups = ["default" "plugin"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x"; + sha256 = "0997465kxvpxm92fiwc2b16l49mngk7b68g5k35ify0m3q0yxpdn"; type = "gem"; }; - version = "2.1.2"; + version = "2.1.3"; }; memoist = { groups = ["default"]; @@ -228,61 +207,61 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy"; + sha256 = "1hdbpmamx8js53yk3h8cqy12kgv6ca06k0c9n3pxh6b6cjfs19x7"; type = "gem"; }; - version = "2.4.0"; + version = "2.5.0"; }; mocha = { groups = ["test"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "06i2q5qjr9mvjgjc8w41pdf3qalw340y33wjvzc0rp4a1cbbb7pp"; + sha256 = "05yw6rwgjppq116jgqfg4pv4bql3ci4r2fmmg0m2c3sqib1bq41a"; type = "gem"; }; - version = "1.11.1"; + version = "1.12.0"; }; moneta = { groups = ["plugin"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0q7fskfdc0h5dhl8aamg3ypybd6cyl4x0prh4803gj7hxr17jfm1"; + sha256 = "0z25b4yysvnf2hi9jxnsiv3fvnicnzr2m70ci231av5093jfknc6"; type = "gem"; }; - version = "1.2.1"; + version = "1.4.1"; }; native-package-installer = { groups = ["default" "plugin"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0piclgf6pw7hr10x57x0hn675djyna4sb3xc97yb9vh66wkx1fl0"; + sha256 = "1ww1mq41q7rda975byjmq5dk8k13v8dawvm33370pbkrymd8syp8"; type = "gem"; }; - version = "1.0.9"; + version = "1.1.1"; }; nokogiri = { - dependencies = ["mini_portile2"]; + dependencies = ["mini_portile2" "racc"]; groups = ["plugin"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0r0qpgf80h764k176yr63gqbs2z0xbsp8vlvs2a79d5r9vs83kln"; + sha256 = "19d78mdg2lbz9jb4ph6nk783c9jbsdm8rnllwhga6pd53xffp6x0"; type = "gem"; }; - version = "1.10.7"; + version = "1.11.3"; }; oauth = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1zszdg8q1b135z7l7crjj234k4j0m347hywp5kj6zsq7q78pw09y"; + sha256 = "1zwd6v39yqfdrpg1p3d9jvzs9ljg55ana2p06m0l7qn5w0lgx1a0"; type = "gem"; }; - version = "0.5.4"; + version = "0.5.6"; }; pango = { dependencies = ["cairo-gobject" "gobject-introspection"]; @@ -300,10 +279,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1cxdpr2wlz9b587avlq04a1da5fz1vdw8jvr6lx23mcq7mqh2xcx"; + sha256 = "1mjjy1grxr64znkffxsvprcckbrrnm40b6gbllnbm7jxslbr3gjl"; type = "gem"; }; - version = "1.4.0"; + version = "1.4.6"; }; pluggaloid = { dependencies = ["delayer" "instance_storage"]; @@ -311,71 +290,80 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1gv0rjjdic8c41gfr3kyyphvf0fmv5rzcf6qd57zjdfcn6fvi3hh"; + sha256 = "0m3f940lf1bg01jin22by7hg9hs43y995isgcyqb6vbvlv51zj11"; type = "gem"; }; - version = "1.2.0"; + version = "1.5.0"; }; power_assert = { groups = ["default" "test"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1dii0wkfa0jm8sk9b20zl1z4980dmrjh0zqnii058485pp3ws10s"; + sha256 = "172qfmzwxdf82bmwgcb13hnz9i3p6i2s2nijxnx6r63kn3drjppr"; type = "gem"; }; - version = "1.1.5"; + version = "2.0.0"; }; public_suffix = { groups = ["default" "test"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0xnfv2j2bqgdpg2yq9i2rxby0w2sc9h5iyjkpaas2xknwrgmhdb0"; + sha256 = "1xqcgkl7bwws1qrlnmxgh8g4g9m10vg60bhlw40fplninb3ng6d9"; type = "gem"; }; - version = "4.0.1"; + version = "4.0.6"; + }; + racc = { + groups = ["default" "plugin"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "178k7r0xn689spviqzhvazzvxfq6fyjldxb3ywjbgipbfi4s8j1g"; + type = "gem"; + }; + version = "1.5.2"; }; rake = { groups = ["test"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0w6qza25bq1s825faaglkx1k6d59aiyjjk3yw3ip5sb463mhhai9"; + sha256 = "1iik52mf9ky4cgs38fp2m8r6skdkq1yz23vh18lk95fhbcxb6a67"; type = "gem"; }; - version = "13.0.1"; + version = "13.0.3"; }; - reline = { - dependencies = ["io-console"]; + red-colors = { groups = ["default" "plugin"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0908ijrngc3wkn5iny7d0kxkp74w6ixk2nwzzngplplfla1vkp8x"; + sha256 = "0ar2k7zvhr1215jx5di29hkg5h1798f1gypmq6v0sy9v35w6ijca"; type = "gem"; }; - version = "0.1.2"; + version = "0.1.1"; + }; + rexml = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "08ximcyfjy94pm1rhcx04ny1vx2sk0x4y185gzn86yfsbzwkng53"; + type = "gem"; + }; + version = "3.2.5"; }; ruby-prof = { groups = ["test"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "18ga5f4h1fnwn0xh910kpnw4cg3lq3jqljd3h16bdw9pgc5ff7dn"; + sha256 = "1r3xalp91l07m0cwllcxjzg6nkviiqnxkcbgg5qnzsdji6rgy65m"; type = "gem"; }; - version = "1.1.0"; - }; - safe_yaml = { - groups = ["default" "test"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0j7qv63p0vqcd838i2iy2f76c3dgwzkiz1d1xkg7n0pbnxj2vb56"; - type = "gem"; - }; - version = "1.0.5"; + version = "1.4.3"; }; test-unit = { dependencies = ["power_assert"]; @@ -383,10 +371,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0mrkpb6wz0cs1740kaca240k4ymmkbvb2v5xaxsy6vynqw8n0g6z"; + sha256 = "1h0c323zfn4hdida4g58h8wnlh4kax438gyxlw20dd78kcp01i8m"; type = "gem"; }; - version = "3.3.4"; + version = "3.4.0"; }; text = { groups = ["default" "plugin"]; @@ -414,9 +402,9 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "19xvs7gdf8r75bmyb17w9g367qxzqnlrmbdda1y36cn1vrlnf2l8"; + sha256 = "038igpmkpmn0nw0k7s4db8x88af1nwcy7wzh9m9c9q4p74h7rii0"; type = "gem"; }; - version = "3.7.6"; + version = "3.12.2"; }; } diff --git a/pkgs/applications/networking/instant-messengers/mikutter/plugin/gtk/Gemfile b/pkgs/applications/networking/instant-messengers/mikutter/deps/plugin/gtk/Gemfile similarity index 100% rename from pkgs/applications/networking/instant-messengers/mikutter/plugin/gtk/Gemfile rename to pkgs/applications/networking/instant-messengers/mikutter/deps/plugin/gtk/Gemfile diff --git a/pkgs/applications/networking/instant-messengers/mikutter/plugin/image_file_cache/Gemfile b/pkgs/applications/networking/instant-messengers/mikutter/deps/plugin/image_file_cache/Gemfile similarity index 100% rename from pkgs/applications/networking/instant-messengers/mikutter/plugin/image_file_cache/Gemfile rename to pkgs/applications/networking/instant-messengers/mikutter/deps/plugin/image_file_cache/Gemfile diff --git a/pkgs/applications/networking/instant-messengers/mikutter/plugin/photo_support/Gemfile b/pkgs/applications/networking/instant-messengers/mikutter/deps/plugin/photo_support/Gemfile similarity index 100% rename from pkgs/applications/networking/instant-messengers/mikutter/plugin/photo_support/Gemfile rename to pkgs/applications/networking/instant-messengers/mikutter/deps/plugin/photo_support/Gemfile diff --git a/pkgs/applications/networking/instant-messengers/mikutter/deps/plugin/uitranslator/Gemfile b/pkgs/applications/networking/instant-messengers/mikutter/deps/plugin/uitranslator/Gemfile new file mode 100644 index 00000000000..08b4831dfc6 --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/mikutter/deps/plugin/uitranslator/Gemfile @@ -0,0 +1,5 @@ +source 'https://rubygems.org' + +group :default do + gem 'gettext', '>= 3.3.5', '< 3.4' +end diff --git a/pkgs/applications/networking/instant-messengers/mikutter/mikutter.desktop b/pkgs/applications/networking/instant-messengers/mikutter/mikutter.desktop deleted file mode 100644 index 092f5f35cbf..00000000000 --- a/pkgs/applications/networking/instant-messengers/mikutter/mikutter.desktop +++ /dev/null @@ -1,9 +0,0 @@ -[Desktop Entry] -Name=mikutter -Comment=Twitter Client -Type=Application -Exec=@out@/bin/mikutter -Icon=@out@/core/skin/data/icon.png -Terminal=false -Categories=Network; -Keywords=Twitter; diff --git a/pkgs/applications/networking/instant-messengers/mikutter/plugin/uitranslator/Gemfile b/pkgs/applications/networking/instant-messengers/mikutter/plugin/uitranslator/Gemfile deleted file mode 100644 index 14ebffd4e0a..00000000000 --- a/pkgs/applications/networking/instant-messengers/mikutter/plugin/uitranslator/Gemfile +++ /dev/null @@ -1,6 +0,0 @@ -source 'https://rubygems.org' - -group :default do - gem 'gettext', '>= 3.2.9', '< 3.3' - gem 'irb', '>= 1.2.0', '< 1.3' -end diff --git a/pkgs/applications/networking/instant-messengers/mikutter/test_plugin.rb b/pkgs/applications/networking/instant-messengers/mikutter/test_plugin.rb new file mode 100644 index 00000000000..b19c15cd304 --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/mikutter/test_plugin.rb @@ -0,0 +1,10 @@ +# Tests mikutter's event system. + +Plugin.create(:test_plugin) do + require 'logger' + Delayer.new do + log = Logger.new(STDOUT) + log.info("loaded test_plugin") + exit + end +end diff --git a/pkgs/applications/networking/instant-messengers/mikutter/update.sh b/pkgs/applications/networking/instant-messengers/mikutter/update.sh new file mode 100755 index 00000000000..142fd8ca942 --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/mikutter/update.sh @@ -0,0 +1,51 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p bundler bundix curl jq common-updater-scripts +# shellcheck shell=bash + +set -euo pipefail + +main() { + local currentVer="$1" + local scriptDir="$2" + local latestVer + local srcDir + + if [[ -z "$UPDATE_NIX_ATTR_PATH" ]]; then + echo "[ERROR] Please run the following instead:" >&2 + echo >&2 + echo " % nix-shell maintainers/scripts/update.nix --argstr path mikutter" >&2 + exit 1 + fi + + latestVer="$(queryLatestVersion)" + if [[ "$currentVer" == "$latestVer" ]]; then + echo "[INFO] mikutter is already up to date" >&2 + exit + fi + + update-source-version "$UPDATE_NIX_ATTR_PATH" "$latestVer" + + cd "$scriptDir" + + rm -rf deps + mkdir deps + cd deps + + srcDir="$(nix-build ../../../../../.. --no-out-link -A mikutter.src)" + tar xvf "$srcDir" --strip-components=1 + find . -not -name Gemfile -exec rm {} \; + find . -type d -exec rmdir -p --ignore-fail-on-non-empty {} \; || true + + bundle lock + bundix +} + +queryLatestVersion() { + curl -sS 'https://mikutter.hachune.net/download.json?count=1' \ + | jq -r '.[].version_string' \ + | head -n1 +} + +main "$@" + +# vim:set ft=bash: diff --git a/pkgs/development/ruby-modules/gem-config/default.nix b/pkgs/development/ruby-modules/gem-config/default.nix index 99c535fa338..d0d67bff21d 100644 --- a/pkgs/development/ruby-modules/gem-config/default.nix +++ b/pkgs/development/ruby-modules/gem-config/default.nix @@ -20,12 +20,13 @@ { lib, fetchurl, writeScript, ruby, libkrb5, libxml2, libxslt, python, stdenv, which , libiconv, postgresql, v8, clang, sqlite, zlib, imagemagick, lasem , pkg-config , ncurses, xapian, gpgme, util-linux, tzdata, icu, libffi -, cmake, libssh2, openssl, libmysqlclient, darwin, git, perl, pcre, gecode_3, curl +, cmake, libssh2, openssl, libmysqlclient, git, perl, pcre, gecode_3, curl , msgpack, libsodium, snappy, libossp_uuid, lxc, libpcap, xorg, gtk2, buildRubyGem , cairo, re2, rake, gobject-introspection, gdk-pixbuf, zeromq, czmq, graphicsmagick, libcxx , file, libvirt, glib, vips, taglib, libopus, linux-pam, libidn, protobuf, fribidi, harfbuzz , bison, flex, pango, python3, patchelf, binutils, freetds, wrapGAppsHook, atk -, bundler, libsass, libselinux ? null, libsepol ? null, shared-mime-info +, bundler, libsass, libselinux, libsepol, shared-mime-info, libthai, libdatrie +, CoreServices, DarwinTools, cctools }@args: let @@ -41,7 +42,8 @@ in { atk = attrs: { dependencies = attrs.dependencies ++ [ "gobject-introspection" ]; - nativeBuildInputs = [ rake bundler pkg-config ]; + nativeBuildInputs = [ rake bundler pkg-config ] + ++ lib.optionals stdenv.isDarwin [ DarwinTools ]; propagatedBuildInputs = [ gobject-introspection wrapGAppsHook atk ]; }; @@ -61,12 +63,14 @@ in }; cairo = attrs: { - nativeBuildInputs = [ pkg-config ]; + nativeBuildInputs = [ pkg-config ] + ++ lib.optionals stdenv.isDarwin [ DarwinTools ]; buildInputs = [ gtk2 pcre xorg.libpthreadstubs xorg.libXdmcp]; }; cairo-gobject = attrs: { - nativeBuildInputs = [ pkg-config ]; + nativeBuildInputs = [ pkg-config ] + ++ lib.optionals stdenv.isDarwin [ DarwinTools ]; buildInputs = [ cairo pcre xorg.libpthreadstubs xorg.libXdmcp ]; }; @@ -189,7 +193,8 @@ in }; gdk_pixbuf2 = attrs: { - nativeBuildInputs = [ pkg-config bundler rake ]; + nativeBuildInputs = [ pkg-config bundler rake ] + ++ lib.optionals stdenv.isDarwin [ DarwinTools ]; propagatedBuildInputs = [ gobject-introspection wrapGAppsHook gdk-pixbuf ]; }; @@ -199,7 +204,8 @@ in }; gio2 = attrs: { - nativeBuildInputs = [ pkg-config ]; + nativeBuildInputs = [ pkg-config ] + ++ lib.optionals stdenv.isDarwin [ DarwinTools ]; buildInputs = [ gtk2 pcre gobject-introspection ] ++ lib.optionals stdenv.isLinux [ util-linux libselinux libsepol ]; }; @@ -235,7 +241,8 @@ in }; glib2 = attrs: { - nativeBuildInputs = [ pkg-config ]; + nativeBuildInputs = [ pkg-config ] + ++ lib.optionals stdenv.isDarwin [ DarwinTools ]; buildInputs = [ gtk2 pcre ]; }; @@ -244,7 +251,7 @@ in binutils pkg-config ] ++ lib.optionals stdenv.isLinux [ util-linux libselinux libsepol - ]; + ] ++ lib.optionals stdenv.isDarwin [ DarwinTools ]; propagatedBuildInputs = [ atk gdk-pixbuf @@ -252,16 +259,18 @@ in gobject-introspection gtk2 harfbuzz + libdatrie + libthai pcre xorg.libpthreadstubs xorg.libXdmcp ]; - # CFLAGS must be set for this gem to detect gdkkeysyms.h correctly - # CFLAGS = "-I${gtk2.dev}/include/gtk-2.0 -I/non-existent-path"; + dontStrip = stdenv.isDarwin; }; gobject-introspection = attrs: { - nativeBuildInputs = [ pkg-config pcre ]; + nativeBuildInputs = [ pkg-config pcre ] + ++ lib.optionals stdenv.isDarwin [ DarwinTools ]; propagatedBuildInputs = [ gobject-introspection wrapGAppsHook glib ]; }; @@ -287,9 +296,7 @@ in }; hitimes = attrs: { - buildInputs = - lib.optionals stdenv.isDarwin - [ darwin.apple_sdk.frameworks.CoreServices ]; + buildInputs = lib.optionals stdenv.isDarwin [ CoreServices ]; }; iconv = attrs: { @@ -453,7 +460,9 @@ in pcre xorg.libpthreadstubs xorg.libXdmcp - ]; + ] ++ lib.optionals stdenv.isDarwin [ DarwinTools ]; + buildInputs = [ libdatrie libthai ] + ++ lib.optionals stdenv.isLinux [ libselinux libsepol util-linux ]; propagatedBuildInputs = [ gobject-introspection wrapGAppsHook gtk2 ]; }; @@ -661,7 +670,7 @@ in }; zookeeper = attrs: { - buildInputs = lib.optionals stdenv.isDarwin [ darwin.cctools ]; + buildInputs = lib.optionals stdenv.isDarwin [ cctools ]; dontBuild = false; postPatch = '' sed -i ext/extconf.rb -e "4a \ diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ad05948227e..277271f1066 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -11986,7 +11986,10 @@ in dust = callPackage ../development/interpreters/pixie/dust.nix { }; buildRubyGem = callPackage ../development/ruby-modules/gem { }; - defaultGemConfig = callPackage ../development/ruby-modules/gem-config { }; + defaultGemConfig = callPackage ../development/ruby-modules/gem-config { + inherit (darwin) DarwinTools cctools; + inherit (darwin.apple_sdk.frameworks) CoreServices; + }; bundix = callPackage ../development/ruby-modules/bundix { }; bundler = callPackage ../development/ruby-modules/bundler { }; bundlerEnv = callPackage ../development/ruby-modules/bundler-env { };