diff options
author | VladimÃr ÄŒunát <vcunat@gmail.com> | 2015-10-02 10:24:41 +0200 |
---|---|---|
committer | VladimÃr ÄŒunát <vcunat@gmail.com> | 2015-10-02 10:24:41 +0200 |
commit | 33373d939a19f465228ddede6d38ce9032b5916b (patch) | |
tree | e1e767d2274e689db4e7f6fb4150b5fc5f46a730 /pkgs | |
parent | b23038dd801fcbfad2980664758d820b29abebae (diff) | |
parent | d1047f7c12bb8097007fc644ea4bebcecbb1b934 (diff) |
Merge: staging with systemd
Diffstat (limited to 'pkgs')
307 files changed, 7022 insertions, 4735 deletions
diff --git a/pkgs/applications/window-managers/weston/default.nix b/pkgs/applications/window-managers/weston/default.nix index 7a662aaf09e85..862e8b0ea01ea 100644 --- a/pkgs/applications/window-managers/weston/default.nix +++ b/pkgs/applications/window-managers/weston/default.nix @@ -7,15 +7,16 @@ stdenv.mkDerivation rec { name = "weston-${version}"; - version = "1.8.0"; + version = "1.9.0"; src = fetchurl { url = "http://wayland.freedesktop.org/releases/${name}.tar.xz"; - sha256 = "04nkbbdglh0pqznxkdqvak3pc53jmz24d0658bn5r0cf6agycqw9"; + sha256 = "1ks8mja6glzy2dkayi535hd6w5c5h021bqk7vzgv182g33rh66ww"; }; + nativeBuildInputs = [ pkgconfig ]; buildInputs = [ - pkgconfig wayland mesa libxkbcommon cairo libxcb libXcursor xlibsWrapper udev libdrm + wayland mesa libxkbcommon cairo libxcb libXcursor xlibsWrapper udev libdrm mtdev libjpeg pam dbus.libs libinput pango libunwind freerdp vaapi libva libwebp ]; diff --git a/pkgs/data/misc/shared-mime-info/default.nix b/pkgs/data/misc/shared-mime-info/default.nix index 57f5b24a6f87d..46be9a6060bb0 100644 --- a/pkgs/data/misc/shared-mime-info/default.nix +++ b/pkgs/data/misc/shared-mime-info/default.nix @@ -1,20 +1,23 @@ {stdenv, fetchurl, pkgconfig, gettext, perl, perlXMLParser, intltool , libxml2, glib}: +let version = "1.5"; in stdenv.mkDerivation rec { - name = "shared-mime-info-1.3"; + name = "shared-mime-info-${version}"; src = fetchurl { url = "http://freedesktop.org/~hadess/${name}.tar.xz"; - sha256 = "0fijrc8j2kw6bvdx7fmlfafbcwxvinhr8l44b46b3v59gj69rm2g"; + sha256 = "1021x95xbkfc5ipx3gi2rdc0y6x2pv36yyzxc5pg6nr6xd02hhfn"; }; - buildInputs = [ + nativeBuildInputs = [ pkgconfig gettext intltool perl perlXMLParser libxml2 glib ]; meta = { + inherit version; description = "A database of common MIME types"; homepage = http://freedesktop.org/wiki/Software/shared-mime-info; + license = stdenv.lib.licenses.gpl2Plus; }; } diff --git a/pkgs/data/misc/tzdata/default.nix b/pkgs/data/misc/tzdata/default.nix index 8789316ccdc46..045a9eef00a6f 100644 --- a/pkgs/data/misc/tzdata/default.nix +++ b/pkgs/data/misc/tzdata/default.nix @@ -1,6 +1,6 @@ { stdenv, fetchurl }: -let version = "2015f"; in +let version = "2015g"; in stdenv.mkDerivation rec { name = "tzdata-${version}"; @@ -8,11 +8,11 @@ stdenv.mkDerivation rec { srcs = [ (fetchurl { url = "http://www.iana.org/time-zones/repository/releases/tzdata${version}.tar.gz"; - sha256 = "07ak8ai5skgjpj6lg74pawxg0bz998k7s2ah7jqyqhp086sq37wm"; + sha256 = "0qb1awqrn3215zd2jikpqnmkzrxwfjf0d3dw2xmnk4c40yzws8xr"; }) (fetchurl { url = "http://www.iana.org/time-zones/repository/releases/tzcode${version}.tar.gz"; - sha256 = "1bl4vqw6yp9199clm9aai566bmslp42g5xglj3vl24dn5fjf158c"; + sha256 = "1i3y1kzjiz2j62c7vd4wf85983sqk9x9lg3473njvbdz4kph5r0q"; }) ]; diff --git a/pkgs/desktops/gnome-3/3.18/apps/accerciser/default.nix b/pkgs/desktops/gnome-3/3.18/apps/accerciser/default.nix new file mode 100644 index 0000000000000..a2813e0581b35 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/accerciser/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, itstool, libxml2, python3, python3Packages, pyatspi, at_spi2_core +, dbus, intltool, libwnck3 }: + +stdenv.mkDerivation rec { + name = "accerciser-3.14.0"; + + src = fetchurl { + url = "mirror://gnome/sources/accerciser/3.14/${name}.tar.xz"; + sha256 = "0x05gpajpcs01g7m34g6fxz8122cf9kx3k0lchwl34jy8xfr39gm"; + }; + + buildInputs = [ + pkgconfig gtk3 wrapGAppsHook itstool libxml2 python3 pyatspi + python3Packages.pygobject3 python3Packages.ipython + at_spi2_core dbus intltool libwnck3 gnome3.defaultIconTheme + ]; + + wrapPrefixVariables = [ "PYTHONPATH" ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Accerciser; + description = "Interactive Python accessibility explorer"; + maintainers = gnome3.maintainers; + license = licenses.bsd3; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/bijiben/default.nix b/pkgs/desktops/gnome-3/3.18/apps/bijiben/default.nix new file mode 100644 index 0000000000000..00895f9a2bb27 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/bijiben/default.nix @@ -0,0 +1,36 @@ +{ stdenv, intltool, fetchurl, pkgconfig, glib +, evolution_data_server, evolution, sqlite +, makeWrapper, itstool, desktop_file_utils +, clutter_gtk, libuuid, webkitgtk, zeitgeist +, gnome3, librsvg, gdk_pixbuf, libxml2 }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + doCheck = true; + + propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ]; + + buildInputs = [ pkgconfig glib intltool itstool libxml2 + clutter_gtk libuuid webkitgtk gnome3.tracker + gnome3.gnome_online_accounts zeitgeist desktop_file_utils + gnome3.gsettings_desktop_schemas makeWrapper + gdk_pixbuf gnome3.defaultIconTheme librsvg + evolution_data_server evolution sqlite ]; + + enableParallelBuilding = true; + + preFixup = '' + wrapProgram "$out/bin/bijiben" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Bijiben; + description = "Note editor designed to remain simple to use"; + maintainers = gnome3.maintainers; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/bijiben/src.nix b/pkgs/desktops/gnome-3/3.18/apps/bijiben/src.nix new file mode 100644 index 0000000000000..9eb11c0e37911 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/bijiben/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "bijiben-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/bijiben/3.18/bijiben-3.18.0.tar.xz; + sha256 = "3e933eae3776ae50a639f0866b5c11279961b5ebdaa83a621509dfe31c218fea"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/cheese/default.nix b/pkgs/desktops/gnome-3/3.18/apps/cheese/default.nix new file mode 100644 index 0000000000000..ed5bbf6ca228c --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/cheese/default.nix @@ -0,0 +1,25 @@ +{ stdenv, intltool, fetchurl, wrapGAppsHook, gnome-video-effects, libcanberra_gtk3 +, pkgconfig, gtk3, glib, clutter_gtk, clutter-gst_2, udev, gst_all_1, itstool +, adwaita-icon-theme, librsvg, gdk_pixbuf, gnome3, gnome_desktop, libxml2 }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ pkgconfig gtk3 glib intltool wrapGAppsHook gnome-video-effects itstool + gdk_pixbuf adwaita-icon-theme librsvg udev gst_all_1.gstreamer libxml2 + gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good gnome_desktop + gst_all_1.gst-plugins-bad clutter_gtk clutter-gst_2 + libcanberra_gtk3 ]; + + enableParallelBuilding = true; + + NIX_CFLAGS_COMPILE = "-I${glib}/include/gio-unix-2.0"; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Cheese; + description = "Take photos and videos with your webcam, with fun graphical effects"; + maintainers = gnome3.maintainers; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/cheese/src.nix b/pkgs/desktops/gnome-3/3.18/apps/cheese/src.nix new file mode 100644 index 0000000000000..7e47c2c495055 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/cheese/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "cheese-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/cheese/3.18/cheese-3.18.0.tar.xz; + sha256 = "65ba4a60be51b9fc5537e5c1cdb6605b3098145982fae75a08ace94b965aeb0b"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/evolution/default.nix b/pkgs/desktops/gnome-3/3.18/apps/evolution/default.nix new file mode 100644 index 0000000000000..a9bb87d4dddfc --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/evolution/default.nix @@ -0,0 +1,49 @@ +{ stdenv, intltool, fetchurl, libxml2, webkitgtk, highlight +, pkgconfig, gtk3, glib, libnotify, gtkspell3 +, makeWrapper, itstool, shared_mime_info, libical, db, gcr, sqlite +, gnome3, librsvg, gdk_pixbuf, libsecret, nss, nspr, icu, libtool +, libcanberra_gtk3, bogofilter, gst_all_1, procps, p11_kit }: + +let + majVer = gnome3.version; +in stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + doCheck = true; + + propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ]; + + propagatedBuildInputs = [ gnome3.gtkhtml ]; + + buildInputs = [ pkgconfig gtk3 glib intltool itstool libxml2 libtool + gdk_pixbuf gnome3.defaultIconTheme librsvg db icu + gnome3.evolution_data_server libsecret libical gcr + webkitgtk shared_mime_info gnome3.gnome_desktop gtkspell3 + libcanberra_gtk3 bogofilter gnome3.libgdata sqlite + gst_all_1.gstreamer gst_all_1.gst-plugins-base p11_kit + nss nspr libnotify procps highlight gnome3.libgweather + gnome3.gsettings_desktop_schemas makeWrapper ]; + + configureFlags = [ "--disable-spamassassin" "--disable-pst-import" "--disable-autoar" + "--disable-libcryptui" ]; + + NIX_CFLAGS_COMPILE = "-I${nspr}/include/nspr -I${nss}/include/nss -I${glib}/include/gio-unix-2.0"; + + enableParallelBuilding = true; + + preFixup = '' + for f in $out/bin/* $out/libexec/*; do + wrapProgram "$f" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + done + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Evolution; + description = "Personal information management application that provides integrated mail, calendaring and address book functionality"; + maintainers = gnome3.maintainers; + license = licenses.lgpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/evolution/src.nix b/pkgs/desktops/gnome-3/3.18/apps/evolution/src.nix new file mode 100644 index 0000000000000..46af1c8b8bb3c --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/evolution/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "evolution-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/evolution/3.18/evolution-3.18.0.tar.xz; + sha256 = "a3efe42a861200c0463476e0a02e566fde74a0d4a699d8cc6514c031d5cad410"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/file-roller/default.nix b/pkgs/desktops/gnome-3/3.18/apps/file-roller/default.nix new file mode 100644 index 0000000000000..4e35676f3cbaa --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/file-roller/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchurl, glib, pkgconfig, gnome3, intltool, itstool, libxml2, libarchive +, attr, bzip2, acl, makeWrapper, librsvg, gdk_pixbuf }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + # TODO: support nautilus + # it tries to create {nautilus}/lib/nautilus/extensions-3.0/libnautilus-fileroller.so + + buildInputs = [ glib pkgconfig gnome3.gtk intltool itstool libxml2 libarchive + gnome3.defaultIconTheme attr bzip2 acl gdk_pixbuf librsvg + makeWrapper ]; + + preFixup = '' + wrapProgram "$out/bin/file-roller" \ + --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH:$out/share" + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/FileRoller; + description = "Archive manager for the GNOME desktop environment"; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/file-roller/src.nix b/pkgs/desktops/gnome-3/3.18/apps/file-roller/src.nix new file mode 100644 index 0000000000000..3e166f996e91d --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/file-roller/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "file-roller-3.16.4"; + + src = fetchurl { + url = mirror://gnome/sources/file-roller/3.16/file-roller-3.16.4.tar.xz; + sha256 = "5455980b2c9c7eb063d2d65560ae7ab2e7f01b208ea3947e151680231c7a4185"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/gedit/default.nix b/pkgs/desktops/gnome-3/3.18/apps/gedit/default.nix new file mode 100644 index 0000000000000..6cff4bdee4822 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gedit/default.nix @@ -0,0 +1,33 @@ +{ stdenv, intltool, fetchurl, enchant, isocodes +, pkgconfig, gtk3, glib +, bash, makeWrapper, itstool, libsoup, libxml2 +, gnome3, librsvg, gdk_pixbuf, file }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ]; + + buildInputs = [ pkgconfig gtk3 glib intltool itstool enchant isocodes + gdk_pixbuf gnome3.defaultIconTheme librsvg libsoup + gnome3.libpeas gnome3.gtksourceview libxml2 + gnome3.gsettings_desktop_schemas makeWrapper file ]; + + enableParallelBuilding = true; + + preFixup = '' + wrapProgram "$out/bin/gedit" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \ + --prefix LD_LIBRARY_PATH : "${gnome3.libpeas}/lib:${gnome3.gtksourceview}/lib" \ + --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Gedit; + description = "Official text editor of the GNOME desktop environment"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/gedit/src.nix b/pkgs/desktops/gnome-3/3.18/apps/gedit/src.nix new file mode 100644 index 0000000000000..ff427fdfb9057 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gedit/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gedit-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gedit/3.18/gedit-3.18.0.tar.xz; + sha256 = "9abd4f1478385f8b6c983298206f4ab1a25c682b9c87fb00d759b7db5b949533"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/glade/default.nix b/pkgs/desktops/gnome-3/3.18/apps/glade/default.nix new file mode 100644 index 0000000000000..a0f8d9669556e --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/glade/default.nix @@ -0,0 +1,30 @@ +{ stdenv, intltool, fetchurl, python +, pkgconfig, gtk3, glib +, makeWrapper, itstool, libxml2, docbook_xsl +, gnome3, librsvg, gdk_pixbuf, libxslt }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ]; + + buildInputs = [ pkgconfig gtk3 glib intltool itstool libxml2 python + gnome3.gsettings_desktop_schemas makeWrapper docbook_xsl + gdk_pixbuf gnome3.defaultIconTheme librsvg libxslt ]; + + enableParallelBuilding = true; + + preFixup = '' + wrapProgram "$out/bin/glade" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Glade; + description = "User interface designer for GTK+ applications"; + maintainers = gnome3.maintainers; + license = licenses.lgpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/glade/src.nix b/pkgs/desktops/gnome-3/3.18/apps/glade/src.nix new file mode 100644 index 0000000000000..aaa913babea47 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/glade/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "glade-3.18.3"; + + src = fetchurl { + url = mirror://gnome/sources/glade/3.18/glade-3.18.3.tar.xz; + sha256 = "ecdbce46e7fbfecd463be840b94fbf54d83723b3ebe075414cfd225ddab66452"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/gnome-boxes/default.nix b/pkgs/desktops/gnome-3/3.18/apps/gnome-boxes/default.nix new file mode 100644 index 0000000000000..90955bd3ccf98 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gnome-boxes/default.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchurl, makeWrapper, pkgconfig, intltool, itstool, libvirt-glib +, glib, gobjectIntrospection, libxml2, gtk3, gtkvnc, libvirt, spice_gtk +, spice_protocol, libuuid, libsoup, libosinfo, systemd, tracker, vala +, libcap_ng, libcap, yajl, gmp, gdbm, cyrus_sasl, gnome3, librsvg +, desktop_file_utils, mtools, cdrkit, libcdio +, libusb, libarchive, acl +}: + +# TODO: ovirt (optional) + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + enableParallelBuilding = true; + + doCheck = true; + + buildInputs = [ + makeWrapper pkgconfig intltool itstool libvirt-glib glib + gobjectIntrospection libxml2 gtk3 gtkvnc libvirt spice_gtk spice_protocol + libuuid libsoup libosinfo systemd tracker vala libcap_ng libcap yajl gmp + gdbm cyrus_sasl gnome3.defaultIconTheme libusb libarchive + librsvg desktop_file_utils acl + ]; + + preFixup = '' + for prog in "$out/bin/"*; do + wrapProgram "$prog" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" \ + --prefix PATH : "${mtools}/bin:${cdrkit}/bin:${libcdio}/bin" + done + ''; + + meta = with stdenv.lib; { + description = "Simple GNOME 3 application to access remote or virtual systems"; + homepage = https://wiki.gnome.org/action/show/Apps/Boxes; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ bjornfor ]; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/gnome-boxes/src.nix b/pkgs/desktops/gnome-3/3.18/apps/gnome-boxes/src.nix new file mode 100644 index 0000000000000..06543540e76ae --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gnome-boxes/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-boxes-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-boxes/3.18/gnome-boxes-3.18.0.tar.xz; + sha256 = "ed2b442fc676bdfa47d6b6326836238c2c98af9725a91eb023784a3e692ae749"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/gnome-calendar/default.nix b/pkgs/desktops/gnome-3/3.18/apps/gnome-calendar/default.nix new file mode 100644 index 0000000000000..cbd5a84bdb558 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gnome-calendar/default.nix @@ -0,0 +1,22 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, intltool, evolution_data_server, sqlite, libxml2, libsoup +, glib, gnome_online_accounts }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0"; + + buildInputs = [ + pkgconfig gtk3 wrapGAppsHook intltool evolution_data_server + sqlite libxml2 libsoup glib gnome3.defaultIconTheme gnome_online_accounts + ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Calendar; + description = "Simple and beautiful calendar application for GNOME"; + maintainers = gnome3.maintainers; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/gnome-calendar/src.nix b/pkgs/desktops/gnome-3/3.18/apps/gnome-calendar/src.nix new file mode 100644 index 0000000000000..6b941b592e5cd --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gnome-calendar/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-calendar-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-calendar/3.18/gnome-calendar-3.18.0.tar.xz; + sha256 = "f7d50fe8d5d3dcc574f0034dba6a64cbb9b3f842faab5978c9d02b38548f355b"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/gnome-characters/default.nix b/pkgs/desktops/gnome-3/3.18/apps/gnome-characters/default.nix new file mode 100644 index 0000000000000..4571a5d50e8b6 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gnome-characters/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, intltool, gjs, gdk_pixbuf, librsvg }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ + pkgconfig gtk3 wrapGAppsHook intltool gjs gdk_pixbuf + librsvg gnome3.defaultIconTheme + ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Design/Apps/CharacterMap; + description = "Simple utility application to find and insert unusual characters"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/gnome-characters/src.nix b/pkgs/desktops/gnome-3/3.18/apps/gnome-characters/src.nix new file mode 100644 index 0000000000000..a957aa91d7559 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gnome-characters/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-characters-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-characters/3.18/gnome-characters-3.18.0.tar.xz; + sha256 = "e068b2275a08639565a88b096d378a4ac2abf90301ff43056bb5157dff54ce08"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/gnome-clocks/default.nix b/pkgs/desktops/gnome-3/3.18/apps/gnome-clocks/default.nix new file mode 100644 index 0000000000000..e39614e765d60 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gnome-clocks/default.nix @@ -0,0 +1,27 @@ +{ stdenv, intltool, fetchurl, libgweather, libnotify +, pkgconfig, gtk3, glib, gsound +, makeWrapper, itstool, libcanberra_gtk3, libtool +, gnome3, librsvg, gdk_pixbuf, geoclue2, wrapGAppsHook }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + doCheck = true; + + buildInputs = [ pkgconfig gtk3 glib intltool itstool libcanberra_gtk3 + gnome3.gsettings_desktop_schemas makeWrapper + gdk_pixbuf gnome3.defaultIconTheme librsvg + gnome3.gnome_desktop gnome3.geocode_glib geoclue2 + libgweather libnotify libtool gsound + wrapGAppsHook ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Clocks; + description = "Clock application designed for GNOME 3"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/gnome-clocks/src.nix b/pkgs/desktops/gnome-3/3.18/apps/gnome-clocks/src.nix new file mode 100644 index 0000000000000..9f0be0ede9859 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gnome-clocks/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-clocks-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-clocks/3.18/gnome-clocks-3.18.0.tar.xz; + sha256 = "ca0818ec89e3539201da6b5388365e3d66df815198beccc90e2be44c7822baa0"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/gnome-documents/default.nix b/pkgs/desktops/gnome-3/3.18/apps/gnome-documents/default.nix new file mode 100644 index 0000000000000..7f1f70114b7b1 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gnome-documents/default.nix @@ -0,0 +1,39 @@ +{ stdenv, intltool, fetchurl, evince, gjs +, pkgconfig, gtk3, glib +, makeWrapper, itstool, libxslt, webkitgtk +, gnome3, librsvg, gdk_pixbuf, libsoup, docbook_xsl +, gobjectIntrospection, json_glib, inkscape, poppler_utils +, gmp, desktop_file_utils, wrapGAppsHook }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + doCheck = true; + + configureFlags = [ "--enable-getting-started" ]; + + buildInputs = [ pkgconfig gtk3 glib intltool itstool libxslt + docbook_xsl desktop_file_utils inkscape poppler_utils + gnome3.gsettings_desktop_schemas makeWrapper gmp + gdk_pixbuf gnome3.defaultIconTheme librsvg evince + libsoup webkitgtk gjs gobjectIntrospection gnome3.rest + gnome3.tracker gnome3.libgdata gnome3.gnome_online_accounts + gnome3.gnome_desktop gnome3.libzapojit json_glib + wrapGAppsHook ]; + + enableParallelBuilding = true; + + preFixup = '' + substituteInPlace $out/bin/gnome-documents --replace gapplication "${glib}/bin/gapplication" + + gappsWrapperArgs+=(--run 'if [ -z "$XDG_CACHE_DIR" ]; then XDG_CACHE_DIR=$HOME/.cache; fi; if [ -w "$XDG_CACHE_DIR/.." ]; then mkdir -p "$XDG_CACHE_DIR/gnome-documents"; fi') + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Documents; + description = "Document manager application designed to work with GNOME 3"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/gnome-documents/src.nix b/pkgs/desktops/gnome-3/3.18/apps/gnome-documents/src.nix new file mode 100644 index 0000000000000..5906bade1eff9 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gnome-documents/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-documents-3.18.0.1"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-documents/3.18/gnome-documents-3.18.0.1.tar.xz; + sha256 = "0b19593e949276de71cb7292bb77520eb3cd915ac8c71d27a8d05f79b9e86816"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/gnome-getting-started-docs/default.nix b/pkgs/desktops/gnome-3/3.18/apps/gnome-getting-started-docs/default.nix new file mode 100644 index 0000000000000..0c75ebd7c7832 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gnome-getting-started-docs/default.nix @@ -0,0 +1,15 @@ +{ stdenv, fetchurl, gnome3, intltool, itstool, libxml2 }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ intltool itstool libxml2 ]; + + meta = with stdenv.lib; { + homepage = https://live.gnome.org/DocumentationProject; + description = "Help a new user get started in GNOME"; + maintainers = gnome3.maintainers; + license = licenses.cc-by-sa-30; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/gnome-getting-started-docs/src.nix b/pkgs/desktops/gnome-3/3.18/apps/gnome-getting-started-docs/src.nix new file mode 100644 index 0000000000000..a4ed1d6b909a8 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gnome-getting-started-docs/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-getting-started-docs-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-getting-started-docs/3.18/gnome-getting-started-docs-3.18.0.tar.xz; + sha256 = "5ef0373c5a864fefdecb17bffdfc2cca00fb2abf93756b1df9062e12208925d6"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/gnome-logs/default.nix b/pkgs/desktops/gnome-3/3.18/apps/gnome-logs/default.nix new file mode 100644 index 0000000000000..d4135fdb1bae1 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gnome-logs/default.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, intltool, itstool, libxml2, systemd }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + configureFlags = [ "--disable-tests" ]; + + buildInputs = [ + pkgconfig gtk3 wrapGAppsHook intltool itstool libxml2 + systemd gnome3.defaultIconTheme + ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Logs; + description = "A log viewer for the systemd journal"; + maintainers = gnome3.maintainers; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/gnome-logs/src.nix b/pkgs/desktops/gnome-3/3.18/apps/gnome-logs/src.nix new file mode 100644 index 0000000000000..b077f8cee4d46 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gnome-logs/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-logs-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-logs/3.18/gnome-logs-3.18.0.tar.xz; + sha256 = "7602b55d47b5d889be7547869a0a48f03f6b22a1c872b86ed70049695d06d699"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/gnome-maps/default.nix b/pkgs/desktops/gnome-3/3.18/apps/gnome-maps/default.nix new file mode 100644 index 0000000000000..b9aac0539ae5b --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gnome-maps/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchurl, intltool, pkgconfig, gnome3, gtk3 +, gobjectIntrospection, gdk_pixbuf, librsvg, autoreconfHook +, geoclue2, wrapGAppsHook, folks, libchamplain, gfbgraph, file, libsoup }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + doCheck = true; + + buildInputs = [ pkgconfig intltool gobjectIntrospection wrapGAppsHook + gtk3 geoclue2 gnome3.gjs gnome3.libgee folks gfbgraph + gnome3.geocode_glib libchamplain file libsoup + gdk_pixbuf librsvg autoreconfHook + gnome3.gnome_online_accounts gnome3.defaultIconTheme ]; + + patches = [ ./soup.patch ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Maps; + description = "A map application for GNOME 3"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/gnome-maps/soup.patch b/pkgs/desktops/gnome-3/3.18/apps/gnome-maps/soup.patch new file mode 100644 index 0000000000000..e7e86ba76c758 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gnome-maps/soup.patch @@ -0,0 +1,10 @@ +--- gnome-maps-3.18.0/configure.ac.orig 2015-09-24 18:38:31.912498368 +0200 ++++ gnome-maps-3.18.0/configure.ac 2015-09-24 18:38:40.783320413 +0200 +@@ -50,6 +50,7 @@ + folks >= $FOLKS_MIN_VERSION + geocode-glib-1.0 >= $GEOCODE_MIN_VERSION + champlain-0.12 >= $CHAMPLAIN_MIN_VERSION ++ libsoup-2.4 + ]) + AC_SUBST(GNOME_MAPS_LIB_CFLAGS) + AC_SUBST(GNOME_MAPS_LIB_LIBS) diff --git a/pkgs/desktops/gnome-3/3.18/apps/gnome-maps/src.nix b/pkgs/desktops/gnome-3/3.18/apps/gnome-maps/src.nix new file mode 100644 index 0000000000000..9d33216480dfe --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gnome-maps/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-maps-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-maps/3.18/gnome-maps-3.18.0.tar.xz; + sha256 = "242f70346a1527ba0d9a664bd863b02e2227f9f0f0f577b9b0c00dc3075eb85e"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/gnome-music/default.nix b/pkgs/desktops/gnome-3/3.18/apps/gnome-music/default.nix new file mode 100644 index 0000000000000..bb89ef8420260 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gnome-music/default.nix @@ -0,0 +1,30 @@ +{ stdenv, intltool, fetchurl, gdk_pixbuf, tracker +, python3, libxml2, python3Packages, libnotify, wrapGAppsHook +, pkgconfig, gtk3, glib, cairo +, makeWrapper, itstool, gnome3, librsvg, gst_all_1 }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ]; + + buildInputs = [ pkgconfig gtk3 glib intltool itstool gnome3.libmediaart + gdk_pixbuf gnome3.defaultIconTheme librsvg python3 + gnome3.grilo gnome3.grilo-plugins libxml2 python3Packages.pygobject3 libnotify + python3Packages.pycairo python3Packages.dbus gnome3.totem-pl-parser + gst_all_1.gstreamer gst_all_1.gst-plugins-base wrapGAppsHook + gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad + gnome3.gsettings_desktop_schemas makeWrapper tracker ]; + + wrapPrefixVariables = [ "PYTHONPATH" ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Music; + description = "Music player and management application for the GNOME desktop environment"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/gnome-music/src.nix b/pkgs/desktops/gnome-3/3.18/apps/gnome-music/src.nix new file mode 100644 index 0000000000000..de2cf6054868b --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gnome-music/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-music-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-music/3.18/gnome-music-3.18.0.tar.xz; + sha256 = "e2e4b99a57c7b5c83ce3deccd38880cbafb875b423ab276204af523bc648d69c"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/gnome-nettool/default.nix b/pkgs/desktops/gnome-3/3.18/apps/gnome-nettool/default.nix new file mode 100644 index 0000000000000..4c152777f2cbd --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gnome-nettool/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, libgtop, intltool, itstool, libxml2, nmap, inetutils }: + +stdenv.mkDerivation rec { + name = "gnome-nettool-3.8.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-nettool/3.8/${name}.tar.xz"; + sha256 = "1c9cvzvyqgfwa5zzyvp7118pkclji62fkbb33g4y9sp5kw6m397h"; + }; + + buildInputs = [ + pkgconfig gtk3 wrapGAppsHook libgtop intltool itstool libxml2 + gnome3.defaultIconTheme + ]; + + propagatedUserEnvPkgs = [ nmap inetutils ]; + + meta = with stdenv.lib; { + homepage = http://projects.gnome.org/gnome-network; + description = "A collection of networking tools"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/gnome-photos/default.nix b/pkgs/desktops/gnome-3/3.18/apps/gnome-photos/default.nix new file mode 100644 index 0000000000000..eaace044af0dc --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gnome-photos/default.nix @@ -0,0 +1,31 @@ +{ stdenv, intltool, fetchurl, exempi, libxml2 +, pkgconfig, gtk3, glib +, makeWrapper, itstool, gegl, babl, lcms2 +, desktop_file_utils, gmp, libmediaart, wrapGAppsHook +, gnome3, librsvg, gdk_pixbuf, libexif }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + # doCheck = true; + + NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0"; + + buildInputs = [ pkgconfig gtk3 glib intltool itstool gegl babl gnome3.libgdata + gnome3.gsettings_desktop_schemas makeWrapper gmp libmediaart + gdk_pixbuf gnome3.defaultIconTheme librsvg exempi + gnome3.gfbgraph gnome3.grilo-plugins gnome3.grilo + gnome3.gnome_online_accounts gnome3.gnome_desktop + lcms2 libexif gnome3.tracker libxml2 desktop_file_utils + wrapGAppsHook ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Photos; + description = "Photos is an application to access, organize and share your photos with GNOME 3"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/gnome-photos/src.nix b/pkgs/desktops/gnome-3/3.18/apps/gnome-photos/src.nix new file mode 100644 index 0000000000000..1af6b71cdb906 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gnome-photos/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-photos-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-photos/3.18/gnome-photos-3.18.0.tar.xz; + sha256 = "5ca74b33de33da125059918e2d7c665ff78ac1adfbc04c98b3378e705cc73a54"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/gnome-weather/default.nix b/pkgs/desktops/gnome-3/3.18/apps/gnome-weather/default.nix new file mode 100644 index 0000000000000..f4d2c8ad0c19b --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gnome-weather/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook, gjs +, libgweather, intltool, itstool }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ + pkgconfig gtk3 wrapGAppsHook gjs intltool itstool + libgweather gnome3.defaultIconTheme + ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Weather; + description = "Access current weather conditions and forecasts"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/gnome-weather/src.nix b/pkgs/desktops/gnome-3/3.18/apps/gnome-weather/src.nix new file mode 100644 index 0000000000000..b1dc538815de2 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/gnome-weather/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-weather-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-weather/3.18/gnome-weather-3.18.0.tar.xz; + sha256 = "fa0c098bef351af7457abf0ef6bd0afb62d727f041a15107e02693c9c7bd48aa"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/nautilus-sendto/default.nix b/pkgs/desktops/gnome-3/3.18/apps/nautilus-sendto/default.nix new file mode 100644 index 0000000000000..093900dcb7ab5 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/nautilus-sendto/default.nix @@ -0,0 +1,22 @@ +{ stdenv, fetchurl, glib, pkgconfig, gnome3, intltool +, gobjectIntrospection, makeWrapper }: + +stdenv.mkDerivation rec { + name = "nautilus-sendto-${version}"; + + version = "3.8.1"; + + src = fetchurl { + url = "mirror://gnome/sources/nautilus-sendto/3.8/${name}.tar.xz"; + sha256 = "03fa46bff271acdbdedab6243b2a84e5ed3daa19c81b69d087b3e852c8fe5dab"; + }; + + buildInputs = [ glib pkgconfig gobjectIntrospection intltool makeWrapper ]; + + meta = with stdenv.lib; { + description = "Integrates Evolution and Pidgin into the Nautilus file manager"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/polari/default.nix b/pkgs/desktops/gnome-3/3.18/apps/polari/default.nix new file mode 100644 index 0000000000000..8efaa4e4aac84 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/polari/default.nix @@ -0,0 +1,22 @@ +{ stdenv, intltool, fetchurl, gdk_pixbuf, adwaita-icon-theme +, telepathy_glib, gjs, itstool, telepathy_idle +, pkgconfig, gtk3, glib, librsvg, gnome3, wrapGAppsHook }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + propagatedUserEnvPkgs = [ telepathy_idle ]; + + buildInputs = [ pkgconfig gtk3 glib intltool itstool adwaita-icon-theme wrapGAppsHook + telepathy_glib gjs gdk_pixbuf librsvg ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Polari; + description = "IRC chat client designed to integrate with the GNOME desktop"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/polari/src.nix b/pkgs/desktops/gnome-3/3.18/apps/polari/src.nix new file mode 100644 index 0000000000000..9d7497b61c7f4 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/polari/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "polari-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/polari/3.18/polari-3.18.0.tar.xz; + sha256 = "7b98c820a1e9a25a0f3a927e8d4ba8400296041f783301a764e37840c7ef6018"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/seahorse/default.nix b/pkgs/desktops/gnome-3/3.18/apps/seahorse/default.nix new file mode 100644 index 0000000000000..3b78babadd9a7 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/seahorse/default.nix @@ -0,0 +1,35 @@ +{ stdenv, intltool, fetchurl, vala +, pkgconfig, gtk3, glib +, makeWrapper, itstool, gnupg, libsoup +, gnome3, librsvg, gdk_pixbuf, gpgme +, libsecret, avahi, p11_kit, openssh }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + doCheck = true; + + propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ]; + + NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0"; + + buildInputs = [ pkgconfig gtk3 glib intltool itstool gnome3.gcr + gnome3.gsettings_desktop_schemas makeWrapper gnupg + gdk_pixbuf gnome3.defaultIconTheme librsvg gpgme + libsecret avahi libsoup p11_kit vala gnome3.gcr + openssh ]; + + preFixup = '' + wrapProgram "$out/bin/seahorse" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Seahorse; + description = "Application for managing encryption keys and passwords in the GnomeKeyring"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/seahorse/src.nix b/pkgs/desktops/gnome-3/3.18/apps/seahorse/src.nix new file mode 100644 index 0000000000000..1d790c81e4f92 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/seahorse/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "seahorse-3.16.0"; + + src = fetchurl { + url = mirror://gnome/sources/seahorse/3.16/seahorse-3.16.0.tar.xz; + sha256 = "770a5f03b8745054ef04cef9923dd713b1fbf309169150bc8dd32d7e5f7ee131"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/vinagre/default.nix b/pkgs/desktops/gnome-3/3.18/apps/vinagre/default.nix new file mode 100644 index 0000000000000..8b8b6248642c6 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/vinagre/default.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, vte, libxml2, gtkvnc, intltool +, libsecret, itstool, makeWrapper, librsvg }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ pkgconfig gtk3 vte libxml2 gtkvnc intltool libsecret + itstool makeWrapper gnome3.defaultIconTheme librsvg ]; + + preFixup = '' + wrapProgram "$out/bin/vinagre" \ + --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH:$out/share" + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Vinagre; + description = "Remote desktop viewer for GNOME"; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/apps/vinagre/src.nix b/pkgs/desktops/gnome-3/3.18/apps/vinagre/src.nix new file mode 100644 index 0000000000000..94b6d8a83e144 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/apps/vinagre/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "vinagre-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/vinagre/3.18/vinagre-3.18.0.tar.xz; + sha256 = "77214384c03df985551a5094ea16fd3f42b74c708123128b29baff6458b2fef9"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/adwaita-icon-theme/default.nix b/pkgs/desktops/gnome-3/3.18/core/adwaita-icon-theme/default.nix new file mode 100644 index 0000000000000..3c3a05dc3af8c --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/adwaita-icon-theme/default.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gnome3 +, iconnamingutils, gtk, gdk_pixbuf, librsvg, hicolor_icon_theme }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + # For convenience, we can specify adwaita-icon-theme only in packages + propagatedBuildInputs = [ hicolor_icon_theme ]; + + buildInputs = [ gdk_pixbuf librsvg ]; + + nativeBuildInputs = [ pkgconfig intltool iconnamingutils gtk ]; + + # remove a tree of dirs with no files within + postInstall = '' rm -rf "$out/locale" ''; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/adwaita-icon-theme/src.nix b/pkgs/desktops/gnome-3/3.18/core/adwaita-icon-theme/src.nix new file mode 100644 index 0000000000000..59fc291eb4efd --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/adwaita-icon-theme/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "adwaita-icon-theme-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/adwaita-icon-theme/3.18/adwaita-icon-theme-3.18.0.tar.xz; + sha256 = "5e9ce726001fdd8ee93c394fdc3cdb9e1603bbed5b7c62df453ccf521ec50e58"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/baobab/default.nix b/pkgs/desktops/gnome-3/3.18/core/baobab/default.nix new file mode 100644 index 0000000000000..2ff85662bbbb9 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/baobab/default.nix @@ -0,0 +1,32 @@ +{ stdenv, intltool, fetchurl, vala, libgtop +, pkgconfig, gtk3, glib +, bash, makeWrapper, itstool, libxml2 +, gnome3, librsvg, gdk_pixbuf, file }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + doCheck = true; + + NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0"; + + propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ]; + + buildInputs = [ vala pkgconfig gtk3 glib libgtop intltool itstool libxml2 + gnome3.gsettings_desktop_schemas makeWrapper file + gdk_pixbuf gnome3.defaultIconTheme librsvg ]; + + preFixup = '' + wrapProgram "$out/bin/baobab" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Baobab; + description = "Graphical application to analyse disk usage in any Gnome environment"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/baobab/src.nix b/pkgs/desktops/gnome-3/3.18/core/baobab/src.nix new file mode 100644 index 0000000000000..5032262f278de --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/baobab/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "baobab-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/baobab/3.18/baobab-3.18.0.tar.xz; + sha256 = "75924c53dd0e94d97c2f0ec30270fa3ffc59adfab7e21aac3ed9c6c088760b5a"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/caribou/default.nix b/pkgs/desktops/gnome-3/3.18/core/caribou/default.nix new file mode 100644 index 0000000000000..c2cb6a661abea --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/caribou/default.nix @@ -0,0 +1,31 @@ +{ fetchurl, stdenv, pkgconfig, gnome3, clutter, dbus, pythonPackages, libxml2, autoconf +, libxklavier, libXtst, gtk2, intltool, libxslt, at_spi2_core, automake114x }: + +let + majorVersion = "0.4"; +in +stdenv.mkDerivation rec { + name = "caribou-${majorVersion}.18.1"; + + src = fetchurl { + url = "mirror://gnome/sources/caribou/${majorVersion}/${name}.tar.xz"; + sha256 = "0l1ikx56ddgayvny3s2xv8hs3p23xsclw4zljs3cczv4b89dzymf"; + }; + + buildInputs = with gnome3; + [ glib pkgconfig gtk clutter at_spi2_core dbus pythonPackages.python automake114x + pythonPackages.pygobject3 libxml2 libXtst gtk2 intltool libxslt autoconf ]; + + propagatedBuildInputs = [ gnome3.libgee libxklavier ]; + + preBuild = '' + patchShebangs . + substituteInPlace libcaribou/Makefile.am --replace "--shared-library=libcaribou.so.0" "--shared-library=$out/lib/libcaribou.so.0" + ''; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; + +} diff --git a/pkgs/desktops/gnome-3/3.18/core/dconf-editor/default.nix b/pkgs/desktops/gnome-3/3.18/core/dconf-editor/default.nix new file mode 100644 index 0000000000000..5b2b055fe668a --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/dconf-editor/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl, vala, libxslt, pkgconfig, glib, dbus_glib, gnome3 +, libxml2, intltool, docbook_xsl_ns, docbook_xsl, makeWrapper }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ vala libxslt pkgconfig glib dbus_glib gnome3.gtk libxml2 gnome3.defaultIconTheme + intltool docbook_xsl docbook_xsl_ns makeWrapper gnome3.dconf ]; + + preFixup = '' + wrapProgram "$out/bin/dconf-editor" \ + --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/dconf-editor/src.nix b/pkgs/desktops/gnome-3/3.18/core/dconf-editor/src.nix new file mode 100644 index 0000000000000..eb15838bb48f7 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/dconf-editor/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "dconf-editor-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/dconf-editor/3.18/dconf-editor-3.18.0.tar.xz; + sha256 = "6579b8b216b068acae7d8301b5e2d57054c85a3f147c92355ffa46a62c052534"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/dconf/default.nix b/pkgs/desktops/gnome-3/3.18/core/dconf/default.nix new file mode 100644 index 0000000000000..990e2007a23f5 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/dconf/default.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchurl, vala, libxslt, pkgconfig, glib, dbus_glib, gnome3 +, libxml2, intltool, docbook_xsl_ns, docbook_xsl, makeWrapper }: + +let + majorVersion = "0.24"; +in +stdenv.mkDerivation rec { + name = "dconf-${version}"; + version = "${majorVersion}.0"; + + src = fetchurl { + url = "mirror://gnome/sources/dconf/${majorVersion}/${name}.tar.xz"; + sha256 = "4373e0ced1f4d7d68d518038796c073696280e22957babb29feb0267c630fec2"; + }; + + buildInputs = [ vala libxslt pkgconfig glib dbus_glib gnome3.gtk libxml2 + intltool docbook_xsl docbook_xsl_ns makeWrapper ]; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/empathy/default.nix b/pkgs/desktops/gnome-3/3.18/core/empathy/default.nix new file mode 100644 index 0000000000000..4c42c6c026d3c --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/empathy/default.nix @@ -0,0 +1,57 @@ +{ stdenv, intltool, fetchurl, webkitgtk, pkgconfig, gtk3, glib +, file, librsvg, gnome3, gdk_pixbuf +, dbus_glib, dbus_libs, telepathy_glib, telepathy_farstream +, clutter_gtk, clutter-gst, gst_all_1, cogl, gnome_online_accounts +, gcr, libsecret, folks, libpulseaudio, telepathy_mission_control +, telepathy_logger, libnotify, clutter, libsoup, gnutls +, evolution_data_server +, libcanberra_gtk3, p11_kit, farstream, libtool, shared_mime_info +, bash, makeWrapper, itstool, libxml2, libxslt, icu, libgee }: + +# TODO: enable more features + +let + majorVersion = "3.12"; +in +stdenv.mkDerivation rec { + name = "empathy-${majorVersion}.8"; + + src = fetchurl { + url = "mirror://gnome/sources/empathy/${majorVersion}/${name}.tar.xz"; + sha256 = "10z6ksia6yx7vg0wsdbk4w6vjgfg3cg3n04jf9bj2vr7kr5zvs7w"; + }; + + propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard + gnome_online_accounts shared_mime_info ]; + propagatedBuildInputs = [ folks telepathy_logger evolution_data_server + telepathy_mission_control ]; + buildInputs = [ pkgconfig gtk3 glib webkitgtk intltool itstool + libxml2 libxslt icu file makeWrapper + telepathy_glib clutter_gtk clutter-gst cogl + gst_all_1.gstreamer gst_all_1.gst-plugins-base + gcr libsecret libpulseaudio gnome3.yelp_xsl gdk_pixbuf + libnotify clutter libsoup gnutls libgee p11_kit + libcanberra_gtk3 telepathy_farstream farstream + gnome3.defaultIconTheme gnome3.gsettings_desktop_schemas + file libtool librsvg ]; + + NIX_CFLAGS_COMPILE = [ "-I${dbus_glib}/include/dbus-1.0" + "-I${dbus_libs}/include/dbus-1.0" + "-I${dbus_libs}/lib/dbus-1.0/include" ]; + + preFixup = '' + for f in $out/bin/* $out/libexec/*; do + wrapProgram $f \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gnome3.gnome_themes_standard}/share:$out/share:$GSETTINGS_SCHEMAS_PATH" + done + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Empathy; + description = "Messaging program which supports text, voice, video chat, and file transfers over many different protocols"; + maintainers = gnome3.maintainers; + # TODO: license = [ licenses.gpl2 licenses.lgpl2 ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/eog/default.nix b/pkgs/desktops/gnome-3/3.18/core/eog/default.nix new file mode 100644 index 0000000000000..fff901142dccc --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/eog/default.nix @@ -0,0 +1,25 @@ +{ fetchurl, stdenv, intltool, pkgconfig, itstool, libxml2, libjpeg, gnome3 +, shared_mime_info, makeWrapper, librsvg, libexif }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = with gnome3; + [ intltool pkgconfig itstool libxml2 libjpeg gtk glib libpeas makeWrapper librsvg + gsettings_desktop_schemas shared_mime_info adwaita-icon-theme gnome_desktop libexif ]; + + preFixup = '' + wrapProgram "$out/bin/eog" \ + --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${shared_mime_info}/share:${gnome3.adwaita-icon-theme}/share:${gnome3.gtk}/share:$out/share:$GSETTINGS_SCHEMAS_PATH" + + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/EyeOfGnome; + platforms = platforms.linux; + description = "GNOME image viewer"; + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/eog/src.nix b/pkgs/desktops/gnome-3/3.18/core/eog/src.nix new file mode 100644 index 0000000000000..154a02d7b4392 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/eog/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "eog-3.16.3"; + + src = fetchurl { + url = mirror://gnome/sources/eog/3.16/eog-3.16.3.tar.xz; + sha256 = "ee6d101f8e73aacc8d48256f06a780c6d0d5f3975990f375f58cd0e70816b766"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/epiphany/default.nix b/pkgs/desktops/gnome-3/3.18/core/epiphany/default.nix new file mode 100644 index 0000000000000..5a98770b6632c --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/epiphany/default.nix @@ -0,0 +1,42 @@ +{ stdenv, intltool, fetchurl, pkgconfig, gtk3, glib, nspr, icu +, bash, makeWrapper, gnome3, libwnck3, libxml2, libxslt, libtool +, webkitgtk, libsoup, libsecret, gnome_desktop, libnotify, p11_kit +, sqlite, gcr, avahi, nss, isocodes, itstool, file, which +, gdk_pixbuf, librsvg, gnome_common }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + # Tests need an X display + configureFlags = [ "--disable-static --disable-tests" ]; + + propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ]; + + nativeBuildInputs = [ pkgconfig file ]; + + buildInputs = [ gtk3 glib intltool libwnck3 libxml2 libxslt pkgconfig file + webkitgtk libsoup libsecret gnome_desktop libnotify libtool + sqlite isocodes nss itstool p11_kit nspr icu gnome3.yelp_tools + gdk_pixbuf gnome3.defaultIconTheme librsvg which gnome_common + gcr avahi gnome3.gsettings_desktop_schemas makeWrapper ]; + + NIX_CFLAGS_COMPILE = "-I${nspr}/include/nspr -I${nss}/include/nss -I${glib}/include/gio-unix-2.0"; + + enableParallelBuilding = true; + + preFixup = '' + for f in $out/bin/* $out/libexec/*; do + wrapProgram "$f" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + done + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Epiphany; + description = "WebKit based web browser for GNOME"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/epiphany/libxml_depend.patch b/pkgs/desktops/gnome-3/3.18/core/epiphany/libxml_depend.patch new file mode 100644 index 0000000000000..89e3694a02d9a --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/epiphany/libxml_depend.patch @@ -0,0 +1,10 @@ +--- configure.ac.orig 2015-04-08 18:53:52.284580835 +0200 ++++ configure.ac 2015-04-08 18:55:55.697225280 +0200 +@@ -113,6 +113,7 @@ + PKG_CHECK_MODULES(WEB_EXTENSION, [ + webkit2gtk-web-extension-4.0 >= $WEBKIT_GTK_REQUIRED + libsecret-1 >= $LIBSECRET_REQUIRED ++ libxml-2.0 >= $LIBXML_REQUIRED + ]) + AC_SUBST(WEB_EXTENSION_CFLAGS) + AC_SUBST(WEB_EXTENSION_LIBS) diff --git a/pkgs/desktops/gnome-3/3.18/core/epiphany/src.nix b/pkgs/desktops/gnome-3/3.18/core/epiphany/src.nix new file mode 100644 index 0000000000000..2ecf2c98d19ad --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/epiphany/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "epiphany-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/epiphany/3.18/epiphany-3.18.0.tar.xz; + sha256 = "d5ba67a8cd85c80b81e076862bcab3fc376ba51b0a1536ca7430608d1f50491d"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/evince/default.nix b/pkgs/desktops/gnome-3/3.18/core/evince/default.nix new file mode 100644 index 0000000000000..154182eef8875 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/evince/default.nix @@ -0,0 +1,64 @@ +{ fetchurl, stdenv, pkgconfig, intltool, perl, perlXMLParser, libxml2 +, glib, gtk3, pango, atk, gdk_pixbuf, shared_mime_info, itstool, gnome3 +, poppler, ghostscriptX, djvulibre, libspectre, libsecret , makeWrapper +, librsvg, recentListSize ? null # 5 is not enough, allow passing a different number +, gobjectIntrospection +}: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ + pkgconfig intltool perl perlXMLParser libxml2 + glib gtk3 pango atk gdk_pixbuf gobjectIntrospection + itstool gnome3.adwaita-icon-theme + gnome3.libgnome_keyring gnome3.gsettings_desktop_schemas + poppler ghostscriptX djvulibre libspectre + makeWrapper libsecret librsvg gnome3.adwaita-icon-theme + ]; + + configureFlags = [ + "--disable-nautilus" # Do not use nautilus + "--enable-introspection" + ]; + + NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0"; + + preConfigure = with stdenv.lib; + optionalString doCheck '' + for file in test/*.py; do + echo "patching $file" + sed '1s,/usr,${python},' -i "$file" + done + '' + optionalString (recentListSize != null) '' + sed -i 's/\(gtk_recent_chooser_set_limit .*\)5)/\1${builtins.toString recentListSize})/' shell/ev-open-recent-action.c + sed -i 's/\(if (++n_items == \)5\(.*\)/\1${builtins.toString recentListSize}\2/' shell/ev-window.c + ''; + + preFixup = '' + # Tell Glib/GIO about the MIME info directory, which is used + # by `g_file_info_get_content_type ()'. + wrapProgram "$out/bin/evince" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gtk3}/share:${shared_mime_info}/share:$out/share:$GSETTINGS_SCHEMAS_PATH" + + ''; + + doCheck = false; # would need pythonPackages.dogTail, which is missing + + meta = with stdenv.lib; { + homepage = http://www.gnome.org/projects/evince/; + description = "GNOME's document viewer"; + + longDescription = '' + Evince is a document viewer for multiple document formats. It + currently supports PDF, PostScript, DjVu, TIFF and DVI. The goal + of Evince is to replace the multiple document viewers that exist + on the GNOME Desktop with a single simple application. + ''; + + license = stdenv.lib.licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = [ maintainers.vcunat ]; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/evince/src.nix b/pkgs/desktops/gnome-3/3.18/core/evince/src.nix new file mode 100644 index 0000000000000..392aeefb4e962 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/evince/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "evince-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/evince/3.18/evince-3.18.0.tar.xz; + sha256 = "96e8351f6a6fc5823bb8f51178cde1182bd66481af6fb09bf58a18b673cafa70"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/evolution-data-server/default.nix b/pkgs/desktops/gnome-3/3.18/core/evolution-data-server/default.nix new file mode 100644 index 0000000000000..fb3c8bdceab77 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/evolution-data-server/default.nix @@ -0,0 +1,30 @@ +{ fetchurl, stdenv, pkgconfig, gnome3, python +, intltool, libsoup, libxml2, libsecret, icu, sqlite +, p11_kit, db, nspr, nss, libical, gperf, makeWrapper, valaSupport ? true, vala }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = with gnome3; + [ pkgconfig glib python intltool libsoup libxml2 gtk gnome_online_accounts + gcr p11_kit libgweather libgdata gperf makeWrapper icu sqlite gsettings_desktop_schemas ] + ++ stdenv.lib.optional valaSupport vala; + + propagatedBuildInputs = [ libsecret nss nspr libical db ]; + + # uoa irrelevant for now + configureFlags = [ "--disable-uoa" ] + ++ stdenv.lib.optional valaSupport "--enable-vala-bindings"; + + preFixup = '' + for f in "$out/libexec/"*; do + wrapProgram "$f" --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" + done + ''; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; + +} diff --git a/pkgs/desktops/gnome-3/3.18/core/evolution-data-server/src.nix b/pkgs/desktops/gnome-3/3.18/core/evolution-data-server/src.nix new file mode 100644 index 0000000000000..876b2236ef5b9 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/evolution-data-server/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "evolution-data-server-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/evolution-data-server/3.18/evolution-data-server-3.18.0.tar.xz; + sha256 = "ca4273b888912cadc474c1c2aebd2f02639381a9ddfa516a46cf9abd3dbc11f7"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/folks/default.nix b/pkgs/desktops/gnome-3/3.18/core/folks/default.nix new file mode 100644 index 0000000000000..6e200bdb3188f --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/folks/default.nix @@ -0,0 +1,43 @@ +{ fetchurl, stdenv, pkgconfig, glib, gnome3, nspr, intltool +, vala, sqlite, libxml2, dbus_glib, libsoup, nss, dbus_libs +, telepathy_glib, evolution_data_server, libsecret, db }: + +# TODO: enable more folks backends + +let + majorVersion = "0.11"; +in +stdenv.mkDerivation rec { + name = "folks-${majorVersion}.0"; + + src = fetchurl { + url = "mirror://gnome/sources/folks/${majorVersion}/${name}.tar.xz"; + sha256 = "0q9hny6a38zn0gamv0ji0pn3jw6bpn2i0fr6vbzkhm9h9ws0cqvz"; + }; + + propagatedBuildInputs = [ glib gnome3.libgee sqlite ]; + # dbus_daemon needed for tests + buildInputs = [ dbus_glib telepathy_glib evolution_data_server dbus_libs + vala libsecret libxml2 libsoup nspr nss intltool db ]; + nativeBuildInputs = [ pkgconfig ]; + + configureFlags = "--disable-fatal-warnings"; + + NIX_CFLAGS_COMPILE = ["-I${nspr}/include/nspr" "-I${nss}/include/nss" + "-I${dbus_glib}/include/dbus-1.0" "-I${dbus_libs}/include/dbus-1.0"]; + + enableParallelBuilding = true; + + postBuild = "rm -rf $out/share/gtk-doc"; + + meta = { + description = "Folks"; + + homepage = https://wiki.gnome.org/Projects/Folks; + + license = stdenv.lib.licenses.lgpl2Plus; + + maintainers = gnome3.maintainers; + platforms = stdenv.lib.platforms.gnu; # arbitrary choice + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gconf/default.nix b/pkgs/desktops/gnome-3/3.18/core/gconf/default.nix new file mode 100644 index 0000000000000..a4cb3e8c14646 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gconf/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl, pkgconfig, dbus_glib, gnome3 ? null, glib, libxml2 +, intltool, polkit, orbit, withGtk ? false }: + +assert withGtk -> (gnome3 != null); + +stdenv.mkDerivation rec { + + versionMajor = "3.2"; + versionMinor = "6"; + moduleName = "GConf"; + + origName = "${moduleName}-${versionMajor}.${versionMinor}"; + + name = "gconf-${versionMajor}.${versionMinor}"; + + src = fetchurl { + url = "mirror://gnome/sources/${moduleName}/${versionMajor}/${origName}.tar.xz"; + sha256 = "0k3q9nh53yhc9qxf1zaicz4sk8p3kzq4ndjdsgpaa2db0ccbj4hr"; + }; + + buildInputs = [ libxml2 polkit orbit ] ++ stdenv.lib.optional withGtk gnome3.gtk; + propagatedBuildInputs = [ glib dbus_glib ]; + nativeBuildInputs = [ pkgconfig intltool ]; + + # ToDo: ldap reported as not found but afterwards reported as supported + + meta = with stdenv.lib; { + homepage = http://projects.gnome.org/gconf/; + description = "A system for storing application preferences"; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gcr/default.nix b/pkgs/desktops/gnome-3/3.18/core/gcr/default.nix new file mode 100644 index 0000000000000..e0e8d1e73382c --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gcr/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gnupg, p11_kit, glib +, libgcrypt, libtasn1, dbus_glib, gtk, pango, gdk_pixbuf, atk +, gobjectIntrospection, makeWrapper, libxslt, vala, gnome3 }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ + pkgconfig intltool gnupg glib gobjectIntrospection libxslt + libgcrypt libtasn1 dbus_glib gtk pango gdk_pixbuf atk makeWrapper vala + ]; + + propagatedBuildInputs = [ p11_kit ]; + + #doCheck = true; + + #enableParallelBuilding = true; issues on hydra + + preFixup = '' + wrapProgram "$out/bin/gcr-viewer" \ + --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gcr/src.nix b/pkgs/desktops/gnome-3/3.18/core/gcr/src.nix new file mode 100644 index 0000000000000..e2b4ad195ffe5 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gcr/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gcr-3.16.0"; + + src = fetchurl { + url = mirror://gnome/sources/gcr/3.16/gcr-3.16.0.tar.xz; + sha256 = "ecfe8df41cc88158364bb15addc670b11e539fe844742983629ba2323888d075"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/default.nix b/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/default.nix new file mode 100644 index 0000000000000..51b67afb01fd7 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/default.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, pkgconfig, glib, itstool, libxml2, xorg, dbus +, intltool, accountsservice, libX11, gnome3, systemd, gnome_session +, gtk, libcanberra_gtk3, pam, libtool, gobjectIntrospection }: + +stdenv.mkDerivation rec { + name = "gdm-${gnome3.version}.2"; + + src = fetchurl { + url = "mirror://gnome/sources/gdm/${gnome3.version}/${name}.tar.xz"; + sha256 = "0mhv3q8z208qvhz00zrxlqn7w9gi5vy6w8dpjh5s2ka28l3yhbn3"; + }; + + preConfigure = '' + substituteInPlace ./configure --replace "/usr/bin/X" "${xorg.xorgserver}/bin/X" + substituteInPlace daemon/gdm-simple-slave.c --replace 'BINDIR "/gnome-session' '"${gnome_session}/bin/gnome-session' + substituteInPlace daemon/gdm-launch-environment.c --replace 'BINDIR "/dbus-launch' '"${dbus.tools}/bin/dbus-launch' + substituteInPlace data/gdm.conf-custom.in --replace '#WaylandEnable=false' 'WaylandEnable=false' + sed 's/#Enable=true/Enable=true/' -i data/gdm.conf-custom.in + ''; + + configureFlags = [ "--localstatedir=/var" "--with-systemd=yes" "--without-plymouth" + "--with-systemdsystemunitdir=$(out)/etc/systemd/system" + "--with-initial-vt=10" ]; + + buildInputs = [ pkgconfig glib itstool libxml2 intltool + accountsservice gnome3.dconf systemd + gobjectIntrospection libX11 gtk + libcanberra_gtk3 pam libtool ]; + + #enableParallelBuilding = true; # problems compiling + + # Disable Access Control because our X does not support FamilyServerInterpreted yet + patches = [ ./xserver_path.patch ./sessions_dir.patch ./disable_x_access_control.patch ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Projects/GDM; + description = "A program that manages graphical display servers and handles graphical user logins"; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/disable_x_access_control.patch b/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/disable_x_access_control.patch new file mode 100644 index 0000000000000..7691a9e86f0fd --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/disable_x_access_control.patch @@ -0,0 +1,15 @@ +--- gdm-3.16.0/daemon/gdm-display.c.orig 2015-04-08 13:53:14.370274369 +0200 ++++ gdm-3.16.0/daemon/gdm-display.c 2015-04-08 13:53:36.287520435 +0200 +@@ -1706,9 +1706,10 @@ + + gdm_error_trap_push (); + +- for (i = 0; i < G_N_ELEMENTS (host_entries); i++) { ++ /*for (i = 0; i < G_N_ELEMENTS (host_entries); i++) { + XAddHost (self->priv->x11_display, &host_entries[i]); +- } ++ }*/ ++ XDisableAccessControl(self->priv->x11_display); + + XSync (self->priv->x11_display, False); + if (gdm_error_trap_pop ()) { diff --git a/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/sessions_dir.patch b/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/sessions_dir.patch new file mode 100644 index 0000000000000..b8fbad4d731d0 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/sessions_dir.patch @@ -0,0 +1,17 @@ +diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c +index f759d2d..d154716 100644 +--- a/daemon/gdm-session.c ++++ b/daemon/gdm-session.c +@@ -373,9 +373,12 @@ get_system_session_dirs (void) + #ifdef ENABLE_WAYLAND_SUPPORT + DATADIR "/wayland-sessions/", + #endif ++ NULL, + NULL + }; + ++ search_dirs[4] = getenv("GDM_SESSIONS_DIR") != NULL ? getenv("GDM_SESSIONS_DIR") : NULL; ++ + return search_dirs; + } + diff --git a/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/xserver_path.patch b/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/xserver_path.patch new file mode 100644 index 0000000000000..b451d129391a0 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/xserver_path.patch @@ -0,0 +1,83 @@ +--- a/daemon/gdm-server.c 2014-07-30 23:00:17.786841724 +0200 ++++ b/daemon/gdm-server.c 2014-07-30 23:02:10.491239180 +0200 +@@ -322,7 +322,11 @@ + fallback: + #endif + +- server->priv->command = g_strdup_printf (X_SERVER X_SERVER_ARG_FORMAT, verbosity, debug_options); ++ if (g_getenv("GDM_X_SERVER") != NULL) { ++ server->priv->command = g_strdup (g_getenv("GDM_X_SERVER")); ++ } else { ++ server->priv->command = g_strdup_printf (X_SERVER X_SERVER_ARG_FORMAT, verbosity, debug_options); ++ } + } + + static gboolean +--- gdm-3.16.0/daemon/gdm-x-session.c.orig 2015-04-15 18:44:16.875743928 +0200 ++++ gdm-3.16.0/daemon/gdm-x-session.c 2015-04-16 13:34:02.335708638 +0200 +@@ -207,6 +207,8 @@ + char *display_fd_string = NULL; + char *vt_string = NULL; + char *display_number; ++ int nixos_argc = 0; ++ char **nixos_argv = NULL; + gsize display_number_size; + + auth_file = prepare_auth_file (); +@@ -236,7 +238,15 @@ + + display_fd_string = g_strdup_printf ("%d", DISPLAY_FILENO); + +- g_ptr_array_add (arguments, X_SERVER); ++ if (g_getenv("GDM_X_SERVER") != NULL) { ++ int i = 0; ++ g_shell_parse_argv(g_getenv("GDM_X_SERVER"), &nixos_argc, &nixos_argv, NULL); ++ for (i = 0; i < nixos_argc; i++) { ++ g_ptr_array_add (arguments, nixos_argv[i]); ++ } ++ } else { ++ g_ptr_array_add (arguments, X_SERVER); ++ } + + if (vt_string != NULL) { + g_ptr_array_add (arguments, vt_string); +@@ -259,12 +269,12 @@ + g_ptr_array_add (arguments, "-noreset"); + g_ptr_array_add (arguments, "-keeptty"); + +- g_ptr_array_add (arguments, "-verbose"); ++ /*g_ptr_array_add (arguments, "-verbose"); + if (state->debug_enabled) { + g_ptr_array_add (arguments, "7"); + } else { + g_ptr_array_add (arguments, "3"); +- } ++ }*/ + + if (state->debug_enabled) { + g_ptr_array_add (arguments, "-core"); +@@ -275,6 +285,9 @@ + (const char * const *) arguments->pdata, + &error); + g_free (display_fd_string); ++ if (nixos_argv) { ++ g_strfreev (nixos_argv); ++ } + g_clear_object (&launcher); + g_ptr_array_free (arguments, TRUE); + +--- gdm-3.16.0/daemon/gdm-session.c.orig 2015-04-16 14:19:01.392802683 +0200 ++++ gdm-3.16.0/daemon/gdm-session.c 2015-04-16 14:20:36.012296764 +0200 +@@ -2359,6 +2359,12 @@ + gchar *desktop_names; + const char *locale; + ++ if (g_getenv ("GDM_X_SERVER") != NULL) { ++ gdm_session_set_environment_variable (self, ++ "GDM_X_SERVER", ++ g_getenv ("GDM_X_SERVER")); ++ } ++ + gdm_session_set_environment_variable (self, + "GDMSESSION", + get_session_name (self)); diff --git a/pkgs/desktops/gnome-3/3.18/core/gdm/default.nix b/pkgs/desktops/gnome-3/3.18/core/gdm/default.nix new file mode 100644 index 0000000000000..1db969651317c --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gdm/default.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, pkgconfig, glib, itstool, libxml2, xorg, dbus +, intltool, accountsservice, libX11, gnome3, systemd, gnome_session +, gtk, libcanberra_gtk3, pam, libtool, gobjectIntrospection }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + # Only needed to make it build + preConfigure = '' + substituteInPlace ./configure --replace "/usr/bin/X" "${xorg.xorgserver}/bin/X" + ''; + + configureFlags = [ "--sysconfdir=/etc" + "--localstatedir=/var" + "--with-systemd=yes" + "--with-systemdsystemunitdir=$(out)/etc/systemd/system" ]; + + buildInputs = [ pkgconfig glib itstool libxml2 intltool + accountsservice gnome3.dconf systemd + gobjectIntrospection libX11 gtk + libcanberra_gtk3 pam libtool ]; + + #enableParallelBuilding = true; # problems compiling + + preBuild = '' + substituteInPlace daemon/gdm-simple-slave.c --replace 'BINDIR "/gnome-session' '"${gnome_session}/bin/gnome-session' + ''; + + # Disable Access Control because our X does not support FamilyServerInterpreted yet + patches = [ ./xserver_path.patch ./sessions_dir.patch + ./disable_x_access_control.patch ./no-dbus-launch.patch ]; + + installFlags = [ "sysconfdir=$(out)/etc" "dbusconfdir=$(out)/etc/dbus-1/system.d" ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Projects/GDM; + description = "A program that manages graphical display servers and handles graphical user logins"; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gdm/disable_x_access_control.patch b/pkgs/desktops/gnome-3/3.18/core/gdm/disable_x_access_control.patch new file mode 100644 index 0000000000000..e100e013b786f --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gdm/disable_x_access_control.patch @@ -0,0 +1,13 @@ +--- gdm-3.14.2/daemon/gdm-slave.c.orig 2015-04-16 15:05:27.844353079 +0200 ++++ gdm-3.14.2/daemon/gdm-slave.c 2015-04-16 15:05:40.240417915 +0200 +@@ -369,8 +369,9 @@ + gdm_error_trap_push (); + + for (i = 0; i < G_N_ELEMENTS (host_entries); i++) { +- XAddHost (slave->priv->server_display, &host_entries[i]); ++ //XAddHost (slave->priv->server_display, &host_entries[i]); + } ++ XDisableAccessControl(slave->priv->server_display); + + XSync (slave->priv->server_display, False); + if (gdm_error_trap_pop ()) { diff --git a/pkgs/desktops/gnome-3/3.18/core/gdm/no-dbus-launch.patch b/pkgs/desktops/gnome-3/3.18/core/gdm/no-dbus-launch.patch new file mode 100644 index 0000000000000..c87554078c7c4 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gdm/no-dbus-launch.patch @@ -0,0 +1,20 @@ +--- a/daemon/gdm-launch-environment.c 2015-06-22 15:11:07.277474398 +0000 ++++ b/daemon/gdm-launch-environment.c 2015-06-22 15:12:31.301157665 +0000 +@@ -48,8 +48,6 @@ + #include "gdm-session-enum-types.h" + #include "gdm-launch-environment.h" + +-#define DBUS_LAUNCH_COMMAND BINDIR "/dbus-launch --exit-with-session" +- + extern char **environ; + + #define GDM_LAUNCH_ENVIRONMENT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_LAUNCH_ENVIRONMENT, GdmLaunchEnvironmentPrivate)) +@@ -512,7 +510,7 @@ + gdm_session_select_program (launch_environment->priv->session, launch_environment->priv->command); + } else { + /* wrap it in dbus-launch */ +- char *command = g_strdup_printf ("%s %s", DBUS_LAUNCH_COMMAND, launch_environment->priv->command); ++ char *command = g_strdup (launch_environment->priv->command); + + gdm_session_select_program (launch_environment->priv->session, command); + g_free (command); diff --git a/pkgs/desktops/gnome-3/3.18/core/gdm/sessions_dir.patch b/pkgs/desktops/gnome-3/3.18/core/gdm/sessions_dir.patch new file mode 100644 index 0000000000000..b8fbad4d731d0 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gdm/sessions_dir.patch @@ -0,0 +1,17 @@ +diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c +index f759d2d..d154716 100644 +--- a/daemon/gdm-session.c ++++ b/daemon/gdm-session.c +@@ -373,9 +373,12 @@ get_system_session_dirs (void) + #ifdef ENABLE_WAYLAND_SUPPORT + DATADIR "/wayland-sessions/", + #endif ++ NULL, + NULL + }; + ++ search_dirs[4] = getenv("GDM_SESSIONS_DIR") != NULL ? getenv("GDM_SESSIONS_DIR") : NULL; ++ + return search_dirs; + } + diff --git a/pkgs/desktops/gnome-3/3.18/core/gdm/src.nix b/pkgs/desktops/gnome-3/3.18/core/gdm/src.nix new file mode 100644 index 0000000000000..acd46534e14f3 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gdm/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gdm-3.14.2"; + + src = fetchurl { + url = mirror://gnome/sources/gdm/3.14/gdm-3.14.2.tar.xz; + sha256 = "e20eb61496161ad95b1058dbf8aea9b7b004df4d0ea6b0fab4401397d9db5930"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gdm/xserver_path.patch b/pkgs/desktops/gnome-3/3.18/core/gdm/xserver_path.patch new file mode 100644 index 0000000000000..412daee9f2707 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gdm/xserver_path.patch @@ -0,0 +1,15 @@ +--- a/daemon/gdm-server.c 2014-07-30 23:00:17.786841724 +0200 ++++ b/daemon/gdm-server.c 2014-07-30 23:02:10.491239180 +0200 +@@ -322,7 +322,11 @@ + fallback: + #endif + +- server->priv->command = g_strdup_printf (X_SERVER X_SERVER_ARG_FORMAT, verbosity, debug_options); ++ if (g_getenv("GDM_X_SERVER") != NULL) { ++ server->priv->command = g_strdup (g_getenv("GDM_X_SERVER")); ++ } else { ++ server->priv->command = g_strdup_printf (X_SERVER X_SERVER_ARG_FORMAT, verbosity, debug_options); ++ } + } + + static gboolean diff --git a/pkgs/desktops/gnome-3/3.18/core/geocode-glib/default.nix b/pkgs/desktops/gnome-3/3.18/core/geocode-glib/default.nix new file mode 100644 index 0000000000000..4d75bdc499634 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/geocode-glib/default.nix @@ -0,0 +1,14 @@ +{ fetchurl, stdenv, pkgconfig, gnome3, intltool, libsoup, json_glib }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = with gnome3; + [ intltool pkgconfig glib libsoup json_glib ]; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; + +} diff --git a/pkgs/desktops/gnome-3/3.18/core/geocode-glib/src.nix b/pkgs/desktops/gnome-3/3.18/core/geocode-glib/src.nix new file mode 100644 index 0000000000000..faaadf5bb91fd --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/geocode-glib/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "geocode-glib-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/geocode-glib/3.18/geocode-glib-3.18.0.tar.xz; + sha256 = "8fb7f0d569e3e6696aaa1fdf275cb3094527ec5e9fa36fd88dd633dfec63495d"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gjs/default.nix b/pkgs/desktops/gnome-3/3.18/core/gjs/default.nix new file mode 100644 index 0000000000000..792e34c7b1480 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gjs/default.nix @@ -0,0 +1,28 @@ +{ fetchurl, stdenv, pkgconfig, gnome3, gtk3, gobjectIntrospection +, spidermonkey_24, pango, readline, glib, libxml2 }: + +let + majorVersion = "1.43"; +in +stdenv.mkDerivation rec { + name = "gjs-${majorVersion}.3"; + + src = fetchurl { + url = "mirror://gnome/sources/gjs/${majorVersion}/${name}.tar.xz"; + sha256 = "0khwm8l6m6x71rwf3q92d6scbhmrpiw7kqmj34nn588fb7a4vdc2"; + }; + + buildInputs = [ libxml2 gobjectIntrospection pkgconfig gtk3 glib pango readline ]; + + propagatedBuildInputs = [ spidermonkey_24 ]; + + postInstall = '' + sed 's|-lreadline|-L${readline}/lib -lreadline|g' -i $out/lib/libgjs.la + ''; + + meta = with stdenv.lib; { + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; + +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-backgrounds/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-backgrounds/default.nix new file mode 100644 index 0000000000000..32d6d6e7535a7 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-backgrounds/default.nix @@ -0,0 +1,12 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, intltool }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + nativeBuildInputs = [ pkgconfig intltool ]; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-backgrounds/src.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-backgrounds/src.nix new file mode 100644 index 0000000000000..b191826a2d015 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-backgrounds/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-backgrounds-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-backgrounds/3.18/gnome-backgrounds-3.18.0.tar.xz; + sha256 = "aa560f0e5f12a308dd36aaac2fff32916abd61d42f47b4bc42c8c7011bf2a7b9"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-bluetooth/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-bluetooth/default.nix new file mode 100644 index 0000000000000..7fae0b5c67f4d --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-bluetooth/default.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchurl, gnome3, pkgconfig, gtk3, intltool, glib +, udev, itstool, libxml2, makeWrapper, libnotify, libcanberra_gtk3 }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ pkgconfig intltool glib gtk3 udev libxml2 gnome3.defaultIconTheme + makeWrapper gnome3.gsettings_desktop_schemas itstool + libnotify libcanberra_gtk3 ]; + + preFixup = '' + wrapProgram "$out/bin/bluetooth-sendto" \ + --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + homepage = https://help.gnome.org/users/gnome-bluetooth/stable/index.html.en; + description = "Application that let you manage Bluetooth in the GNOME destkop"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-bluetooth/src.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-bluetooth/src.nix new file mode 100644 index 0000000000000..eb5f614997658 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-bluetooth/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-bluetooth-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-bluetooth/3.18/gnome-bluetooth-3.18.0.tar.xz; + sha256 = "f5c0d43226c4ec6a545dddb86181adadbc2b5cf720b640026003b9660fba0b8f"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-calculator/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-calculator/default.nix new file mode 100644 index 0000000000000..7ca66863d867b --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-calculator/default.nix @@ -0,0 +1,30 @@ +{ stdenv, intltool, fetchurl, pkgconfig, libxml2 +, bash, gtk3, glib, makeWrapper +, itstool, gnome3, librsvg, gdk_pixbuf, mpfr, gmp }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0"; + + propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ]; + + buildInputs = [ bash pkgconfig gtk3 glib intltool itstool + libxml2 gnome3.gtksourceview mpfr gmp + gdk_pixbuf gnome3.defaultIconTheme librsvg + gnome3.gsettings_desktop_schemas makeWrapper ]; + + preFixup = '' + wrapProgram "$out/bin/gnome-calculator" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/action/show/Apps/Calculator; + description = "Application that solves mathematical equations and is suitable as a default application in a Desktop environment"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-calculator/src.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-calculator/src.nix new file mode 100644 index 0000000000000..42fc4667087d5 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-calculator/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-calculator-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-calculator/3.18/gnome-calculator-3.18.0.tar.xz; + sha256 = "54dc40de68b118c06b443f9d8a56397425434a45dddbb2daba7b720b77b35672"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-common/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-common/default.nix new file mode 100644 index 0000000000000..f9261e183ef17 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-common/default.nix @@ -0,0 +1,17 @@ +{ stdenv, fetchurl, which, gnome3, autoconf, automake }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + patches = [(fetchurl { + name = "gnome-common-patch"; + url = "https://bug697543.bugzilla-attachments.gnome.org/attachment.cgi?id=240935"; + sha256 = "17abp7czfzirjm7qsn2czd03hdv9kbyhk3lkjxg2xsf5fky7z7jl"; + })]; + + propagatedBuildInputs = [ which autoconf automake ]; # autogen.sh which is using gnome_common tends to require which + + meta = with stdenv.lib; { + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-common/src.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-common/src.nix new file mode 100644 index 0000000000000..8ffe7e20e1a99 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-common/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-common-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-common/3.18/gnome-common-3.18.0.tar.xz; + sha256 = "22569e370ae755e04527b76328befc4c73b62bfd4a572499fde116b8318af8cf"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-contacts/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-contacts/default.nix new file mode 100644 index 0000000000000..6ec3c7871bb9f --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-contacts/default.nix @@ -0,0 +1,47 @@ +{ stdenv, intltool, fetchurl, evolution_data_server, db +, pkgconfig, gtk3, glib, libsecret +, libchamplain, clutter_gtk, geocode_glib +, bash, makeWrapper, itstool, folks, libnotify, libxml2 +, gnome3, librsvg, gdk_pixbuf, file, telepathy_glib, nspr, nss +, libsoup, vala, dbus_glib, automake115x, autoconf }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + doCheck = true; + + propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard evolution_data_server ]; + + # force build from vala + preBuild = '' + touch src/*.vala + ''; + + buildInputs = [ pkgconfig gtk3 glib intltool itstool evolution_data_server + gnome3.gsettings_desktop_schemas makeWrapper file libnotify + folks gnome3.gnome_desktop telepathy_glib libsecret dbus_glib + libxml2 libsoup gnome3.gnome_online_accounts nspr nss + gdk_pixbuf gnome3.defaultIconTheme librsvg + libchamplain clutter_gtk geocode_glib + vala automake115x autoconf db ]; + + preFixup = '' + for f in "$out/bin/gnome-contacts" "$out/libexec/gnome-contacts-search-provider"; do + wrapProgram $f \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + done + ''; + + patches = [ ./gio_unix.patch ]; + + patchFlags = "-p0"; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Contacts; + description = "Contacts is GNOME's integrated address book"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-contacts/gio_unix.patch b/pkgs/desktops/gnome-3/3.18/core/gnome-contacts/gio_unix.patch new file mode 100644 index 0000000000000..f1b3d3c94ac26 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-contacts/gio_unix.patch @@ -0,0 +1,10 @@ +--- configure.ac.orig 2015-04-09 18:45:50.581232289 +0200 ++++ configure.ac 2015-04-09 18:45:59.744280137 +0200 +@@ -54,6 +54,7 @@ + champlain-0.12 + clutter-gtk-1.0 + geocode-glib-1.0 >= 3.15.3 ++ gio-unix-2.0 + " + PKG_CHECK_MODULES(CONTACTS, [$pkg_modules]) + diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-contacts/src.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-contacts/src.nix new file mode 100644 index 0000000000000..94fcfb85fdfea --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-contacts/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-contacts-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-contacts/3.18/gnome-contacts-3.18.0.tar.xz; + sha256 = "c81ad739a1f554e4c89979564565e32ceaf1d2cc6c93a6a75d929d7d1fe8e287"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-control-center/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-control-center/default.nix new file mode 100644 index 0000000000000..e7ed0c6bade85 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-control-center/default.nix @@ -0,0 +1,59 @@ +{ fetchurl, stdenv, pkgconfig, gnome3, ibus, intltool, upower, makeWrapper +, libcanberra, libcanberra_gtk3, accountsservice, libpwquality, libpulseaudio +, gdk_pixbuf, librsvg, libxkbfile, libnotify +, libxml2, polkit, libxslt, libgtop, libsoup, colord, colord-gtk +, cracklib, python, libkrb5, networkmanagerapplet, networkmanager +, libwacom, samba, shared_mime_info, tzdata, icu, libtool, udev +, docbook_xsl, docbook_xsl_ns, modemmanager, clutter, clutter_gtk +, fontconfig, sound-theme-freedesktop }: + +# http://ftp.gnome.org/pub/GNOME/teams/releng/3.10.2/gnome-suites-core-3.10.2.modules +# TODO: bluetooth, wacom, printers + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + propagatedUserEnvPkgs = + [ gnome3.gnome_themes_standard gnome3.libgnomekbd ]; + + # https://bugzilla.gnome.org/show_bug.cgi?id=752596 + enableParallelBuilding = false; + + buildInputs = with gnome3; + [ pkgconfig intltool ibus gtk glib upower libcanberra gsettings_desktop_schemas + libxml2 gnome_desktop gnome_settings_daemon polkit libxslt libgtop gnome-menus + gnome_online_accounts libsoup colord libpulseaudio fontconfig colord-gtk libpwquality + accountsservice libkrb5 networkmanagerapplet libwacom samba libnotify libxkbfile + shared_mime_info icu libtool docbook_xsl docbook_xsl_ns gnome3.grilo + gdk_pixbuf gnome3.defaultIconTheme librsvg clutter clutter_gtk + gnome3.vino udev libcanberra_gtk3 + networkmanager modemmanager makeWrapper gnome3.gnome-bluetooth ]; + + preBuild = '' + substituteInPlace tz.h --replace "/usr/share/zoneinfo/zone.tab" "${tzdata}/share/zoneinfo/zone.tab" + substituteInPlace panels/datetime/tz.h --replace "/usr/share/zoneinfo/zone.tab" "${tzdata}/share/zoneinfo/zone.tab" + + # hack to make test-endianess happy + mkdir -p $out/share/locale + substituteInPlace panels/datetime/test-endianess.c --replace "/usr/share/locale/" "$out/share/locale/" + ''; + + patches = [ ./vpn_plugins_path.patch ]; + + preFixup = with gnome3; '' + wrapProgram $out/bin/gnome-control-center \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:${sound-theme-freedesktop}/share:$out/share:$out/share/gnome-control-center:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + for i in $out/share/applications/*; do + substituteInPlace $i --replace "gnome-control-center" "$out/bin/gnome-control-center" + done + ''; + + meta = with stdenv.lib; { + description = "Utilities to configure the GNOME desktop"; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; + +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-control-center/src.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-control-center/src.nix new file mode 100644 index 0000000000000..f87859fe51ff2 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-control-center/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-control-center-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-control-center/3.18/gnome-control-center-3.18.0.tar.xz; + sha256 = "42648eda11fc1df0f717d7d3b385cb7c519fdd084ed4e3fad2e55fd11712fb52"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-control-center/vpn_plugins_path.patch b/pkgs/desktops/gnome-3/3.18/core/gnome-control-center/vpn_plugins_path.patch new file mode 100644 index 0000000000000..e25105a303f41 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-control-center/vpn_plugins_path.patch @@ -0,0 +1,19 @@ +diff --git a/panels/network/connection-editor/vpn-helpers.c b/panels/network/connection-editor/vpn-helpers.c +index 7dc23c2..fcb1384 100644 +--- a/panels/network/connection-editor/vpn-helpers.c ++++ b/panels/network/connection-editor/vpn-helpers.c +@@ -95,14 +95,6 @@ vpn_get_plugins (GError **error) + if (!so_path) + goto next; + +- /* Remove any path and extension components, then reconstruct path +- * to the SO in LIBDIR +- */ +- so_name = g_path_get_basename (so_path); +- g_free (so_path); +- so_path = g_build_filename (NM_VPN_MODULE_DIR, so_name, NULL); +- g_free (so_name); +- + module = g_module_open (so_path, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL); + if (!module) { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "Cannot load the VPN plugin which provides the " diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-desktop/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-desktop/default.nix new file mode 100644 index 0000000000000..bf0ccd0224ee3 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-desktop/default.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchurl, pkgconfig, python, libxml2Python, libxslt, which, libX11, gnome3, gtk3, glib +, intltool, gnome_doc_utils, libxkbfile, xkeyboard_config, isocodes, itstool, wayland +, gobjectIntrospection }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + # this should probably be setuphook for glib + NIX_CFLAGS_COMPILE = "-I${glib}/include/gio-unix-2.0"; + + enableParallelBuilding = true; + + buildInputs = [ pkgconfig python libxml2Python libxslt which libX11 + xkeyboard_config isocodes itstool wayland + gtk3 glib intltool gnome_doc_utils libxkbfile + gobjectIntrospection ]; + + propagatedBuildInputs = [ gnome3.gsettings_desktop_schemas ]; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-desktop/src.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-desktop/src.nix new file mode 100644 index 0000000000000..84fbb8ebdff45 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-desktop/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-desktop-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-desktop/3.18/gnome-desktop-3.18.0.tar.xz; + sha256 = "44c806b16ea7d38bdc0e6343f2cb6be97afd7f64490f30c0cb5c3373e89a9d44"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-dictionary/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-dictionary/default.nix new file mode 100644 index 0000000000000..1d1f9d18c5662 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-dictionary/default.nix @@ -0,0 +1,32 @@ +{ stdenv, intltool, fetchurl +, pkgconfig, gtk3, glib +, bash, makeWrapper, itstool, libxml2 +, gnome3, librsvg, gdk_pixbuf, file }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + doCheck = true; + + NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0"; + + propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ]; + propagatedBuildInputs = [ gdk_pixbuf gnome3.defaultIconTheme librsvg ]; + + buildInputs = [ pkgconfig gtk3 glib intltool itstool libxml2 file + gnome3.gsettings_desktop_schemas makeWrapper ]; + + preFixup = '' + wrapProgram "$out/bin/gnome-dictionary" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix XDG_DATA_DIRS : "${gtk3}/share:${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Dictionary; + description = "Dictionary is the GNOME application to look up definitions"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-dictionary/src.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-dictionary/src.nix new file mode 100644 index 0000000000000..9e3660f207b30 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-dictionary/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-dictionary-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-dictionary/3.18/gnome-dictionary-3.18.0.tar.xz; + sha256 = "5338962124f6d784920ed4968d98734a7589513b36e4f4a6ff00d1ed5afb4ead"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-disk-utility/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-disk-utility/default.nix new file mode 100644 index 0000000000000..3f9f653bdba1b --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-disk-utility/default.nix @@ -0,0 +1,35 @@ +{ stdenv, intltool, fetchurl, pkgconfig, udisks2, libsecret, libdvdread +, bash, gtk3, glib, makeWrapper, cracklib, libnotify +, itstool, gnome3, librsvg, gdk_pixbuf, libxml2, python +, libcanberra_gtk3, libxslt, libtool, docbook_xsl, libpwquality }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + doCheck = true; + + NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0"; + + propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ]; + + buildInputs = [ bash pkgconfig gtk3 glib intltool itstool + libxslt libtool libsecret libpwquality cracklib + libnotify libdvdread libcanberra_gtk3 docbook_xsl + gdk_pixbuf gnome3.defaultIconTheme + librsvg udisks2 gnome3.gnome_settings_daemon + gnome3.gsettings_desktop_schemas makeWrapper libxml2 ]; + + preFixup = '' + wrapProgram "$out/bin/gnome-disks" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + homepage = http://en.wikipedia.org/wiki/GNOME_Disks; + description = "A udisks graphical front-end"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-disk-utility/src.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-disk-utility/src.nix new file mode 100644 index 0000000000000..29589586625e8 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-disk-utility/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-disk-utility-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-disk-utility/3.18/gnome-disk-utility-3.18.0.tar.xz; + sha256 = "e7363107e40fb1e7fb9f65e37194c0e8da3928f9ec35a4b27a5c439c64e51686"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-font-viewer/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-font-viewer/default.nix new file mode 100644 index 0000000000000..54767dbc4c591 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-font-viewer/default.nix @@ -0,0 +1,31 @@ +{ stdenv, intltool, fetchurl +, pkgconfig, gtk3, glib +, bash, makeWrapper, itstool +, gnome3, librsvg, gdk_pixbuf }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + doCheck = true; + + NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0"; + + propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ]; + + buildInputs = [ pkgconfig gtk3 glib intltool itstool gnome3.gnome_desktop + gdk_pixbuf gnome3.defaultIconTheme librsvg + gnome3.gsettings_desktop_schemas makeWrapper ]; + + preFixup = '' + wrapProgram "$out/bin/gnome-font-viewer" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + description = "Program that can preview fonts and create thumbnails for fonts"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-font-viewer/src.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-font-viewer/src.nix new file mode 100644 index 0000000000000..256890e8079c2 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-font-viewer/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-font-viewer-3.16.2"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-font-viewer/3.16/gnome-font-viewer-3.16.2.tar.xz; + sha256 = "f5367417d926d1dbe175aceb8eb4d2733d723a237428f130edd4b4023c0dc1cf"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-keyring/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-keyring/default.nix new file mode 100644 index 0000000000000..8e755383dd629 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-keyring/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchurl, pkgconfig, dbus, libgcrypt, libtasn1, pam, python, glib, libxslt +, intltool, pango, gcr, gdk_pixbuf, atk, p11_kit, makeWrapper +, docbook_xsl_ns, docbook_xsl, gnome3 }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = with gnome3; [ + dbus libgcrypt pam python gtk3 gconf libgnome_keyring + pango gcr gdk_pixbuf atk p11_kit makeWrapper + ]; + + propagatedBuildInputs = [ glib libtasn1 libxslt ]; + + nativeBuildInputs = [ pkgconfig intltool docbook_xsl_ns docbook_xsl ]; + + configureFlags = [ + "--with-ca-certificates=/etc/ssl/certs/ca-certificates.crt" # NixOS hardcoded path + "--with-pkcs11-config=$$out/etc/pkcs11/" # installation directories + "--with-pkcs11-modules=$$out/lib/pkcs11/" + ]; + + preFixup = '' + wrapProgram "$out/bin/gnome-keyring" \ + --prefix XDG_DATA_DIRS : "${glib}/share:$out/share:$GSETTINGS_SCHEMAS_PATH" + wrapProgram "$out/bin/gnome-keyring-daemon" \ + --prefix XDG_DATA_DIRS : "${glib}/share:$out/share:$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-keyring/src.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-keyring/src.nix new file mode 100644 index 0000000000000..ccd1488fd30d1 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-keyring/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-keyring-3.16.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-keyring/3.16/gnome-keyring-3.16.0.tar.xz; + sha256 = "15a3bb8c53855a4ff0dbbdfbe4ec3df206c32048f50bdc76a51f8e3e14ece1f5"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-menus/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-menus/default.nix new file mode 100644 index 0000000000000..90209634fbf18 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-menus/default.nix @@ -0,0 +1,22 @@ +{ stdenv, fetchurl, intltool, pkgconfig, glib, gobjectIntrospection }: + +stdenv.mkDerivation rec { + name = "gnome-menus-${version}"; + version = "3.10.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-menus/3.10/${name}.tar.xz"; + sha256 = "0wcacs1vk3pld8wvrwq7fdrm11i56nrajkrp6j1da6jc4yx0m5a6"; + }; + + makeFlags = "INTROSPECTION_GIRDIR=$(out)/share/gir-1.0/ INTROSPECTION_TYPELIBDIR=$(out)/lib/girepository-1.0"; + + buildInputs = [ intltool pkgconfig glib gobjectIntrospection ]; + + meta = { + homepage = "http://www.gnome.org"; + description = "Gnome menu specification"; + + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-online-accounts/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-online-accounts/default.nix new file mode 100644 index 0000000000000..d810fbb862b72 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-online-accounts/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchurl, pkgconfig, glib, libxslt, gtk, makeWrapper +, webkitgtk, json_glib, rest, libsecret, dbus_glib, gnome_common +, telepathy_glib, intltool, dbus_libs, icu, autoreconfHook +, libsoup, docbook_xsl_ns, docbook_xsl, gnome3 +}: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + NIX_CFLAGS_COMPILE = "-I${dbus_glib}/include/dbus-1.0 -I${dbus_libs}/include/dbus-1.0"; + + enableParallelBuilding = true; + + preAutoreconf = '' + sed '/disable-settings/d' -i configure.ac + sed "/if HAVE_INTROSPECTION/a INTROSPECTION_COMPILER_ARGS = --shared-library=$out/lib/libgoa-1.0.so" -i src/goa/Makefile.am + ''; + + buildInputs = [ pkgconfig glib libxslt gtk webkitgtk json_glib rest gnome_common makeWrapper + libsecret dbus_glib telepathy_glib intltool icu libsoup autoreconfHook + docbook_xsl_ns docbook_xsl gnome3.defaultIconTheme ]; + + preFixup = '' + for f in "$out/libexec/"*; do + wrapProgram "$f" --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" + done + ''; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-online-accounts/src.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-online-accounts/src.nix new file mode 100644 index 0000000000000..3038209042e2b --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-online-accounts/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-online-accounts-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-online-accounts/3.18/gnome-online-accounts-3.18.0.tar.xz; + sha256 = "fc2dac96551746576759bd14f9b322bae1dd0aeedc0e755065ddf5eaaefacd34"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-online-miners/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-online-miners/default.nix new file mode 100644 index 0000000000000..4c879b7509804 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-online-miners/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchurl, pkgconfig, glib, gnome3, libxml2 +, libsoup, json_glib, gmp, openssl, makeWrapper }: + +let + majVer = "3.14"; +in stdenv.mkDerivation rec { + name = "gnome-online-miners-${majVer}.2"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-online-miners/${majVer}/${name}.tar.xz"; + sha256 = "0bbak8srcrvnw18s4ls5mqaamx9nqdi93lij6yjs0a3q320k22xl"; + }; + + doCheck = true; + + buildInputs = [ pkgconfig glib gnome3.libgdata libxml2 libsoup gmp openssl + gnome3.grilo gnome3.libzapojit gnome3.grilo-plugins + gnome3.gnome_online_accounts makeWrapper gnome3.libmediaart + gnome3.tracker gnome3.gfbgraph json_glib gnome3.rest ]; + + enableParallelBuilding = true; + + preFixup = '' + for f in $out/libexec/*; do + wrapProgram "$f" \ + --prefix GRL_PLUGIN_PATH : "${gnome3.grilo-plugins}/lib/grilo-0.2" + done + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Projects/GnomeOnlineMiners; + description = "A set of crawlers that go through your online content and index them locally in Tracker"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-screenshot/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-screenshot/default.nix new file mode 100644 index 0000000000000..763fc990bdab1 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-screenshot/default.nix @@ -0,0 +1,31 @@ +{ stdenv, intltool, fetchurl, pkgconfig, libcanberra_gtk3 +, bash, gtk3, glib, makeWrapper +, itstool, gnome3, librsvg, gdk_pixbuf }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + doCheck = true; + + NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0"; + + propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ]; + propagatedBuildInputs = [ gdk_pixbuf gnome3.defaultIconTheme librsvg ]; + + buildInputs = [ bash pkgconfig gtk3 glib intltool itstool libcanberra_gtk3 + gnome3.gsettings_desktop_schemas makeWrapper ]; + + preFixup = '' + wrapProgram "$out/bin/gnome-screenshot" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix XDG_DATA_DIRS : "${gtk3}/share:${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + homepage = http://en.wikipedia.org/wiki/GNOME_Screenshot; + description = "Utility used in the GNOME desktop environment for taking screenshots"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-screenshot/src.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-screenshot/src.nix new file mode 100644 index 0000000000000..af6007fa23380 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-screenshot/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-screenshot-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-screenshot/3.18/gnome-screenshot-3.18.0.tar.xz; + sha256 = "eba64dbf4acf0ab8222fec549d0a4f2dd7dbd51c255e7978dedf1f5c06a98841"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-session/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-session/default.nix new file mode 100644 index 0000000000000..dedad0729d1b3 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-session/default.nix @@ -0,0 +1,25 @@ +{ fetchurl, stdenv, pkgconfig, gnome3, glib, dbus_glib, json_glib, upower +, libxslt, intltool, makeWrapper, systemd, xorg }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + configureFlags = "--enable-systemd"; + + buildInputs = with gnome3; + [ pkgconfig glib gnome_desktop gtk dbus_glib json_glib libxslt + gnome3.gnome_settings_daemon xorg.xtrans gnome3.defaultIconTheme + gsettings_desktop_schemas upower intltool gconf makeWrapper systemd ]; + + preFixup = '' + wrapProgram "$out/bin/gnome-session" \ + --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \ + --suffix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; + +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-session/src.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-session/src.nix new file mode 100644 index 0000000000000..211cc140a881e --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-session/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-session-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-session/3.18/gnome-session-3.18.0.tar.xz; + sha256 = "ba23d0e41e90f238103835603eded0f30a7cc56506b68168899377785aec706f"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-settings-daemon/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-settings-daemon/default.nix new file mode 100644 index 0000000000000..18a6bdf43bf13 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-settings-daemon/default.nix @@ -0,0 +1,31 @@ +{ fetchurl, stdenv, pkgconfig, gnome3, intltool, glib, libnotify, lcms2, libXtst +, libxkbfile, libpulseaudio, libcanberra_gtk3, upower, colord, libgweather, polkit +, geoclue2, librsvg, xf86_input_wacom, udev, libwacom, libxslt, libtool, networkmanager +, docbook_xsl, docbook_xsl_ns, makeWrapper, ibus, xkeyboard_config }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + # fatal error: gio/gunixfdlist.h: No such file or directory + NIX_CFLAGS_COMPILE = "-I${glib}/include/gio-unix-2.0"; + + buildInputs = with gnome3; + [ intltool pkgconfig ibus gtk glib gsettings_desktop_schemas networkmanager + libnotify gnome_desktop lcms2 libXtst libxkbfile libpulseaudio + libcanberra_gtk3 upower colord libgweather xkeyboard_config + polkit geocode_glib geoclue2 librsvg xf86_input_wacom udev libwacom libxslt + libtool docbook_xsl docbook_xsl_ns makeWrapper gnome_themes_standard ]; + + preFixup = '' + wrapProgram "$out/libexec/gnome-settings-daemon-localeexec" \ + --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \ + --prefix PATH : "${glib}/bin" \ + --prefix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; + +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-settings-daemon/src.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-settings-daemon/src.nix new file mode 100644 index 0000000000000..d7b459ae0eafa --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-settings-daemon/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-settings-daemon-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-settings-daemon/3.18/gnome-settings-daemon-3.18.0.tar.xz; + sha256 = "8d3ef9c18538831ed89122fee0bdaca68b0e482a18b3c4388c4e672aba1b3cd5"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-shell-extensions/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-shell-extensions/default.nix new file mode 100644 index 0000000000000..e9eae87f14e35 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-shell-extensions/default.nix @@ -0,0 +1,19 @@ +{ stdenv, intltool, fetchurl, libgtop, pkgconfig, gtk3, glib +, bash, makeWrapper, itstool, gnome3, file }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + doCheck = true; + + buildInputs = [ pkgconfig gtk3 glib libgtop intltool itstool + makeWrapper file ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Projects/GnomeShell/Extensions; + description = "Modify and extend GNOME Shell functionality and behavior"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-shell-extensions/src.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-shell-extensions/src.nix new file mode 100644 index 0000000000000..ed51bc4b20098 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-shell-extensions/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-shell-extensions-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-shell-extensions/3.18/gnome-shell-extensions-3.18.0.tar.xz; + sha256 = "a5fb88004b021e4a16f4fa5eb3d7d6f0903db1288023c18c0f9825152fa0f5f7"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-shell/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-shell/default.nix new file mode 100644 index 0000000000000..899efc5443bb6 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-shell/default.nix @@ -0,0 +1,57 @@ +{ fetchurl, stdenv, pkgconfig, gnome3, json_glib, libcroco, intltool, libsecret +, python3, libsoup, polkit, clutter, networkmanager, docbook_xsl, docbook_xsl_ns, at_spi2_core +, libstartup_notification, telepathy_glib, telepathy_logger, libXtst, p11_kit, unzip +, sqlite, libgweather, libcanberra_gtk3 +, libpulseaudio, libical, libtool, nss, gobjectIntrospection, gstreamer, makeWrapper +, accountsservice, gdk_pixbuf, gdm, upower, ibus, networkmanagerapplet, librsvg }: + +# http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/gnome-base/gnome-shell/gnome-shell-3.10.2.1.ebuild?revision=1.3&view=markup + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + # Needed to find /etc/NetworkManager/VPN + configureFlags = [ "--sysconfdir=/etc" ]; + + buildInputs = with gnome3; + [ gsettings_desktop_schemas gnome_keyring gnome-menus glib gcr json_glib accountsservice + libcroco intltool libsecret pkgconfig python3 libsoup polkit libcanberra gdk_pixbuf librsvg + clutter networkmanager libstartup_notification telepathy_glib docbook_xsl docbook_xsl_ns + libXtst p11_kit networkmanagerapplet gjs mutter libpulseaudio caribou evolution_data_server + libical libtool nss gobjectIntrospection gtk gstreamer makeWrapper gdm + libcanberra_gtk3 gnome_control_center + defaultIconTheme sqlite gnome3.gnome-bluetooth + libgweather # not declared at build time, but typelib is needed at runtime + gnome3.gnome-clocks # schemas needed + at_spi2_core upower ibus gnome_session gnome_desktop telepathy_logger gnome3.gnome_settings_daemon ]; + + installFlags = [ "keysdir=$(out)/share/gnome-control-center/keybindings" ]; + + preBuild = '' + patchShebangs src/data-to-c.pl + substituteInPlace data/Makefile --replace " install-keysDATA" "" + ''; + + preFixup = with gnome3; '' + wrapProgram "$out/bin/gnome-shell" \ + --prefix PATH : "${unzip}/bin" \ + --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --suffix XDG_DATA_DIRS : "${gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + + wrapProgram "$out/libexec/gnome-shell-calendar-server" \ + --prefix XDG_DATA_DIRS : "${evolution_data_server}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + + echo "${unzip}/bin" > $out/${passthru.mozillaPlugin}/extra-bin-path + ''; + + passthru = { + mozillaPlugin = "/lib/mozilla/plugins"; + }; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; + +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-shell/src.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-shell/src.nix new file mode 100644 index 0000000000000..340a2e6725232 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-shell/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-shell-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-shell/3.18/gnome-shell-3.18.0.tar.xz; + sha256 = "1f0f276c45c0979c72700121cb0f711aea343c4393eb3d5ddd6b311d8dc83c99"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-system-log/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-system-log/default.nix new file mode 100644 index 0000000000000..716f92a072d46 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-system-log/default.nix @@ -0,0 +1,36 @@ +{ stdenv, intltool, fetchurl, pkgconfig +, bash, gtk3, glib, makeWrapper +, itstool, gnome3, librsvg, gdk_pixbuf, libxml2 }: + +stdenv.mkDerivation rec { + name = "gnome-system-log-3.9.90"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-system-log/3.9/${name}.tar.xz"; + sha256 = "9eeb51982d347aa7b33703031e2c1d8084201374665425cd62199649b29a5411"; + }; + + doCheck = true; + + NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0"; + + propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ]; + propagatedBuildInputs = [ gdk_pixbuf gnome3.defaultIconTheme librsvg ]; + + buildInputs = [ bash pkgconfig gtk3 glib intltool itstool + gnome3.gsettings_desktop_schemas makeWrapper libxml2 ]; + + preFixup = '' + wrapProgram "$out/bin/gnome-system-log" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix XDG_DATA_DIRS : "${gtk3}/share:${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + homepage = https://help.gnome.org/users/gnome-system-log/3.9/; + description = "Graphical, menu-driven viewer that you can use to view and monitor your system logs"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-system-monitor/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-system-monitor/default.nix new file mode 100644 index 0000000000000..bdbdefecf229c --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-system-monitor/default.nix @@ -0,0 +1,32 @@ +{ stdenv, intltool, fetchurl, pkgconfig, gtkmm3, libxml2 +, bash, gtk3, glib, makeWrapper +, itstool, gnome3, librsvg, gdk_pixbuf, libgtop }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + doCheck = true; + + propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ]; + + buildInputs = [ bash pkgconfig gtk3 glib intltool itstool libxml2 + gtkmm3 libgtop makeWrapper + gdk_pixbuf gnome3.defaultIconTheme librsvg + gnome3.gsettings_desktop_schemas ]; + + preFixup = '' + wrapProgram "$out/bin/gnome-system-monitor" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + ''; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = https://help.gnome.org/users/gnome-system-monitor/3.12/; + description = "System Monitor shows you what programs are running and how much processor time, memory, and disk space are being used"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-system-monitor/src.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-system-monitor/src.nix new file mode 100644 index 0000000000000..a4c87752e7849 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-system-monitor/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-system-monitor-3.18.0.1"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-system-monitor/3.18/gnome-system-monitor-3.18.0.1.tar.xz; + sha256 = "71ff8db2fa3eb53d8f54ffd612c6679b231a9d69c13adb91cf63421425953b10"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-terminal/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-terminal/default.nix new file mode 100644 index 0000000000000..3bbb25ca5c198 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-terminal/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchurl, pkgconfig, cairo, libxml2, gnome3, pango +, gnome_doc_utils, intltool, libX11, which, libuuid, vala +, desktop_file_utils, itstool, makeWrapper, appdata-tools }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ gnome3.gtk gnome3.gsettings_desktop_schemas gnome3.vte appdata-tools + gnome3.dconf itstool makeWrapper gnome3.nautilus vala ]; + + nativeBuildInputs = [ pkgconfig intltool gnome_doc_utils which libuuid libxml2 desktop_file_utils ]; + + # FIXME: enable for gnome3 + configureFlags = [ "--disable-search-provider" "--disable-migration" ]; + + preFixup = '' + for f in "$out/libexec/gnome-terminal-server"; do + wrapProgram "$f" \ + --prefix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH" \ + --prefix GIO_EXTRA_MODULES : "${gnome3.dconf}/lib/gio/modules" + done + ''; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-terminal/src.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-terminal/src.nix new file mode 100644 index 0000000000000..dff213cc38919 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-terminal/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-terminal-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-terminal/3.18/gnome-terminal-3.18.0.tar.xz; + sha256 = "776642502b57b7a6b5f099291b660c0b4a4ff2b3024d15a2f5b33c4286c9dce6"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-themes-standard/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-themes-standard/default.nix new file mode 100644 index 0000000000000..a33252a934c3c --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-themes-standard/default.nix @@ -0,0 +1,14 @@ +{ stdenv, fetchurl, intltool, gtk3, gnome3, librsvg, pkgconfig, pango, atk, gtk2 +, gdk_pixbuf }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ intltool gtk3 librsvg pkgconfig pango atk gtk2 gdk_pixbuf + gnome3.defaultIconTheme ]; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-themes-standard/src.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-themes-standard/src.nix new file mode 100644 index 0000000000000..c352242537a84 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-themes-standard/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-themes-standard-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-themes-standard/3.18/gnome-themes-standard-3.18.0.tar.xz; + sha256 = "e646eb04c225282b7df7fff65741adaad4cf9ed2c12616b7310e7edd27d2bacb"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-user-docs/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-user-docs/default.nix new file mode 100644 index 0000000000000..4f02673e036fa --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-user-docs/default.nix @@ -0,0 +1,15 @@ +{ stdenv, fetchurl, pkgconfig, file, gnome3, itstool, libxml2, intltool }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ pkgconfig gnome3.yelp itstool libxml2 intltool ]; + + meta = with stdenv.lib; { + homepage = "https://help.gnome.org/users/gnome-help/${gnome3.version}"; + description = "User and system administration help for the GNOME desktop"; + maintainers = gnome3.maintainers; + license = licenses.cc-by-30; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-user-docs/src.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-user-docs/src.nix new file mode 100644 index 0000000000000..0187516061b10 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-user-docs/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-user-docs-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-user-docs/3.18/gnome-user-docs-3.18.0.tar.xz; + sha256 = "c515d2c8b051ffb05ec497e4231d1ceecec824dc4fca45425d21295bb592e952"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-user-share/default.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-user-share/default.nix new file mode 100644 index 0000000000000..49ad40912c66b --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-user-share/default.nix @@ -0,0 +1,45 @@ +{ stdenv, intltool, fetchurl, apacheHttpd_2_2, nautilus +, pkgconfig, gtk3, glib, libxml2, gnused +, bash, makeWrapper, itstool, libnotify, libtool, mod_dnssd +, gnome3, librsvg, gdk_pixbuf, file, libcanberra_gtk3 }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + doCheck = true; + + NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0"; + + preConfigure = '' + sed -e 's,^LoadModule dnssd_module.\+,LoadModule dnssd_module ${mod_dnssd}/modules/mod_dnssd.so,' -i data/dav_user_2.2.conf + ''; + + configureFlags = [ "--with-httpd=${apacheHttpd_2_2}/bin/httpd" + "--with-modules-path=${apacheHttpd_2_2}/modules" + "--disable-bluetooth" + "--with-nautilusdir=$(out)/lib/nautilus/extensions-3.0" ]; + + buildInputs = [ pkgconfig gtk3 glib intltool itstool libxml2 libtool + makeWrapper file gdk_pixbuf gnome3.defaultIconTheme librsvg + nautilus libnotify libcanberra_gtk3 ]; + + postInstall = '' + mkdir -p $out/share/gsettings-schemas/$name + mv $out/share/glib-2.0 $out/share/gsettings-schemas/$name + ${glib}/bin/glib-compile-schemas $out/share/gsettings-schemas/$name/glib-2.0/schemas + ''; + + preFixup = '' + wrapProgram "$out/libexec/gnome-user-share-webdav" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix XDG_DATA_DIRS : "$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + homepage = https://help.gnome.org/users/gnome-user-share/3.8; + description = "Service that exports the contents of the Public folder in your home directory on the local network"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gnome-user-share/src.nix b/pkgs/desktops/gnome-3/3.18/core/gnome-user-share/src.nix new file mode 100644 index 0000000000000..e0a283d896dce --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gnome-user-share/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-user-share-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-user-share/3.18/gnome-user-share-3.18.0.tar.xz; + sha256 = "feb3bed59193eafea31f563ed7eab5f066aa5f86d4a89f067b162653d168d3fc"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/grilo-plugins/default.nix b/pkgs/desktops/gnome-3/3.18/core/grilo-plugins/default.nix new file mode 100644 index 0000000000000..a236238c257fb --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/grilo-plugins/default.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchurl, pkgconfig, file, intltool, glib, sqlite +, gnome3, libxml2, gupnp, gssdp, lua5, liboauth, gupnp_av +, gmime, json_glib, avahi, tracker, itstool }: + +stdenv.mkDerivation rec { + name = "grilo-plugins-0.2.13"; + + src = fetchurl { + url = "mirror://gnome/sources/grilo-plugins/0.2/${name}.tar.xz"; + sha256 = "008jwm5ydl0k25p3d2fkcail40fj9y3qknihxb5fg941p8qlhm55"; + }; + + installFlags = [ "GRL_PLUGINS_DIR=$(out)/lib/grilo-0.2" ]; + + buildInputs = [ pkgconfig gnome3.grilo libxml2 gupnp gssdp gnome3.libgdata + lua5 liboauth gupnp_av sqlite gnome3.gnome_online_accounts + gnome3.totem-pl-parser gnome3.rest gmime json_glib + avahi gnome3.libmediaart tracker intltool itstool ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/action/show/Projects/Grilo; + description = "A collection of plugins for the Grilo framework"; + maintainers = gnome3.maintainers; + license = licenses.lgpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/grilo/default.nix b/pkgs/desktops/gnome-3/3.18/core/grilo/default.nix new file mode 100644 index 0000000000000..16dfb638a2490 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/grilo/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchurl, pkgconfig, file, intltool, glib +, libxml2, gnome3, gobjectIntrospection, libsoup }: + +stdenv.mkDerivation rec { + name = "grilo-0.2.12"; + + src = fetchurl { + url = "mirror://gnome/sources/grilo/0.2/${name}.tar.xz"; + sha256 = "11bvc7rsrjjwz8hp67p3fn8zmywrpawrcbi3vgw8b0dwa0sndd2m"; + }; + + setupHook = ./setup-hook.sh; + + configureFlags = [ "--enable-grl-pls" "--enable-grl-net" ]; + + preConfigure = '' + for f in src/Makefile.in libs/pls/Makefile.in libs/net/Makefile.in; do + substituteInPlace $f --replace @INTROSPECTION_GIRDIR@ "$out/share/gir-1.0/" + substituteInPlace $f --replace @INTROSPECTION_TYPELIBDIR@ "$out/lib/girepository-1.0" + done + ''; + + buildInputs = [ pkgconfig file intltool glib libxml2 libsoup + gnome3.totem-pl-parser gobjectIntrospection ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/action/show/Projects/Grilo; + description = "Framework that provides access to various sources of multimedia content, using a pluggable system"; + maintainers = gnome3.maintainers; + license = licenses.lgpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/grilo/setup-hook.sh b/pkgs/desktops/gnome-3/3.18/core/grilo/setup-hook.sh new file mode 100644 index 0000000000000..bc93dddec3864 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/grilo/setup-hook.sh @@ -0,0 +1,7 @@ +make_grilo_find_plugins() { + if [ -d "$1"/lib/grilo-0.2 ]; then + addToSearchPath GRL_PLUGIN_PATH "$1/lib/grilo-0.2" + fi +} + +envHooks+=(make_grilo_find_plugins) diff --git a/pkgs/desktops/gnome-3/3.18/core/gsettings-desktop-schemas/default.nix b/pkgs/desktops/gnome-3/3.18/core/gsettings-desktop-schemas/default.nix new file mode 100644 index 0000000000000..5123cadbdafd4 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gsettings-desktop-schemas/default.nix @@ -0,0 +1,22 @@ +{ stdenv, fetchurl, pkgconfig, intltool, glib, gobjectIntrospection + # just for passthru +, gnome3, gtk3, gsettings_desktop_schemas }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + postPatch = '' + for file in "background" "screensaver"; do + substituteInPlace "schemas/org.gnome.desktop.$file.gschema.xml.in" \ + --replace "@datadir@" "${gnome3.gnome-backgrounds}/share/" + done + ''; + + buildInputs = [ glib gobjectIntrospection ]; + + nativeBuildInputs = [ pkgconfig intltool ]; + + meta = with stdenv.lib; { + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gsettings-desktop-schemas/src.nix b/pkgs/desktops/gnome-3/3.18/core/gsettings-desktop-schemas/src.nix new file mode 100644 index 0000000000000..047f014d2af0c --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gsettings-desktop-schemas/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gsettings-desktop-schemas-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gsettings-desktop-schemas/3.18/gsettings-desktop-schemas-3.18.0.tar.xz; + sha256 = "ba27337226a96d83f385c0ad192fdfe561c7e7882c61bb326c571be24e41eceb"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gsound/default.nix b/pkgs/desktops/gnome-3/3.18/core/gsound/default.nix new file mode 100644 index 0000000000000..5f255743313ef --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gsound/default.nix @@ -0,0 +1,22 @@ +{ stdenv, fetchurl, pkgconfig, glib, libcanberra, gobjectIntrospection, libtool, gnome3 }: + +let + majVer = "1.0"; +in stdenv.mkDerivation rec { + name = "gsound-${majVer}.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gsound/${majVer}/${name}.tar.xz"; + sha256 = "ea0dd94429c0645f2f98824274ef04543fe459dd83a5449a68910acc3ba67f29"; + }; + + buildInputs = [ pkgconfig glib libcanberra gobjectIntrospection libtool ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Projects/GSound; + description = "Small library for playing system sounds"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gtksourceview/default.nix b/pkgs/desktops/gnome-3/3.18/core/gtksourceview/default.nix new file mode 100644 index 0000000000000..ea95e39e5b2ac --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gtksourceview/default.nix @@ -0,0 +1,22 @@ +{ stdenv, fetchurl, pkgconfig, atk, cairo, glib, gtk3, pango +, libxml2Python, perl, intltool, gettext, gnome3 }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + propagatedBuildInputs = [ gtk3 ]; + + buildInputs = [ pkgconfig atk cairo glib pango + libxml2Python perl intltool gettext ]; + + preBuild = '' + substituteInPlace gtksourceview/gtksourceview-utils.c --replace "@NIX_SHARE_PATH@" "$out/share" + ''; + + patches = [ ./nix_share_path.patch ]; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gtksourceview/nix_share_path.patch b/pkgs/desktops/gnome-3/3.18/core/gtksourceview/nix_share_path.patch new file mode 100644 index 0000000000000..c87350167c25c --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gtksourceview/nix_share_path.patch @@ -0,0 +1,11 @@ +--- a/gtksourceview/gtksourceview-utils.c 2014-07-13 16:13:57.418687726 +0200 ++++ b/gtksourceview/gtksourceview-utils.c 2014-07-13 16:14:20.550847767 +0200 +@@ -68,6 +68,8 @@ + basename, + NULL)); + ++ g_ptr_array_add (dirs, g_build_filename ("@NIX_SHARE_PATH@", SOURCEVIEW_DIR, basename, NULL)); ++ + g_ptr_array_add (dirs, NULL); + + return (gchar**) g_ptr_array_free (dirs, FALSE); diff --git a/pkgs/desktops/gnome-3/3.18/core/gtksourceview/src.nix b/pkgs/desktops/gnome-3/3.18/core/gtksourceview/src.nix new file mode 100644 index 0000000000000..5bbd2c4247405 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gtksourceview/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gtksourceview-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gtksourceview/3.18/gtksourceview-3.18.0.tar.xz; + sha256 = "54b111264e6985e26a878dec88ff94fd0a9ae0dc4cfcdf08f4a6b5f655d4b693"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gucharmap/default.nix b/pkgs/desktops/gnome-3/3.18/core/gucharmap/default.nix new file mode 100644 index 0000000000000..a43d3c570ce92 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gucharmap/default.nix @@ -0,0 +1,33 @@ +{ stdenv, intltool, fetchurl, pkgconfig, gtk3 +, glib, desktop_file_utils, bash, appdata-tools +, makeWrapper, gnome3, file, itstool, libxml2 }: + +# TODO: icons and theme still does not work +# use packaged gnome3.adwaita-icon-theme + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + doCheck = true; + + propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ]; + + preConfigure = "substituteInPlace ./configure --replace /usr/bin/file ${file}/bin/file"; + + buildInputs = [ pkgconfig gtk3 intltool itstool glib appdata-tools + gnome3.yelp_tools libxml2 file desktop_file_utils + gnome3.gsettings_desktop_schemas makeWrapper ]; + + preFixup = '' + wrapProgram "$out/bin/gucharmap" \ + --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Gucharmap; + description = "GNOME Character Map, based on the Unicode Character Database"; + maintainers = gnome3.maintainers; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gucharmap/src.nix b/pkgs/desktops/gnome-3/3.18/core/gucharmap/src.nix new file mode 100644 index 0000000000000..01eca1e367b1e --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gucharmap/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gucharmap-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gucharmap/3.18/gucharmap-3.18.0.tar.xz; + sha256 = "121d2652f59a26c9426c96e7c6ca73295c45b675dd4ef0ccdb1b50bc0b4f3830"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/libcroco/default.nix b/pkgs/desktops/gnome-3/3.18/core/libcroco/default.nix new file mode 100644 index 0000000000000..e8ddf7096e622 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/libcroco/default.nix @@ -0,0 +1,20 @@ +{ stdenv, fetchurl, pkgconfig, libxml2, glib }: + +stdenv.mkDerivation rec { + name = "libcroco-0.6.8"; + + src = fetchurl { + url = "mirror://gnome/sources/libcroco/0.6/${name}.tar.xz"; + sha256 = "0w453f3nnkbkrly7spx5lx5pf6mwynzmd5qhszprq8amij2invpa"; + }; + + outputs = [ "out" "doc" ]; + + configureFlags = stdenv.lib.optional stdenv.isDarwin "--disable-Bsymbolic"; + + buildInputs = [ pkgconfig libxml2 glib ]; + + meta = with stdenv.lib; { + platforms = platforms.unix; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/libgdata/default.nix b/pkgs/desktops/gnome-3/3.18/core/libgdata/default.nix new file mode 100644 index 0000000000000..bedbbee2dfe52 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/libgdata/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchurl, pkgconfig, intltool, libxml2, glib, json_glib +, gobjectIntrospection, liboauth, gnome3, p11_kit, openssl }: + +let + majorVersion = "0.16"; +in +stdenv.mkDerivation rec { + name = "libgdata-${majorVersion}.1"; + + src = fetchurl { + url = "mirror://gnome/sources/libgdata/${majorVersion}/${name}.tar.xz"; + sha256 = "8740e071ecb2ae0d2a4b9f180d2ae5fdf9dc4c41e7ff9dc7e057f62442800827"; + }; + + # TODO: need libuhttpmock + configureFlags = "--disable-tests"; + + NIX_CFLAGS_COMPILE = "-I${gnome3.libsoup}/include/libsoup-gnome-2.4/ -I${gnome3.gcr}/include/gcr-3 -I${gnome3.gcr}/include/gck-1"; + + buildInputs = with gnome3; + [ pkgconfig libsoup intltool libxml2 glib gobjectIntrospection + liboauth gcr gnome_online_accounts p11_kit openssl ]; + + propagatedBuildInputs = [ json_glib ]; + + meta = with stdenv.lib; { + description = "GData API library"; + maintainers = with maintainers; [ raskin lethalman ]; + platforms = platforms.linux; + license = licenses.lgpl21Plus; + }; + +} diff --git a/pkgs/desktops/gnome-3/3.18/core/libgee/default.nix b/pkgs/desktops/gnome-3/3.18/core/libgee/default.nix new file mode 100644 index 0000000000000..4ff132950319f --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/libgee/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchurl, autoconf, vala, pkgconfig, glib, gobjectIntrospection, gnome3 }: +let + ver_maj = "0.16"; + ver_min = "1"; +in +stdenv.mkDerivation rec { + name = "libgee-${ver_maj}.${ver_min}"; + + src = fetchurl { + url = "mirror://gnome/sources/libgee/${ver_maj}/${name}.tar.xz"; + sha256 = "d95f8ea8e78f843c71b1958fa2fb445e4a325e4821ec23d0d5108d8170e564a5"; + }; + + doCheck = true; + + patches = [ ./fix_introspection_paths.patch ]; + + buildInputs = [ autoconf vala pkgconfig glib gobjectIntrospection ]; + + meta = with stdenv.lib; { + description = "Utility library providing GObject-based interfaces and classes for commonly used data structures"; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/libgee/fix_introspection_paths.patch b/pkgs/desktops/gnome-3/3.18/core/libgee/fix_introspection_paths.patch new file mode 100644 index 0000000000000..67003f451645d --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/libgee/fix_introspection_paths.patch @@ -0,0 +1,13 @@ +--- fix_introspection_paths.patch/configure 2014-01-07 17:43:53.521339338 +0000 ++++ fix_introspection_paths.patch/configure-fix 2014-01-07 17:45:11.068635069 +0000 +@@ -12085,8 +12085,8 @@ + INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0` + INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0` + INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0` +- INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0` +- INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)" ++ INTROSPECTION_GIRDIR="${datadir}/gir-1.0" ++ INTROSPECTION_TYPELIBDIR="${libdir}/girepository-1.0" + INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0` + INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0` + INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection diff --git a/pkgs/desktops/gnome-3/3.18/core/libgnome-keyring/default.nix b/pkgs/desktops/gnome-3/3.18/core/libgnome-keyring/default.nix new file mode 100644 index 0000000000000..c6c9323c010a3 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/libgnome-keyring/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchurl, glib, dbus_libs, libgcrypt, pkgconfig, intltool, gobjectIntrospection }: + +stdenv.mkDerivation rec { + name = "libgnome-keyring-3.12.0"; + + src = fetchurl { + url = "mirror://gnome/sources/libgnome-keyring/3.12/${name}.tar.xz"; + sha256 = "c4c178fbb05f72acc484d22ddb0568f7532c409b0a13e06513ff54b91e947783"; + }; + + propagatedBuildInputs = [ glib gobjectIntrospection dbus_libs libgcrypt ]; + nativeBuildInputs = [ pkgconfig intltool ]; + + meta = { + description = "Framework for managing passwords and other secrets"; + homepage = http://live.gnome.org/GnomeKeyring; + license = with stdenv.lib.licenses; [ gpl2Plus lgpl2Plus ]; + inherit (glib.meta) platforms maintainers; + + longDescription = '' + gnome-keyring is a program that keeps password and other secrets for + users. The library libgnome-keyring is used by applications to integrate + with the gnome-keyring system. + ''; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/libgnomekbd/default.nix b/pkgs/desktops/gnome-3/3.18/core/libgnomekbd/default.nix new file mode 100644 index 0000000000000..4939a4ff72817 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/libgnomekbd/default.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchurl, pkgconfig, file, intltool, glib, gtk3, libxklavier, makeWrapper, gnome3 }: + +stdenv.mkDerivation rec { + name = "libgnomekbd-3.6.0"; + + src = fetchurl { + url = "mirror://gnome/sources/libgnomekbd/3.6/${name}.tar.xz"; + sha256 = "c41ea5b0f64da470925ba09f9f1b46b26b82d4e433e594b2c71eab3da8856a09"; + }; + + buildInputs = [ pkgconfig file intltool glib gtk3 libxklavier makeWrapper ]; + + preFixup = '' + wrapProgram $out/bin/gkbd-keyboard-display \ + --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + description = "Keyboard management library"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/libgweather/default.nix b/pkgs/desktops/gnome-3/3.18/core/libgweather/default.nix new file mode 100644 index 0000000000000..79ede15df8f08 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/libgweather/default.nix @@ -0,0 +1,17 @@ +{ stdenv, fetchurl, pkgconfig, libxml2, gtk, intltool, libsoup, gconf +, pango, gdk_pixbuf, atk, tzdata, gnome3 }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + makeFlags = "INTROSPECTION_GIRDIR=$(out)/share/gir-1.0/ INTROSPECTION_TYPELIBDIR=$(out)/lib/girepository-1.0"; + + configureFlags = [ "--with-zoneinfo-dir=${tzdata}/share/zoneinfo" ]; + propagatedBuildInputs = [ libxml2 gtk libsoup gconf pango gdk_pixbuf atk gnome3.geocode_glib ]; + nativeBuildInputs = [ pkgconfig intltool ]; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/libgweather/src.nix b/pkgs/desktops/gnome-3/3.18/core/libgweather/src.nix new file mode 100644 index 0000000000000..da56dc3361aec --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/libgweather/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "libgweather-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/libgweather/3.18/libgweather-3.18.0.tar.xz; + sha256 = "8f4fda67f48c776f2bf955d384de4cc842aacb8d9b2ad87b42d83d0dc5a1cb1f"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/libgxps/default.nix b/pkgs/desktops/gnome-3/3.18/core/libgxps/default.nix new file mode 100644 index 0000000000000..72d307f4f1a76 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/libgxps/default.nix @@ -0,0 +1,20 @@ +{ stdenv, fetchurl, pkgconfig, glib, cairo, libarchive, freetype, libjpeg, libtiff +, openssl, bzip2, acl, attr +}: + +stdenv.mkDerivation rec { + name = "libgxps-0.2.2"; + + src = fetchurl { + url = "http://ftp.acc.umu.se/pub/GNOME/core/3.10/3.10.2/sources/${name}.tar.xz"; + sha256 = "1gi0b0x0354jyqc48vspk2hg2q1403cf2p9ibj847nzhkdrh9l9r"; + }; + + buildInputs = [ pkgconfig glib cairo libarchive freetype libjpeg libtiff acl openssl bzip2 attr]; + + configureFlags = "--without-liblcms2"; + + meta = with stdenv.lib; { + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/libpeas/default.nix b/pkgs/desktops/gnome-3/3.18/core/libpeas/default.nix new file mode 100644 index 0000000000000..8d40d977a80b9 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/libpeas/default.nix @@ -0,0 +1,20 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gnome3 +, glib, gtk3, gobjectIntrospection, python, pygobject3 +}: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ + intltool pkgconfig glib gtk3 gobjectIntrospection python pygobject3 + gnome3.defaultIconTheme + ]; + + meta = with stdenv.lib; { + description = "A GObject-based plugins engine"; + homepage = "http://ftp.acc.umu.se/pub/GNOME/sources/libpeas/"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/libpeas/src.nix b/pkgs/desktops/gnome-3/3.18/core/libpeas/src.nix new file mode 100644 index 0000000000000..8a24097bbd675 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/libpeas/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "libpeas-1.16.0"; + + src = fetchurl { + url = mirror://gnome/sources/libpeas/1.16/libpeas-1.16.0.tar.xz; + sha256 = "b093008ecd65f7d55c80517589509698ff15ad41f664b11a3eb88ff461b1454e"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/libzapojit/default.nix b/pkgs/desktops/gnome-3/3.18/core/libzapojit/default.nix new file mode 100644 index 0000000000000..5a8117528b68a --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/libzapojit/default.nix @@ -0,0 +1,16 @@ +{ stdenv, fetchurl, pkgconfig, glib, intltool, json_glib, rest, libsoup, gtk, gnome_online_accounts }: + +stdenv.mkDerivation rec { + name = "libzapojit-0.0.3"; + + src = fetchurl { + url = "mirror://gnome/sources/libzapojit/0.0/${name}.tar.xz"; + sha256 = "0zn3s7ryjc3k1abj4k55dr2na844l451nrg9s6cvnnhh569zj99x"; + }; + + buildInputs = [ pkgconfig glib intltool json_glib rest libsoup gtk gnome_online_accounts ]; + + meta = with stdenv.lib; { + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/mutter/default.nix b/pkgs/desktops/gnome-3/3.18/core/mutter/default.nix new file mode 100644 index 0000000000000..dd08a96cc2328 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/mutter/default.nix @@ -0,0 +1,31 @@ +{ fetchurl, stdenv, pkgconfig, gnome3, intltool, gobjectIntrospection, upower, cairo +, pango, cogl, clutter, libstartup_notification, libcanberra, zenity, libcanberra_gtk3 +, libtool, makeWrapper, xkeyboard_config, libxkbfile, libxkbcommon }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + # fatal error: gio/gunixfdlist.h: No such file or directory + NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0"; + + configureFlags = "--with-x --disable-static --enable-shape --enable-sm --enable-startup-notification --enable-xsync --enable-verbose-mode --with-libcanberra"; + + buildInputs = with gnome3; + [ pkgconfig intltool glib gobjectIntrospection gtk gsettings_desktop_schemas upower + gnome_desktop cairo pango cogl clutter zenity libstartup_notification libcanberra + gnome3.geocode_glib + libcanberra_gtk3 zenity libtool makeWrapper xkeyboard_config libxkbfile libxkbcommon ]; + + preFixup = '' + wrapProgram "$out/bin/mutter" \ + --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" + ''; + + patches = [ ./x86.patch ./math.patch ]; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; + +} diff --git a/pkgs/desktops/gnome-3/3.18/core/mutter/math.patch b/pkgs/desktops/gnome-3/3.18/core/mutter/math.patch new file mode 100644 index 0000000000000..dbdfd93f5e1d7 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/mutter/math.patch @@ -0,0 +1,10 @@ +--- mutter-3.18.0/src/backends/meta-cursor-renderer.c.orig 2015-09-23 13:54:31.297523343 +0200 ++++ mutter-3.18.0/src/backends/meta-cursor-renderer.c 2015-09-23 13:54:43.728271766 +0200 +@@ -31,6 +31,7 @@ + + #include <cogl/cogl.h> + #include <clutter/clutter.h> ++#include <math.h> + + #include "meta-stage.h" + diff --git a/pkgs/desktops/gnome-3/3.18/core/mutter/src.nix b/pkgs/desktops/gnome-3/3.18/core/mutter/src.nix new file mode 100644 index 0000000000000..2f183d1a919ea --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/mutter/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "mutter-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/mutter/3.18/mutter-3.18.0.tar.xz; + sha256 = "9fb287976b9c65f0a2aca09d0e2c4c2748d3d2cfa5f38921dbeafe4cd1d541b1"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/mutter/x86.patch b/pkgs/desktops/gnome-3/3.18/core/mutter/x86.patch new file mode 100644 index 0000000000000..bc8829de42f16 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/mutter/x86.patch @@ -0,0 +1,20 @@ +--- mutter-3.16.2/src/core/window.c.orig 2015-05-26 10:52:41.382834963 +0200 ++++ mutter-3.16.2/src/core/window.c 2015-05-26 10:53:03.039948034 +0200 +@@ -3499,7 +3499,7 @@ + + static MetaMonitorInfo * + find_monitor_by_winsys_id (MetaWindow *window, +- guint winsys_id) ++ gint winsys_id) + { + int i; + +@@ -3618,7 +3618,7 @@ + */ + + gboolean did_placement; +- guint old_output_winsys_id; ++ gint old_output_winsys_id; + MetaRectangle unconstrained_rect; + MetaRectangle constrained_rect; + MetaMoveResizeResultFlags result = 0; diff --git a/pkgs/desktops/gnome-3/3.18/core/nautilus/default.nix b/pkgs/desktops/gnome-3/3.18/core/nautilus/default.nix new file mode 100644 index 0000000000000..f28e86d7bad08 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/nautilus/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchurl, pkgconfig, libxml2, dbus_glib, shared_mime_info, libexif +, gtk, gnome3, libunique, intltool, gobjectIntrospection +, libnotify, makeWrapper, exempi, librsvg, tracker }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ pkgconfig libxml2 dbus_glib shared_mime_info libexif gtk libunique intltool exempi librsvg + gnome3.gnome_desktop gnome3.adwaita-icon-theme + gnome3.gsettings_desktop_schemas libnotify makeWrapper tracker ]; + + preFixup = '' + wrapProgram "$out/bin/nautilus" \ + --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$out/share:$GSETTINGS_SCHEMAS_PATH" + ''; + + patches = [ ./extension_dir.patch ]; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/nautilus/extension_dir.patch b/pkgs/desktops/gnome-3/3.18/core/nautilus/extension_dir.patch new file mode 100644 index 0000000000000..317b825799245 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/nautilus/extension_dir.patch @@ -0,0 +1,24 @@ +diff --git a/libnautilus-private/nautilus-module.c b/libnautilus-private/nautilus-module.c +index 6273a76..4adcc8a 100644 +--- a/libnautilus-private/nautilus-module.c ++++ b/libnautilus-private/nautilus-module.c +@@ -242,11 +242,17 @@ void + nautilus_module_setup (void) + { + static gboolean initialized = FALSE; ++ const gchar* extensiondir = NULL; + + if (!initialized) { + initialized = TRUE; +- +- load_module_dir (NAUTILUS_EXTENSIONDIR); ++ ++ extensiondir = g_getenv ("NAUTILUS_EXTENSION_DIR"); ++ if (extensiondir == NULL) { ++ extensiondir = NAUTILUS_EXTENSIONDIR; ++ } ++ ++ load_module_dir (extensiondir); + + eel_debug_call_at_shutdown (free_module_objects); + } diff --git a/pkgs/desktops/gnome-3/3.18/core/nautilus/src.nix b/pkgs/desktops/gnome-3/3.18/core/nautilus/src.nix new file mode 100644 index 0000000000000..4e8c692bce442 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/nautilus/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "nautilus-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/nautilus/3.18/nautilus-3.18.0.tar.xz; + sha256 = "6914e5698c5ce865870086e4db9395d56a78eddf8002020458ce05db16a95a33"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/rest/default.nix b/pkgs/desktops/gnome-3/3.18/core/rest/default.nix new file mode 100644 index 0000000000000..eada9ab199340 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/rest/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl, pkgconfig, glib, libsoup, gobjectIntrospection, gnome3 }: + +stdenv.mkDerivation rec { + name = "rest-0.7.92"; + + src = fetchurl { + url = "mirror://gnome/sources/rest/0.7/${name}.tar.xz"; + sha256 = "07548c8785a3e743daf54a82b952ff5f32af94fee68997df4c83b00d52f9c0ec"; + }; + + buildInputs = [ pkgconfig glib libsoup gobjectIntrospection]; + + configureFlags = "--with-ca-certificates=/etc/ssl/certs/ca-certificates.crt"; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/sushi/default.nix b/pkgs/desktops/gnome-3/3.18/core/sushi/default.nix new file mode 100644 index 0000000000000..17c37e89decce --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/sushi/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchurl, pkgconfig, file, intltool, gobjectIntrospection, glib +, clutter_gtk, clutter-gst, gnome3, gtksourceview, libmusicbrainz +, webkitgtk, libmusicbrainz5, icu, makeWrapper, gst_all_1 +, gdk_pixbuf, librsvg, gtk3 }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + propagatedUserEnvPkgs = [ gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good ]; + + buildInputs = [ pkgconfig file intltool gobjectIntrospection glib gtk3 + clutter_gtk clutter-gst gnome3.gjs gtksourceview gdk_pixbuf + librsvg gnome3.defaultIconTheme libmusicbrainz5 webkitgtk + gnome3.evince icu makeWrapper ]; + + enableParallelBuilding = true; + + preFixup = '' + wrapProgram $out/libexec/sushi-start \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \ + --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0" \ + --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + homepage = "http://en.wikipedia.org/wiki/Sushi_(software)"; + description = "A quick previewer for Nautilus"; + maintainers = gnome3.maintainers; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/sushi/src.nix b/pkgs/desktops/gnome-3/3.18/core/sushi/src.nix new file mode 100644 index 0000000000000..5c852a0dc47cc --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/sushi/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "sushi-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/sushi/3.18/sushi-3.18.0.tar.xz; + sha256 = "7f4df92be950bf23aff28da49ce108766dd21a88efc14a9d0807e10225608e9c"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/totem-pl-parser/default.nix b/pkgs/desktops/gnome-3/3.18/core/totem-pl-parser/default.nix new file mode 100644 index 0000000000000..63f36004bcd67 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/totem-pl-parser/default.nix @@ -0,0 +1,20 @@ +{ stdenv, fetchurl, pkgconfig, file, intltool, gmime, libxml2, libsoup, gnome3 }: + +stdenv.mkDerivation rec { + name = "totem-pl-parser-3.10.2"; + + src = fetchurl { + url = "mirror://gnome/sources/totem-pl-parser/3.10/${name}.tar.xz"; + sha256 = "38be09bddc46ddecd2b5ed7c82144ef52aafe879a5ec3d8b192b4b64ba995469"; + }; + + buildInputs = [ pkgconfig file intltool gmime libxml2 libsoup ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Videos; + description = "Simple GObject-based library to parse and save a host of playlist formats"; + maintainers = gnome3.maintainers; + license = licenses.lgpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/totem/default.nix b/pkgs/desktops/gnome-3/3.18/core/totem/default.nix new file mode 100644 index 0000000000000..13665c72274ef --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/totem/default.nix @@ -0,0 +1,42 @@ +{ stdenv, intltool, fetchurl, gst_all_1 +, clutter_gtk, clutter-gst, pygobject3, shared_mime_info +, pkgconfig, gtk3, glib +, bash, makeWrapper, itstool, libxml2, dbus_glib +, gnome3, librsvg, gdk_pixbuf, file }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + doCheck = true; + + enableParallelBuilding = true; + + NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0"; + + propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ]; + + buildInputs = [ pkgconfig gtk3 glib intltool itstool libxml2 gnome3.grilo + clutter_gtk clutter-gst gnome3.totem-pl-parser gnome3.grilo-plugins + gst_all_1.gstreamer gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad + gnome3.libpeas pygobject3 shared_mime_info dbus_glib + gdk_pixbuf gnome3.defaultIconTheme librsvg gnome3.gnome_desktop + gnome3.gsettings_desktop_schemas makeWrapper file ]; + + preFixup = '' + wrapProgram "$out/bin/totem" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0" \ + --prefix GRL_PLUGIN_PATH : "${gnome3.grilo-plugins}/lib/grilo-0.2" \ + --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Videos; + description = "Movie player for the GNOME desktop based on GStreamer"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/totem/src.nix b/pkgs/desktops/gnome-3/3.18/core/totem/src.nix new file mode 100644 index 0000000000000..92bf2c1f8a650 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/totem/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "totem-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/totem/3.18/totem-3.18.0.tar.xz; + sha256 = "1b6a7e66414df4b2e2427a9c5f1fee5a5f286beb098fdbe0902e37e3663e3e89"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/tracker/default.nix b/pkgs/desktops/gnome-3/3.18/core/tracker/default.nix new file mode 100644 index 0000000000000..88e6da2ad2d07 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/tracker/default.nix @@ -0,0 +1,55 @@ +{ stdenv, intltool, fetchurl, libxml2, upower +, pkgconfig, gtk3, glib +, bash, makeWrapper, itstool, vala, sqlite, libxslt +, gnome3, librsvg, gdk_pixbuf, file, libnotify +, evolution_data_server, gst_all_1, poppler +, icu, taglib, libjpeg, libtiff, giflib, libcue +, libvorbis, flac, exempi, networkmanager +, libpng, libexif, libgsf, libuuid, bzip2 }: + +let + majorVersion = "1.4"; +in +stdenv.mkDerivation rec { + name = "tracker-${majorVersion}.0"; + + src = fetchurl { + url = "mirror://gnome/sources/tracker/${majorVersion}/${name}.tar.xz"; + sha256 = "1ssisbix7ib3d6bgx9s675gx6ayy68jq2srhpzv038mkbaskaz68"; + }; + + propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ]; + + NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0 -I${poppler}/include/poppler"; + + enableParallelBuilding = true; + + buildInputs = [ vala pkgconfig gtk3 glib intltool itstool libxml2 + bzip2 gnome3.totem-pl-parser libxslt + gnome3.gsettings_desktop_schemas makeWrapper file + gdk_pixbuf gnome3.defaultIconTheme librsvg sqlite + upower libnotify evolution_data_server gnome3.libgee + gst_all_1.gstreamer gst_all_1.gst-plugins-base flac + poppler icu taglib libjpeg libtiff giflib libvorbis + exempi networkmanager libpng libexif libgsf libuuid ]; + + preConfigure = '' + substituteInPlace src/libtracker-sparql/Makefile.in --replace "--shared-library=libtracker-sparql" "--shared-library=$out/lib/libtracker-sparql" + ''; + + preFixup = '' + for f in $out/bin/* $out/libexec/*; do + wrapProgram $f \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + done + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Projects/Tracker; + description = "Desktop-neutral user information store, search tool and indexer"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/vino/default.nix b/pkgs/desktops/gnome-3/3.18/core/vino/default.nix new file mode 100644 index 0000000000000..7a015b4a010c7 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/vino/default.nix @@ -0,0 +1,25 @@ +{ stdenv, intltool, fetchurl, gtk3, glib, libsoup, pkgconfig, makeWrapper +, gnome3, libnotify, file, telepathy_glib, dbus_glib }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + doCheck = true; + + buildInputs = [ gtk3 intltool glib libsoup pkgconfig libnotify + gnome3.defaultIconTheme dbus_glib telepathy_glib file + makeWrapper ]; + + preFixup = '' + wrapProgram "$out/libexec/vino-server" \ + --prefix XDG_DATA_DIRS : "$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/action/show/Projects/Vino; + description = "GNOME desktop sharing server"; + maintainers = with maintainers; [ lethalman iElectric ]; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/vino/src.nix b/pkgs/desktops/gnome-3/3.18/core/vino/src.nix new file mode 100644 index 0000000000000..b2202c48733de --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/vino/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "vino-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/vino/3.18/vino-3.18.0.tar.xz; + sha256 = "52be0b036389713eab224abf27f2ca2a067ba5bd1f6b526592703576005e0919"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/vte/2.90.nix b/pkgs/desktops/gnome-3/3.18/core/vte/2.90.nix new file mode 100644 index 0000000000000..5ccca36bcaad5 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/vte/2.90.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchurl, intltool, pkgconfig, gnome3, ncurses, gobjectIntrospection }: + +stdenv.mkDerivation rec { + versionMajor = "0.36"; + versionMinor = "3"; + moduleName = "vte"; + + name = "${moduleName}-${versionMajor}.${versionMinor}"; + + src = fetchurl { + url = "mirror://gnome/sources/${moduleName}/${versionMajor}/${name}.tar.xz"; + sha256 = "54e5b07be3c0f7b158302f54ee79d4de1cb002f4259b6642b79b1e0e314a959c"; + }; + + buildInputs = [ gobjectIntrospection intltool pkgconfig gnome3.glib gnome3.gtk3 ncurses ]; + + configureFlags = [ "--enable-introspection" ]; + + enableParallelBuilding = true; + + postInstall = '' + substituteInPlace $out/lib/libvte2_90.la --replace "-lncurses" "-L${ncurses}/lib -lncurses" + ''; + + meta = with stdenv.lib; { + homepage = http://www.gnome.org/; + description = "A library implementing a terminal emulator widget for GTK+"; + longDescription = '' + VTE is a library (libvte) implementing a terminal emulator widget for + GTK+, and a minimal sample application (vte) using that. Vte is + mainly used in gnome-terminal, but can also be used to embed a + console/terminal in games, editors, IDEs, etc. VTE supports Unicode and + character set conversion, as well as emulating any terminal known to + the system's terminfo database. + ''; + license = licenses.lgpl2; + maintainers = with maintainers; [ astsmtl antono lethalman ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/vte/default.nix b/pkgs/desktops/gnome-3/3.18/core/vte/default.nix new file mode 100644 index 0000000000000..b47381cf61b8f --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/vte/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, intltool, pkgconfig, gnome3, ncurses, gobjectIntrospection, vala, libxml2 +, gnutls, selectTextPatch ? false }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + patches = with stdenv.lib; optional selectTextPatch ./expose_select_text.0.40.0.patch; + + buildInputs = [ gobjectIntrospection intltool pkgconfig gnome3.glib + gnome3.gtk3 ncurses vala libxml2 ]; + + propagatedBuildInputs = [ gnutls ]; + + preConfigure = "patchShebangs ."; + + configureFlags = [ "--enable-introspection" ]; + + enableParallelBuilding = true; + + postInstall = '' + substituteInPlace $out/lib/libvte2_90.la --replace "-lncurses" "-L${ncurses}/lib -lncurses" + ''; + + meta = with stdenv.lib; { + homepage = http://www.gnome.org/; + description = "A library implementing a terminal emulator widget for GTK+"; + longDescription = '' + VTE is a library (libvte) implementing a terminal emulator widget for + GTK+, and a minimal sample application (vte) using that. Vte is + mainly used in gnome-terminal, but can also be used to embed a + console/terminal in games, editors, IDEs, etc. VTE supports Unicode and + character set conversion, as well as emulating any terminal known to + the system's terminfo database. + ''; + license = licenses.lgpl2; + maintainers = with maintainers; [ astsmtl antono lethalman ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/vte/expose_select_text.0.40.0.patch b/pkgs/desktops/gnome-3/3.18/core/vte/expose_select_text.0.40.0.patch new file mode 100644 index 0000000000000..c18f1b76b410c --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/vte/expose_select_text.0.40.0.patch @@ -0,0 +1,226 @@ +Only in vte-0.40.0.new: .git +diff --unified -aur vte-0.40.0/src/vteaccess.c vte-0.40.0.new/src/vteaccess.c +--- vte-0.40.0/src/vteaccess.c 2015-03-16 06:34:37.000000000 -0400 ++++ vte-0.40.0.new/src/vteaccess.c 2015-04-10 00:08:53.146853382 -0400 +@@ -1444,7 +1444,7 @@ + *start_offset = offset_from_xy (priv, start_x, start_y); + _vte_terminal_get_end_selection (terminal, &end_x, &end_y); + *end_offset = offset_from_xy (priv, end_x, end_y); +- return _vte_terminal_get_selection (terminal); ++ return vte_terminal_get_selection (terminal); + } + + static gboolean +diff --unified -aur vte-0.40.0/src/vte.c vte-0.40.0.new/src/vte.c +--- vte-0.40.0/src/vte.c 2015-03-18 12:38:09.000000000 -0400 ++++ vte-0.40.0.new/src/vte.c 2015-04-10 00:08:53.150186722 -0400 +@@ -123,7 +123,6 @@ + gpointer data, + GArray *attributes, + gboolean include_trailing_spaces); +-static void _vte_terminal_disconnect_pty_read(VteTerminal *terminal); + static void _vte_terminal_disconnect_pty_write(VteTerminal *terminal); + static void vte_terminal_stop_processing (VteTerminal *terminal); + +@@ -3344,9 +3343,10 @@ + _vte_debug_print (VTE_DEBUG_IO, "removed poll of vte_terminal_io_read\n"); + terminal->pvt->pty_input_source = 0; + } +-static void +-_vte_terminal_connect_pty_read(VteTerminal *terminal) ++void ++vte_terminal_connect_pty_read(VteTerminal *terminal) + { ++ g_return_if_fail(VTE_IS_TERMINAL(terminal)); + if (terminal->pvt->pty_channel == NULL) { + return; + } +@@ -3398,9 +3398,10 @@ + } + } + +-static void +-_vte_terminal_disconnect_pty_read(VteTerminal *terminal) ++void ++vte_terminal_disconnect_pty_read(VteTerminal *terminal) + { ++ g_return_if_fail(VTE_IS_TERMINAL(terminal)); + if (terminal->pvt->pty_input_source != 0) { + _vte_debug_print (VTE_DEBUG_IO, "disconnecting poll of vte_terminal_io_read\n"); + g_source_remove(terminal->pvt->pty_input_source); +@@ -6302,6 +6303,28 @@ + } + } + ++/** ++ * vte_terminal_set_cursor_position: ++ * @terminal: a #VteTerminal ++ * @column: the new cursor column ++ * @row: the new cursor row ++ * ++ * Set the location of the cursor. ++ */ ++void ++vte_terminal_set_cursor_position(VteTerminal *terminal, ++ long column, long row) ++{ ++ g_return_if_fail(VTE_IS_TERMINAL(terminal)); ++ ++ _vte_invalidate_cursor_once(terminal, FALSE); ++ terminal->pvt->cursor.col = column; ++ terminal->pvt->cursor.row = row; ++ _vte_invalidate_cursor_once(terminal, FALSE); ++ _vte_check_cursor_blink(terminal); ++ vte_terminal_queue_cursor_moved(terminal); ++} ++ + static GtkClipboard * + vte_terminal_clipboard_get(VteTerminal *terminal, GdkAtom board) + { +@@ -6465,7 +6488,7 @@ + vte_terminal_extend_selection(terminal, x, y, FALSE, TRUE); + + /* Temporarily stop caring about input from the child. */ +- _vte_terminal_disconnect_pty_read(terminal); ++ vte_terminal_disconnect_pty_read(terminal); + } + + static gboolean +@@ -6482,7 +6505,7 @@ + terminal->pvt->selecting = FALSE; + + /* Reconnect to input from the child if we paused it. */ +- _vte_terminal_connect_pty_read(terminal); ++ vte_terminal_connect_pty_read(terminal); + + return TRUE; + } +@@ -6982,6 +7005,50 @@ + vte_terminal_deselect_all (terminal); + } + ++/** ++ * vte_terminal_get_selection_block_mode: ++ * @terminal: a #VteTerminal ++ * ++ * Checks whether or not block selection is enabled. ++ * ++ * Returns: %TRUE if block selection is enabled, %FALSE if not ++ */ ++gboolean ++vte_terminal_get_selection_block_mode(VteTerminal *terminal) { ++ g_return_val_if_fail(VTE_IS_TERMINAL(terminal), FALSE); ++ return terminal->pvt->selection_block_mode; ++} ++ ++/** ++ * vte_terminal_set_selection_block_mode: ++ * @terminal: a #VteTerminal ++ * @block_mode: whether block selection is enabled ++ * ++ * Sets whether or not block selection is enabled. ++ */ ++void ++vte_terminal_set_selection_block_mode(VteTerminal *terminal, gboolean block_mode) { ++ g_return_if_fail(VTE_IS_TERMINAL(terminal)); ++ terminal->pvt->selection_block_mode = block_mode; ++} ++ ++/** ++ * vte_terminal_select_text: ++ * @terminal: a #VteTerminal ++ * @start_col: the starting column for the selection ++ * @start_row: the starting row for the selection ++ * @end_col: the end column for the selection ++ * @end_row: the end row for the selection ++ * ++ * Sets the current selection region. ++ */ ++void ++vte_terminal_select_text(VteTerminal *terminal, ++ long start_col, long start_row, ++ long end_col, long end_row) { ++ _vte_terminal_select_text(terminal, start_col, start_row, end_col, end_row, 0, 0); ++} ++ + /* Autoscroll a bit. */ + static gboolean + vte_terminal_autoscroll(VteTerminal *terminal) +@@ -8631,7 +8698,7 @@ + #endif + kill(terminal->pvt->pty_pid, SIGHUP); + } +- _vte_terminal_disconnect_pty_read(terminal); ++ vte_terminal_disconnect_pty_read(terminal); + _vte_terminal_disconnect_pty_write(terminal); + if (terminal->pvt->pty_channel != NULL) { + g_io_channel_unref (terminal->pvt->pty_channel); +@@ -12188,7 +12255,7 @@ + g_object_freeze_notify(object); + + if (pvt->pty != NULL) { +- _vte_terminal_disconnect_pty_read(terminal); ++ vte_terminal_disconnect_pty_read(terminal); + _vte_terminal_disconnect_pty_write(terminal); + + if (terminal->pvt->pty_channel != NULL) { +@@ -12243,7 +12310,7 @@ + _vte_terminal_setup_utf8 (terminal); + + /* Open channels to listen for input on. */ +- _vte_terminal_connect_pty_read (terminal); ++ vte_terminal_connect_pty_read (terminal); + + g_object_notify(object, "pty"); + +@@ -12276,7 +12343,7 @@ + } + + char * +-_vte_terminal_get_selection(VteTerminal *terminal) ++vte_terminal_get_selection(VteTerminal *terminal) + { + g_return_val_if_fail(VTE_IS_TERMINAL(terminal), NULL); + +diff --unified -aur vte-0.40.0/src/vteint.h vte-0.40.0.new/src/vteint.h +--- vte-0.40.0/src/vteint.h 2014-05-28 08:22:48.000000000 -0400 ++++ vte-0.40.0.new/src/vteint.h 2015-04-10 00:08:53.153520062 -0400 +@@ -25,7 +25,6 @@ + G_BEGIN_DECLS + + void _vte_terminal_accessible_ref(VteTerminal *terminal); +-char* _vte_terminal_get_selection(VteTerminal *terminal); + void _vte_terminal_get_start_selection(VteTerminal *terminal, long *x, long *y); + void _vte_terminal_get_end_selection(VteTerminal *terminal, long *x, long *y); + void _vte_terminal_select_text(VteTerminal *terminal, long start_x, long start_y, long end_x, long end_y, int start_offset, int end_offset); +diff --unified -aur vte-0.40.0/src/vteterminal.h vte-0.40.0.new/src/vteterminal.h +--- vte-0.40.0/src/vteterminal.h 2015-03-18 12:38:09.000000000 -0400 ++++ vte-0.40.0.new/src/vteterminal.h 2015-04-10 00:08:53.150186722 -0400 +@@ -169,6 +169,18 @@ + + void vte_terminal_select_all(VteTerminal *terminal) _VTE_GNUC_NONNULL(1); + void vte_terminal_unselect_all(VteTerminal *terminal) _VTE_GNUC_NONNULL(1); ++gboolean vte_terminal_get_selection_block_mode(VteTerminal *terminal) _VTE_GNUC_NONNULL(1); ++void vte_terminal_set_selection_block_mode(VteTerminal *terminal, ++ gboolean block_mode) _VTE_GNUC_NONNULL(1); ++void vte_terminal_select_text(VteTerminal *terminal, ++ long start_col, long start_row, ++ long end_col, long end_row) _VTE_GNUC_NONNULL(1); ++char * ++vte_terminal_get_selection(VteTerminal *terminal) _VTE_GNUC_NONNULL(1); ++ ++/* pause and unpause output */ ++void vte_terminal_disconnect_pty_read(VteTerminal *vte); ++void vte_terminal_connect_pty_read(VteTerminal *vte); + + /* By-word selection */ + void vte_terminal_set_word_char_exceptions(VteTerminal *terminal, +@@ -280,6 +292,8 @@ + void vte_terminal_get_cursor_position(VteTerminal *terminal, + glong *column, + glong *row) _VTE_GNUC_NONNULL(1); ++void vte_terminal_set_cursor_position(VteTerminal *terminal, ++ long column, long row) _VTE_GNUC_NONNULL(1); + + /* Add a matching expression, returning the tag the widget assigns to that + * expression. */ diff --git a/pkgs/desktops/gnome-3/3.18/core/vte/src.nix b/pkgs/desktops/gnome-3/3.18/core/vte/src.nix new file mode 100644 index 0000000000000..ea6e39182fcc0 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/vte/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "vte-0.42.0"; + + src = fetchurl { + url = mirror://gnome/sources/vte/0.42/vte-0.42.0.tar.xz; + sha256 = "2168f79d2043cbbe6d4375d01e54cebda71bb6f5d9dc8ad658b9a1dc1052de04"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/yelp-tools/default.nix b/pkgs/desktops/gnome-3/3.18/core/yelp-tools/default.nix new file mode 100644 index 0000000000000..de708d48c5ec5 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/yelp-tools/default.nix @@ -0,0 +1,17 @@ +{ stdenv, fetchurl, libxml2, libxslt, itstool, gnome3, pkgconfig }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ libxml2 libxslt itstool gnome3.yelp_xsl pkgconfig ]; + + doCheck = true; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Yelp/Tools; + description = "Small programs that help you create, edit, manage, and publish your Mallard or DocBook documentation"; + maintainers = with maintainers; [ iElectric ]; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/yelp-tools/src.nix b/pkgs/desktops/gnome-3/3.18/core/yelp-tools/src.nix new file mode 100644 index 0000000000000..f03c6d1bc3113 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/yelp-tools/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "yelp-tools-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/yelp-tools/3.18/yelp-tools-3.18.0.tar.xz; + sha256 = "c6c1d65f802397267cdc47aafd5398c4b60766e0a7ad2190426af6c0d0716932"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/yelp-xsl/default.nix b/pkgs/desktops/gnome-3/3.18/core/yelp-xsl/default.nix new file mode 100644 index 0000000000000..0a3976f35a15a --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/yelp-xsl/default.nix @@ -0,0 +1,18 @@ +{ stdenv, intltool, fetchurl, pkgconfig, bash +, itstool, libxml2, libxslt, gnome3 }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + doCheck = true; + + buildInputs = [ pkgconfig intltool itstool libxml2 libxslt ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Yelp; + description = "Yelp's universal stylesheets for Mallard and DocBook"; + maintainers = gnome3.maintainers; + license = [licenses.gpl2 licenses.lgpl2]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/yelp-xsl/src.nix b/pkgs/desktops/gnome-3/3.18/core/yelp-xsl/src.nix new file mode 100644 index 0000000000000..a3343d2dfd1b9 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/yelp-xsl/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "yelp-xsl-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/yelp-xsl/3.18/yelp-xsl-3.18.0.tar.xz; + sha256 = "893620857b72b3b43ee3b462281240b7ca4d80292f469552827f0597bf60d2b2"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/yelp/default.nix b/pkgs/desktops/gnome-3/3.18/core/yelp/default.nix new file mode 100644 index 0000000000000..13464137bd8bc --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/yelp/default.nix @@ -0,0 +1,26 @@ +{ stdenv, intltool, fetchurl, webkitgtk, pkgconfig, gtk3, glib +, file, librsvg, gnome3, gdk_pixbuf, sqlite +, bash, makeWrapper, itstool, libxml2, libxslt, icu, gst_all_1 +, wrapGAppsHook }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ]; + + preConfigure = "substituteInPlace ./configure --replace /usr/bin/file ${file}/bin/file"; + + buildInputs = [ pkgconfig gtk3 glib webkitgtk intltool itstool sqlite + libxml2 libxslt icu file makeWrapper gnome3.yelp_xsl + librsvg gdk_pixbuf gnome3.defaultIconTheme + gnome3.gsettings_desktop_schemas wrapGAppsHook + gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Yelp; + description = "The help viewer in Gnome"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/yelp/src.nix b/pkgs/desktops/gnome-3/3.18/core/yelp/src.nix new file mode 100644 index 0000000000000..cb25d3d30c677 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/yelp/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "yelp-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/yelp/3.18/yelp-3.18.0.tar.xz; + sha256 = "a8c201e520c87832d017439492e4343e957a90da5c6d85060e8dd3b28ffee72e"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/zenity/default.nix b/pkgs/desktops/gnome-3/3.18/core/zenity/default.nix new file mode 100644 index 0000000000000..8f525945a6af3 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/zenity/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl, pkgconfig, cairo, libxml2, libxslt, gnome3, pango +, gnome_doc_utils, intltool, libX11, which, itstool }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + preBuild = '' + mkdir -p $out/include + ''; + + buildInputs = [ gnome3.gtk libxml2 libxslt libX11 itstool ]; + + nativeBuildInputs = [ pkgconfig intltool gnome_doc_utils which ]; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/zenity/src.nix b/pkgs/desktops/gnome-3/3.18/core/zenity/src.nix new file mode 100644 index 0000000000000..87f16156515b8 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/zenity/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "zenity-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/zenity/3.18/zenity-3.18.0.tar.xz; + sha256 = "0efafea95a830f3bf6eca805ff4a8008df760a6ad3e81181b9473dcf721c3a69"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/default.nix b/pkgs/desktops/gnome-3/3.18/default.nix new file mode 100644 index 0000000000000..a3ae8933e64f7 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/default.nix @@ -0,0 +1,394 @@ +{ pkgs }: + +let + + pkgsFun = overrides: + let + self = self_ // overrides; + self_ = with self; { + + overridePackages = f: + let newself = pkgsFun (f newself self); + in newself; + + callPackage = pkgs.newScope self; + + version = "3.18"; + maintainers = with pkgs.lib.maintainers; [ lethalman jgeerds ]; + + corePackages = with gnome3; [ + pkgs.desktop_file_utils pkgs.ibus + pkgs.shared_mime_info # for update-mime-database + glib # for gsettings + gtk3 # for gtk-update-icon-cache + glib_networking gvfs dconf gnome-backgrounds gnome_control_center + gnome-menus gnome_settings_daemon gnome_shell + gnome_themes_standard defaultIconTheme gnome-shell-extensions + pkgs.hicolor_icon_theme + ]; + + optionalPackages = with gnome3; [ baobab empathy eog epiphany evince + gucharmap nautilus totem vino yelp gnome-bluetooth + gnome-calculator gnome-contacts gnome-font-viewer gnome-screenshot + gnome-system-log gnome-system-monitor + gnome_terminal gnome-user-docs bijiben evolution file-roller gedit + gnome-clocks gnome-music gnome-tweak-tool gnome-photos + nautilus-sendto dconf-editor vinagre gnome-weather gnome-logs + gnome-maps gnome-characters gnome-calendar accerciser gnome-nettool + gnome-getting-started-docs + ]; + + gamesPackages = with gnome3; [ swell-foop lightsoff iagno + tali quadrapassel gnome-sudoku aisleriot five-or-more + four-in-a-row gnome-chess gnome-klotski gnome-mahjongg + gnome-mines gnome-nibbles gnome-robots gnome-tetravex + hitori gnome-taquin + ]; + + inherit (pkgs) glib gtk2 webkitgtk24x gtk3 gtkmm3 libcanberra; + inherit (pkgs.gnome2) ORBit2; + libsoup = pkgs.libsoup.override { gnomeSupport = true; }; + libchamplain = pkgs.libchamplain.override { libsoup = libsoup; }; + orbit = ORBit2; + gnome3 = self // { recurseForDerivations = false; }; + clutter = pkgs.clutter_1_24; + clutter_gtk = pkgs.clutter_gtk_1_6.override { inherit clutter gtk3; }; + clutter-gst_2 = pkgs.clutter-gst; + clutter-gst = pkgs.clutter-gst_3_0.override { inherit clutter cogl; }; + cogl = pkgs.cogl_1_22; + gtk = gtk3; + gtkmm = gtkmm3; + gtkvnc = pkgs.gtkvnc.override { enableGTK3 = true; }; + vala = pkgs.vala_0_26; + gegl_0_3 = pkgs.gegl_0_3.override { inherit gtk; }; + +# Simplify the nixos module and gnome packages + defaultIconTheme = adwaita-icon-theme; + +#### Core (http://ftp.acc.umu.se/pub/GNOME/core/) + + adwaita-icon-theme = callPackage ./core/adwaita-icon-theme { }; + + baobab = callPackage ./core/baobab { }; + + caribou = callPackage ./core/caribou { }; + + dconf = callPackage ./core/dconf { }; + dconf-editor = callPackage ./core/dconf-editor { }; + + empathy = callPackage ./core/empathy { + webkitgtk = webkitgtk24x; + clutter-gst = pkgs.clutter-gst; + }; + + epiphany = callPackage ./core/epiphany { }; + + evince = callPackage ./core/evince { }; # ToDo: dbus would prevent compilation, enable tests + + evolution_data_server = callPackage ./core/evolution-data-server { }; + + gconf = callPackage ./core/gconf { }; + + geocode_glib = callPackage ./core/geocode-glib { }; + + gcr = callPackage ./core/gcr { }; # ToDo: tests fail + + gdm = callPackage ./core/gdm { }; + + gjs = callPackage ./core/gjs { }; + + glib_networking = pkgs.glib_networking.override { + inherit gsettings_desktop_schemas; + }; + + gnome-backgrounds = callPackage ./core/gnome-backgrounds { }; + + gnome-bluetooth = callPackage ./core/gnome-bluetooth { }; + + gnome-contacts = callPackage ./core/gnome-contacts { }; + + gnome_control_center = callPackage ./core/gnome-control-center { }; + + gnome-calculator = callPackage ./core/gnome-calculator { }; + + gnome_common = callPackage ./core/gnome-common { }; + + gnome_desktop = callPackage ./core/gnome-desktop { }; + + gnome-dictionary = callPackage ./core/gnome-dictionary { }; + + gnome-disk-utility = callPackage ./core/gnome-disk-utility { }; + + gnome-font-viewer = callPackage ./core/gnome-font-viewer { }; + + gnome-menus = callPackage ./core/gnome-menus { }; + + gnome_keyring = callPackage ./core/gnome-keyring { }; + + libgnome_keyring = callPackage ./core/libgnome-keyring { }; + + libgnomekbd = callPackage ./core/libgnomekbd { }; + + folks = callPackage ./core/folks { }; + + gnome_online_accounts = callPackage ./core/gnome-online-accounts { }; + + gnome-online-miners = callPackage ./core/gnome-online-miners { }; + + gnome_session = callPackage ./core/gnome-session { }; + + gnome_shell = callPackage ./core/gnome-shell { }; + + gnome-shell-extensions = callPackage ./core/gnome-shell-extensions { }; + + gnome-screenshot = callPackage ./core/gnome-screenshot { }; + + gnome_settings_daemon = callPackage ./core/gnome-settings-daemon { }; + + gnome-system-log = callPackage ./core/gnome-system-log { }; + + gnome-system-monitor = callPackage ./core/gnome-system-monitor { }; + + gnome_terminal = callPackage ./core/gnome-terminal { }; + + gnome_themes_standard = callPackage ./core/gnome-themes-standard { }; + + gnome-user-docs = callPackage ./core/gnome-user-docs { }; + + gnome-user-share = callPackage ./core/gnome-user-share { }; + + grilo = callPackage ./core/grilo { }; + + grilo-plugins = callPackage ./core/grilo-plugins { }; + + gsettings_desktop_schemas = callPackage ./core/gsettings-desktop-schemas { }; + + gsound = callPackage ./core/gsound { }; + + gtksourceview = callPackage ./core/gtksourceview { }; + + gucharmap = callPackage ./core/gucharmap { }; + + gvfs = pkgs.gvfs.override { gnome = gnome3; gnomeSupport = true; }; + + eog = callPackage ./core/eog { }; + + libcroco = callPackage ./core/libcroco {}; + + libgee = callPackage ./core/libgee { }; + + libgdata = callPackage ./core/libgdata { }; + + libgxps = callPackage ./core/libgxps { }; + + libpeas = callPackage ./core/libpeas {}; + + libgweather = callPackage ./core/libgweather { }; + + libzapojit = callPackage ./core/libzapojit { }; + + mutter = callPackage ./core/mutter { }; + + nautilus = callPackage ./core/nautilus { }; + + networkmanager_openvpn = pkgs.networkmanager_openvpn.override { + inherit gnome3; + }; + + networkmanager_pptp = pkgs.networkmanager_pptp.override { + inherit gnome3; + }; + + networkmanager_vpnc = pkgs.networkmanager_vpnc.override { + inherit gnome3; + }; + + networkmanager_openconnect = pkgs.networkmanager_openconnect.override { + inherit gnome3; + }; + + networkmanager_l2tp = pkgs.networkmanager_l2tp.override { + inherit gnome3; + }; + + networkmanagerapplet = pkgs.networkmanagerapplet.override { + inherit gnome3 gsettings_desktop_schemas glib_networking; + }; + + rest = callPackage ./core/rest { }; + + sushi = callPackage ./core/sushi { + clutter-gst = pkgs.clutter-gst; + }; + + totem = callPackage ./core/totem { }; + + totem-pl-parser = callPackage ./core/totem-pl-parser { }; + + tracker = callPackage ./core/tracker { giflib = pkgs.giflib_5_0; }; + + vte = callPackage ./core/vte { }; + + vte_290 = callPackage ./core/vte/2.90.nix { }; + + vte-select-text = vte.override { selectTextPatch = true; }; + + vino = callPackage ./core/vino { }; + + yelp = callPackage ./core/yelp { }; + + yelp_xsl = callPackage ./core/yelp-xsl { }; + + yelp_tools = callPackage ./core/yelp-tools { }; + + zenity = callPackage ./core/zenity { }; + + +#### Apps (http://ftp.acc.umu.se/pub/GNOME/apps/) + + accerciser = callPackage ./apps/accerciser { }; + + bijiben = callPackage ./apps/bijiben { + webkitgtk = webkitgtk24x; + }; + + cheese = callPackage ./apps/cheese { }; + + evolution = callPackage ./apps/evolution { + webkitgtk = webkitgtk24x; + }; + + file-roller = callPackage ./apps/file-roller { }; + + gedit = callPackage ./apps/gedit { }; + + glade = callPackage ./apps/glade { }; + + gnome-boxes = callPackage ./apps/gnome-boxes { + gtkvnc = pkgs.gtkvnc.override { enableGTK3 = true; }; + spice_gtk = pkgs.spice_gtk.override { enableGTK3 = true; }; + }; + + gnome-calendar = callPackage ./apps/gnome-calendar { }; + + gnome-characters = callPackage ./apps/gnome-characters { }; + + gnome-clocks = callPackage ./apps/gnome-clocks { }; + + gnome-documents = callPackage ./apps/gnome-documents { }; + + gnome-getting-started-docs = callPackage ./apps/gnome-getting-started-docs { }; + + gnome-logs = callPackage ./apps/gnome-logs { }; + + gnome-maps = callPackage ./apps/gnome-maps { }; + + gnome-music = callPackage ./apps/gnome-music { }; + + gnome-nettool = callPackage ./apps/gnome-nettool { }; + + gnome-photos = callPackage ./apps/gnome-photos { + gegl = gegl_0_3; + }; + + gnome-weather = callPackage ./apps/gnome-weather { }; + + nautilus-sendto = callPackage ./apps/nautilus-sendto { }; + + polari = callPackage ./apps/polari { }; + + # scrollkeeper replacement + rarian = callPackage ./desktop/rarian { }; + + seahorse = callPackage ./apps/seahorse { }; + + vinagre = callPackage ./apps/vinagre { }; + +#### Dev http://ftp.gnome.org/pub/GNOME/devtools/ + + anjuta = callPackage ./devtools/anjuta { }; + + devhelp = callPackage ./devtools/devhelp { + webkitgtk = webkitgtk24x; + }; + + gdl = callPackage ./devtools/gdl { }; + + gnome-devel-docs = callPackage ./devtools/gnome-devel-docs { }; + +#### Games + + aisleriot = callPackage ./games/aisleriot { }; + + five-or-more = callPackage ./games/five-or-more { }; + + four-in-a-row = callPackage ./games/four-in-a-row { }; + + gnome-chess = callPackage ./games/gnome-chess { }; + + gnome-klotski = callPackage ./games/gnome-klotski { }; + + gnome-mahjongg = callPackage ./games/gnome-mahjongg { }; + + gnome-mines = callPackage ./games/gnome-mines { }; + + gnome-nibbles = callPackage ./games/gnome-nibbles { }; + + gnome-robots = callPackage ./games/gnome-robots { }; + + gnome-sudoku = callPackage ./games/gnome-sudoku { }; + + gnome-taquin = callPackage ./games/gnome-taquin { }; + + gnome-tetravex = callPackage ./games/gnome-tetravex { }; + + hitori = callPackage ./games/hitori { }; + + iagno = callPackage ./games/iagno { }; + + lightsoff = callPackage ./games/lightsoff { }; + + swell-foop = callPackage ./games/swell-foop { }; + + tali = callPackage ./games/tali { }; + + quadrapassel = callPackage ./games/quadrapassel { }; + +#### Misc -- other packages on http://ftp.gnome.org/pub/GNOME/sources/ + + california = callPackage ./misc/california { }; + + geary = callPackage ./misc/geary { + webkitgtk = webkitgtk24x; + }; + + gfbgraph = callPackage ./misc/gfbgraph { }; + + gitg = callPackage ./misc/gitg { + webkitgtk = webkitgtk24x; + }; + + libgda = callPackage ./misc/libgda { }; + + libgit2-glib = callPackage ./misc/libgit2-glib { + libgit2 = pkgs.libgit2.override { libssh2 = null; }; + }; + + libmediaart = callPackage ./misc/libmediaart { }; + + gexiv2 = callPackage ./misc/gexiv2 { }; + + gnome-tweak-tool = callPackage ./misc/gnome-tweak-tool { }; + + gpaste = callPackage ./misc/gpaste { }; + + gtkhtml = callPackage ./misc/gtkhtml { }; + + pomodoro = callPackage ./misc/pomodoro { }; + + gnome-video-effects = callPackage ./misc/gnome-video-effects { }; + + }; + in self; # pkgsFun + +in pkgsFun {} diff --git a/pkgs/desktops/gnome-3/3.18/desktop/rarian/default.nix b/pkgs/desktops/gnome-3/3.18/desktop/rarian/default.nix new file mode 100644 index 0000000000000..a1b38b21869ac --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/desktop/rarian/default.nix @@ -0,0 +1,16 @@ +{stdenv, fetchurl, pkgconfig, perl, perlXMLParser, libxml2, libxslt, docbook_xml_dtd_42}: + +stdenv.mkDerivation rec { + name = "rarian-0.8.1"; + src = fetchurl { + url = "mirror://gnome/sources/rarian/0.8/${name}.tar.bz2"; + sha256 = "aafe886d46e467eb3414e91fa9e42955bd4b618c3e19c42c773026b205a84577"; + }; + + buildInputs = [pkgconfig perl perlXMLParser libxml2 libxslt]; + configureFlags = "--with-xml-catalog=${docbook_xml_dtd_42}/xml/dtd/docbook/docbook.cat"; + + meta = with stdenv.lib; { + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/devtools/anjuta/default.nix b/pkgs/desktops/gnome-3/3.18/devtools/anjuta/default.nix new file mode 100644 index 0000000000000..af74df4ad13bd --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/devtools/anjuta/default.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, flex, bison, libxml2, intltool, + itstool, python, makeWrapper }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + enableParallelBuilding = true; + + buildInputs = [ pkgconfig flex bison gtk3 libxml2 gnome3.gjs gnome3.gdl + gnome3.libgda gnome3.gtksourceview intltool itstool python makeWrapper ]; + + preFixup = '' + wrapProgram $out/bin/anjuta \ + --prefix XDG_DATA_DIRS : \ + "$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + description = "Software development studio"; + homepage = http://anjuta.org/; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/devtools/anjuta/src.nix b/pkgs/desktops/gnome-3/3.18/devtools/anjuta/src.nix new file mode 100644 index 0000000000000..835024c3447fb --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/devtools/anjuta/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "anjuta-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/anjuta/3.18/anjuta-3.18.0.tar.xz; + sha256 = "6a3fec0963f04bc62a9dfb951e577a3276d39c3414083ef73163c3fea8e741ba"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/devtools/devhelp/default.nix b/pkgs/desktops/gnome-3/3.18/devtools/devhelp/default.nix new file mode 100644 index 0000000000000..1cfae754cfec0 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/devtools/devhelp/default.nix @@ -0,0 +1,18 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, webkitgtk, intltool }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ + pkgconfig gtk3 wrapGAppsHook webkitgtk intltool gnome3.defaultIconTheme + ]; + + meta = with stdenv.lib; { + homepage = https://live.gnome.org/devhelp; + description = "API documentation browser for GNOME"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/devtools/devhelp/src.nix b/pkgs/desktops/gnome-3/3.18/devtools/devhelp/src.nix new file mode 100644 index 0000000000000..8da63dc2685d5 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/devtools/devhelp/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "devhelp-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/devhelp/3.18/devhelp-3.18.0.tar.xz; + sha256 = "2494af16fedc311d7bb50bc47c32a69035f7b95fd7995d9db4fe497926087fb5"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/devtools/gdl/default.nix b/pkgs/desktops/gnome-3/3.18/devtools/gdl/default.nix new file mode 100644 index 0000000000000..156d91b3eae78 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/devtools/gdl/default.nix @@ -0,0 +1,15 @@ +{ stdenv, fetchurl, pkgconfig, libxml2, gtk3, gnome3, intltool }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ pkgconfig libxml2 gtk3 intltool ]; + + meta = with stdenv.lib; { + description = "Gnome docking library"; + homepage = https://developer.gnome.org/gdl/; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/devtools/gdl/src.nix b/pkgs/desktops/gnome-3/3.18/devtools/gdl/src.nix new file mode 100644 index 0000000000000..3fd391397999b --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/devtools/gdl/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gdl-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gdl/3.18/gdl-3.18.0.tar.xz; + sha256 = "1499884e4fce375a963cf2b98b90e6724144f9b1f1ac8b84d765f4c85a2140b2"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/devtools/gnome-devel-docs/default.nix b/pkgs/desktops/gnome-3/3.18/devtools/gnome-devel-docs/default.nix new file mode 100644 index 0000000000000..50960f41a3126 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/devtools/gnome-devel-docs/default.nix @@ -0,0 +1,15 @@ +{ stdenv, fetchurl, gnome3, intltool, itstool, libxml2 }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ intltool itstool libxml2 ]; + + meta = with stdenv.lib; { + homepage = https://github.com/GNOME/gnome-devel-docs; + description = "Developer documentation for GNOME"; + maintainers = gnome3.maintainers; + license = licenses.fdl12; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/devtools/gnome-devel-docs/src.nix b/pkgs/desktops/gnome-3/3.18/devtools/gnome-devel-docs/src.nix new file mode 100644 index 0000000000000..50a575945d7e4 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/devtools/gnome-devel-docs/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-devel-docs-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-devel-docs/3.18/gnome-devel-docs-3.18.0.tar.xz; + sha256 = "f237fb8593ada0346ccc932ae17647a883cc9f7026f4cad16f084bb7420e0925"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/aisleriot/default.nix b/pkgs/desktops/gnome-3/3.18/games/aisleriot/default.nix new file mode 100644 index 0000000000000..e149a0b312647 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/aisleriot/default.nix @@ -0,0 +1,20 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, intltool, itstool, gtk3 +, wrapGAppsHook, gconf, librsvg, libxml2, desktop_file_utils +, guile, libcanberra_gtk3 }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + configureFlags = [ "--with-card-theme-formats=svg" ]; + + buildInputs = [ pkgconfig intltool itstool gtk3 wrapGAppsHook gconf + librsvg libxml2 desktop_file_utils guile libcanberra_gtk3 ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Aisleriot; + description = "A collection of patience games written in guile scheme"; + maintainers = gnome3.maintainers; + license = licenses.gpl3Plus; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/aisleriot/src.nix b/pkgs/desktops/gnome-3/3.18/games/aisleriot/src.nix new file mode 100644 index 0000000000000..465fccd15b42b --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/aisleriot/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "aisleriot-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/aisleriot/3.18/aisleriot-3.18.0.tar.xz; + sha256 = "3421f7dabe482ddae2fd2a053a13a2a9549fe960fec5838ab4fe6d89cff054dd"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/five-or-more/default.nix b/pkgs/desktops/gnome-3/3.18/games/five-or-more/default.nix new file mode 100644 index 0000000000000..50a7d2906a77d --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/five-or-more/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, librsvg, intltool, itstool, libxml2 }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ + pkgconfig gtk3 wrapGAppsHook librsvg intltool itstool libxml2 + gnome3.defaultIconTheme + ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Five_or_more; + description = "Remove colored balls from the board by forming lines"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/five-or-more/src.nix b/pkgs/desktops/gnome-3/3.18/games/five-or-more/src.nix new file mode 100644 index 0000000000000..37d9794dc1b4e --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/five-or-more/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "five-or-more-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/five-or-more/3.18/five-or-more-3.18.0.tar.xz; + sha256 = "e1e7cc81b1281382da9a6ab466d97f09561dbaf39031a9b93f0a45221234fe62"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/four-in-a-row/default.nix b/pkgs/desktops/gnome-3/3.18/games/four-in-a-row/default.nix new file mode 100644 index 0000000000000..68228750cd876 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/four-in-a-row/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, intltool, itstool, libcanberra_gtk3, librsvg, libxml2 }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ + pkgconfig gtk3 wrapGAppsHook intltool itstool libcanberra_gtk3 librsvg + libxml2 gnome3.defaultIconTheme + ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Four-in-a-row; + description = "Make lines of the same color to win"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/four-in-a-row/src.nix b/pkgs/desktops/gnome-3/3.18/games/four-in-a-row/src.nix new file mode 100644 index 0000000000000..dc24a4366e3c3 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/four-in-a-row/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "four-in-a-row-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/four-in-a-row/3.18/four-in-a-row-3.18.0.tar.xz; + sha256 = "a65fece60b66122fbf5fddf646ac2acffc58a802cf3e87e5985d5b962d53df48"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/gnome-chess/default.nix b/pkgs/desktops/gnome-3/3.18/games/gnome-chess/default.nix new file mode 100644 index 0000000000000..a96dae3c12cb0 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/gnome-chess/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, intltool, itstool, librsvg, libxml2 }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ + pkgconfig gtk3 wrapGAppsHook intltool itstool librsvg libxml2 + gnome3.defaultIconTheme + ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Chess; + description = "Play the classic two-player boardgame of chess"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/gnome-chess/src.nix b/pkgs/desktops/gnome-3/3.18/games/gnome-chess/src.nix new file mode 100644 index 0000000000000..5cbbb6c9025a0 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/gnome-chess/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-chess-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-chess/3.18/gnome-chess-3.18.0.tar.xz; + sha256 = "c841198935d807618c3cecbf10ed24643390d504e17961717bac455f4e1b37ad"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/gnome-klotski/default.nix b/pkgs/desktops/gnome-3/3.18/games/gnome-klotski/default.nix new file mode 100644 index 0000000000000..b13bf8afbfae7 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/gnome-klotski/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, librsvg, libxml2, intltool, itstool }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ + pkgconfig gtk3 wrapGAppsHook intltool itstool librsvg libxml2 + gnome3.defaultIconTheme + ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Klotski; + description = "Slide blocks to solve the puzzle"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/gnome-klotski/src.nix b/pkgs/desktops/gnome-3/3.18/games/gnome-klotski/src.nix new file mode 100644 index 0000000000000..c772988198cf4 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/gnome-klotski/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-klotski-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-klotski/3.18/gnome-klotski-3.18.0.tar.xz; + sha256 = "75ef9f7b3b09edf660165f62f8797f3850a49d6be4de0c258ee7d828e67820f2"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/gnome-mahjongg/default.nix b/pkgs/desktops/gnome-3/3.18/games/gnome-mahjongg/default.nix new file mode 100644 index 0000000000000..43db32e885777 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/gnome-mahjongg/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, librsvg, intltool, itstool, libxml2 }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ + pkgconfig gtk3 wrapGAppsHook librsvg intltool itstool libxml2 + gnome3.defaultIconTheme + ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Mahjongg; + description = "Disassemble a pile of tiles by removing matching pairs"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/gnome-mahjongg/src.nix b/pkgs/desktops/gnome-3/3.18/games/gnome-mahjongg/src.nix new file mode 100644 index 0000000000000..214c4a7d6e06e --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/gnome-mahjongg/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-mahjongg-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-mahjongg/3.18/gnome-mahjongg-3.18.0.tar.xz; + sha256 = "7034428f5ac04bfd90689ee66894a6948a2ff1bfa2d2548f7559d2134b967405"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/gnome-mines/default.nix b/pkgs/desktops/gnome-3/3.18/games/gnome-mines/default.nix new file mode 100644 index 0000000000000..4d703bb37a797 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/gnome-mines/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, librsvg, intltool, itstool, libxml2 }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ + pkgconfig gtk3 wrapGAppsHook librsvg intltool itstool libxml2 + gnome3.defaultIconTheme + ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Mines; + description = "Clear hidden mines from a minefield"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/gnome-mines/src.nix b/pkgs/desktops/gnome-3/3.18/games/gnome-mines/src.nix new file mode 100644 index 0000000000000..e5099ac95756d --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/gnome-mines/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-mines-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-mines/3.18/gnome-mines-3.18.0.tar.xz; + sha256 = "8b4c05ef0ab43031661e3cdb1b17ba551efe4e4488fe4462fee9557cd10a64f9"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/gnome-nibbles/default.nix b/pkgs/desktops/gnome-3/3.18/games/gnome-nibbles/default.nix new file mode 100644 index 0000000000000..85ffeb3c50fdd --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/gnome-nibbles/default.nix @@ -0,0 +1,20 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, librsvg, libcanberra_gtk3, clutter_gtk, intltool, itstool +, libxml2 }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ + pkgconfig gtk3 wrapGAppsHook intltool itstool libxml2 + librsvg libcanberra_gtk3 clutter_gtk gnome3.defaultIconTheme + ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Nibbles; + description = "Guide a worm around a maze"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/gnome-nibbles/src.nix b/pkgs/desktops/gnome-3/3.18/games/gnome-nibbles/src.nix new file mode 100644 index 0000000000000..d82422619f86a --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/gnome-nibbles/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-nibbles-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-nibbles/3.18/gnome-nibbles-3.18.0.tar.xz; + sha256 = "9ffc549d574774905c79b391d3e59f8045f47504d96279d9b26cc602f59ad545"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/gnome-robots/default.nix b/pkgs/desktops/gnome-3/3.18/games/gnome-robots/default.nix new file mode 100644 index 0000000000000..3c318fa847c5d --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/gnome-robots/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, librsvg, libcanberra_gtk3, intltool, itstool, libxml2 }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ + pkgconfig gtk3 wrapGAppsHook intltool itstool librsvg libcanberra_gtk3 + libxml2 gnome3.defaultIconTheme + ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Robots; + description = "Avoid the robots and make them crash into each other"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/gnome-robots/src.nix b/pkgs/desktops/gnome-3/3.18/games/gnome-robots/src.nix new file mode 100644 index 0000000000000..228e2ca81b18c --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/gnome-robots/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-robots-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-robots/3.18/gnome-robots-3.18.0.tar.xz; + sha256 = "34311cb9de6a970f00fa9743dced2925e98f40f77b4a406e17b589412cb902fc"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/gnome-sudoku/default.nix b/pkgs/desktops/gnome-3/3.18/games/gnome-sudoku/default.nix new file mode 100644 index 0000000000000..c8ba82c7246df --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/gnome-sudoku/default.nix @@ -0,0 +1,17 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gtk3, gnome3, wrapGAppsHook +, json_glib, qqwing, itstool, libxml2 }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ pkgconfig intltool wrapGAppsHook gtk3 gnome3.libgee + json_glib qqwing itstool libxml2 ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Sudoku; + description = "Test your logic skills in this number grid puzzle"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/gnome-sudoku/src.nix b/pkgs/desktops/gnome-3/3.18/games/gnome-sudoku/src.nix new file mode 100644 index 0000000000000..f7dd422bec556 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/gnome-sudoku/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-sudoku-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-sudoku/3.18/gnome-sudoku-3.18.0.tar.xz; + sha256 = "e6180b14f7ccb9ec43e187cf358eceaf707edb4d9defff3386ae4ef8e53cce5b"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/gnome-taquin/default.nix b/pkgs/desktops/gnome-3/3.18/games/gnome-taquin/default.nix new file mode 100644 index 0000000000000..78eaa23e63bda --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/gnome-taquin/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, librsvg, libcanberra_gtk3, intltool, itstool, libxml2 }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ + pkgconfig gtk3 wrapGAppsHook librsvg libcanberra_gtk3 + intltool itstool libxml2 gnome3.defaultIconTheme + ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Taquin; + description = "Move tiles so that they reach their places"; + maintainers = gnome3.maintainers; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/gnome-taquin/src.nix b/pkgs/desktops/gnome-3/3.18/games/gnome-taquin/src.nix new file mode 100644 index 0000000000000..41cb361edb3c4 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/gnome-taquin/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-taquin-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-taquin/3.18/gnome-taquin-3.18.0.tar.xz; + sha256 = "3cee6a52003ccec3147020d24c079a0cd01b6855fcd486ef20a60e0f862e8760"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/gnome-tetravex/default.nix b/pkgs/desktops/gnome-3/3.18/games/gnome-tetravex/default.nix new file mode 100644 index 0000000000000..d6feab93dba15 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/gnome-tetravex/default.nix @@ -0,0 +1,18 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, libxml2, intltool, itstool }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ + pkgconfig gtk3 wrapGAppsHook intltool itstool libxml2 gnome3.defaultIconTheme + ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Tetravex; + description = "Complete the puzzle by matching numbered tiles"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/gnome-tetravex/src.nix b/pkgs/desktops/gnome-3/3.18/games/gnome-tetravex/src.nix new file mode 100644 index 0000000000000..d73562835e484 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/gnome-tetravex/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-tetravex-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-tetravex/3.18/gnome-tetravex-3.18.0.tar.xz; + sha256 = "ea00ff5ea9a3b583c4d755cefa2725dd7b3b0781972af1c56377c7eda48cb579"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/hitori/default.nix b/pkgs/desktops/gnome-3/3.18/games/hitori/default.nix new file mode 100644 index 0000000000000..bd6be7d43c581 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/hitori/default.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook +, libxml2, intltool, itstool }: + +stdenv.mkDerivation rec { + name = "hitori-${gnome3.version}.1"; + + src = fetchurl { + url = "mirror://gnome/sources/hitori/${gnome3.version}/${name}.tar.xz"; + sha256 = "07pm3xl05jgb8x151k1j2ap57dmfvk2nkz9dmqnn5iywfigsysd1"; + }; + + buildInputs = [ + pkgconfig gtk3 wrapGAppsHook intltool itstool libxml2 + gnome3.defaultIconTheme + ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Hitori; + description = "GTK+ application to generate and let you play games of Hitori"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/iagno/default.nix b/pkgs/desktops/gnome-3/3.18/games/iagno/default.nix new file mode 100644 index 0000000000000..1b6f08d1fd65a --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/iagno/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, gdk_pixbuf, librsvg, wrapGAppsHook +, intltool, itstool, libcanberra_gtk3, libxml2, dconf }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ pkgconfig gtk3 gnome3.defaultIconTheme gdk_pixbuf librsvg + dconf libxml2 libcanberra_gtk3 wrapGAppsHook itstool intltool ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Iagno; + description = "Computer version of the game Reversi, more popularly called Othello"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/iagno/src.nix b/pkgs/desktops/gnome-3/3.18/games/iagno/src.nix new file mode 100644 index 0000000000000..09b30cf066b20 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/iagno/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "iagno-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/iagno/3.18/iagno-3.18.0.tar.xz; + sha256 = "4a03b474f9b0f0812c8b22b4991aa6dd894dedc05959001fd9e3e09d0d323c56"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/lightsoff/default.nix b/pkgs/desktops/gnome-3/3.18/games/lightsoff/default.nix new file mode 100644 index 0000000000000..8ec54b4897212 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/lightsoff/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, gdk_pixbuf, librsvg, wrapGAppsHook +, intltool, itstool, clutter, clutter_gtk, libxml2, dconf }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ pkgconfig gtk3 gnome3.defaultIconTheme gdk_pixbuf librsvg dconf + libxml2 clutter clutter_gtk wrapGAppsHook itstool intltool ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Lightsoff; + description = "Puzzle game, where the objective is to turn off all of the tiles on the board"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/lightsoff/src.nix b/pkgs/desktops/gnome-3/3.18/games/lightsoff/src.nix new file mode 100644 index 0000000000000..6645182b3a42d --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/lightsoff/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "lightsoff-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/lightsoff/3.18/lightsoff-3.18.0.tar.xz; + sha256 = "cd5126dae4506363d9196ce8ba083a769d9f8c287fb0008db53cecf6cdc55d61"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/quadrapassel/default.nix b/pkgs/desktops/gnome-3/3.18/games/quadrapassel/default.nix new file mode 100644 index 0000000000000..f319608764d6c --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/quadrapassel/default.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, gdk_pixbuf +, librsvg, libcanberra_gtk3 +, intltool, itstool, libxml2, clutter, clutter_gtk, wrapGAppsHook }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ pkgconfig gtk3 gnome3.defaultIconTheme gdk_pixbuf librsvg + libcanberra_gtk3 itstool intltool clutter + libxml2 clutter_gtk wrapGAppsHook ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Quadrapassel; + description = "Classic falling-block game, Tetris"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/quadrapassel/src.nix b/pkgs/desktops/gnome-3/3.18/games/quadrapassel/src.nix new file mode 100644 index 0000000000000..55b70b7ec58a8 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/quadrapassel/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "quadrapassel-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/quadrapassel/3.18/quadrapassel-3.18.0.tar.xz; + sha256 = "2cd1d5328ab9e2c7041936e8e7e01157f292aa4428da81175fb1aa15d40ef8e1"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/swell-foop/default.nix b/pkgs/desktops/gnome-3/3.18/games/swell-foop/default.nix new file mode 100644 index 0000000000000..3d3e424d0da81 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/swell-foop/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, gdk_pixbuf, librsvg, dconf +, clutter, clutter_gtk, intltool, itstool, libxml2, wrapGAppsHook }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ pkgconfig gtk3 gnome3.defaultIconTheme gdk_pixbuf librsvg + dconf wrapGAppsHook itstool intltool clutter clutter_gtk libxml2 ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Apps/Swell%20Foop"; + description = "Puzzle game, previously known as Same GNOME"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/swell-foop/src.nix b/pkgs/desktops/gnome-3/3.18/games/swell-foop/src.nix new file mode 100644 index 0000000000000..ea127d8c8dc64 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/swell-foop/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "swell-foop-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/swell-foop/3.18/swell-foop-3.18.0.tar.xz; + sha256 = "b105a36e04dc33e2fe1c3200ed62efea0a68e2411453cb41269508aa739d2936"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/tali/default.nix b/pkgs/desktops/gnome-3/3.18/games/tali/default.nix new file mode 100644 index 0000000000000..c2b1f58571241 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/tali/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, gdk_pixbuf +, librsvg, intltool, itstool, libxml2, wrapGAppsHook }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ pkgconfig gtk3 gnome3.defaultIconTheme gdk_pixbuf librsvg + libxml2 itstool intltool wrapGAppsHook ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Tali; + description = "Sort of poker with dice and less money"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/games/tali/src.nix b/pkgs/desktops/gnome-3/3.18/games/tali/src.nix new file mode 100644 index 0000000000000..12c8aefcd71c0 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/games/tali/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "tali-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/tali/3.18/tali-3.18.0.tar.xz; + sha256 = "fe785ed2c3eeca8706834a967c0011cfee016008b4e55c1f5e0529b348bc9864"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/misc/california/0002-Build-with-evolution-data-server-3.13.90.patch b/pkgs/desktops/gnome-3/3.18/misc/california/0002-Build-with-evolution-data-server-3.13.90.patch new file mode 100644 index 0000000000000..c229cc96094fe --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/misc/california/0002-Build-with-evolution-data-server-3.13.90.patch @@ -0,0 +1,39 @@ +diff --git a/configure.ac b/configure.ac +index 8a94642..1ca6426 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -27,7 +27,7 @@ AC_SUBST(LDFLAGS) + GLIB_REQUIRED=2.38.0 + GTK_REQUIRED=3.12.2 + GEE_REQUIRED=0.10.5 +-ECAL_REQUIRED=3.8.5 ++ECAL_REQUIRED=3.13.90 + LIBSOUP_REQUIRED=2.44 + GDATA_REQUIRED=0.14.0 + GOA_REQUIRED=3.8.3 +diff --git a/src/backing/eds/backing-eds-calendar-source.vala b/src/backing/eds/backing-eds-calendar-source.vala +index ee6a572..5009b5d 100644 +--- a/src/backing/eds/backing-eds-calendar-source.vala ++++ b/src/backing/eds/backing-eds-calendar-source.vala +@@ -256,7 +256,7 @@ internal class EdsCalendarSource : CalendarSource { + + // Invoked by EdsStore prior to making it available outside of unit + internal async void open_async(Cancellable? cancellable) throws Error { +- client = (E.CalClient) yield E.CalClient.connect(eds_source, E.CalClientSourceType.EVENTS, ++ client = (E.CalClient) yield E.CalClient.connect(eds_source, E.CalClientSourceType.EVENTS, 1, + cancellable); + + client.bind_property("readonly", this, PROP_READONLY, BindingFlags.SYNC_CREATE); +diff --git a/vapi/libecal-1.2.vapi b/vapi/libecal-1.2.vapi +index 6ead3ec..46fd711 100644 +--- a/vapi/libecal-1.2.vapi ++++ b/vapi/libecal-1.2.vapi +@@ -23,7 +23,7 @@ namespace E { + public bool check_save_schedules (); + public static bool check_timezones (iCal.icalcomponent comp, GLib.List comps, GLib.Callback tzlookup, void* ecalclient, GLib.Cancellable cancellable) throws GLib.Error; + [CCode (finish_name = "e_cal_client_connect_finish")] +- public static async unowned E.Client connect (E.Source source, E.CalClientSourceType source_type, GLib.Cancellable cancellable) throws GLib.Error; ++ public static async unowned E.Client connect (E.Source source, E.CalClientSourceType source_type, uint32 wait_for_connected_seconds, GLib.Cancellable cancellable) throws GLib.Error; + public static unowned E.Client connect_sync (E.Source source, E.CalClientSourceType source_type, GLib.Cancellable cancellable) throws GLib.Error; + [CCode (finish_name = "e_cal_client_create_object_finish")] + public async void create_object (iCal.icalcomponent icalcomp, GLib.Cancellable? cancellable, out string out_uid) throws GLib.Error; diff --git a/pkgs/desktops/gnome-3/3.18/misc/california/default.nix b/pkgs/desktops/gnome-3/3.18/misc/california/default.nix new file mode 100644 index 0000000000000..4bdeeb23a91e0 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/misc/california/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, intltool, pkgconfig, gtk3, vala, makeWrapper +, gnome3, glib, libsoup, libgdata, sqlite, itstool, xdg_utils }: + +let + majorVersion = "0.4"; +in +stdenv.mkDerivation rec { + name = "california-${majorVersion}.0"; + + src = fetchurl { + url = "mirror://gnome/sources/california/${majorVersion}/${name}.tar.xz"; + sha256 = "1dky2kllv469k8966ilnf4xrr7z35pq8mdvs7kwziy59cdikapxj"; + }; + + propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ]; + + buildInputs = [ makeWrapper intltool pkgconfig vala glib gtk3 gnome3.libgee + libsoup libgdata gnome3.gnome_online_accounts gnome3.evolution_data_server + sqlite itstool xdg_utils gnome3.gsettings_desktop_schemas ]; + + preFixup = '' + wrapProgram "$out/bin/california" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gnome3.defaultIconTheme}/share:${gnome3.gnome_themes_standard}/share:$out/share:$GSETTINGS_SCHEMAS_PATH:${gnome3.gsettings_desktop_schemas}/share" + ''; + + enableParallelBuilding = true; + + # Apply fedoras patch to build with evolution-data-server >3.13 + patches = [ ./0002-Build-with-evolution-data-server-3.13.90.patch ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/California; + description = "Calendar application for GNOME 3"; + maintainers = with maintainers; [ pSub ]; + license = licenses.lgpl21; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/misc/geary/default.nix b/pkgs/desktops/gnome-3/3.18/misc/geary/default.nix new file mode 100644 index 0000000000000..11655edded004 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/misc/geary/default.nix @@ -0,0 +1,52 @@ +{ stdenv, fetchurl, intltool, pkgconfig, gtk3, vala +, makeWrapper, gdk_pixbuf, cmake, desktop_file_utils +, libnotify, libcanberra, libsecret, gmime +, libpthreadstubs, sqlite +, gnome3, librsvg, gnome_doc_utils, webkitgtk }: + +let + majorVersion = "0.8"; +in +stdenv.mkDerivation rec { + name = "geary-${majorVersion}.2"; + + src = fetchurl { + url = "mirror://gnome/sources/geary/${majorVersion}/${name}.tar.xz"; + sha256 = "3cfa626168935acf49c9415fad54c7849f17fd833026cfd3c224ba0fb892d641"; + }; + + propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ]; + + buildInputs = [ intltool pkgconfig gtk3 makeWrapper cmake desktop_file_utils gnome_doc_utils + vala webkitgtk libnotify libcanberra gnome3.libgee libsecret gmime sqlite + libpthreadstubs gnome3.gsettings_desktop_schemas gnome3.gcr + gdk_pixbuf librsvg gnome3.defaultIconTheme ]; + + preConfigure = '' + substituteInPlace src/CMakeLists.txt --replace '`pkg-config --variable=girdir gobject-introspection-1.0`' '${webkitgtk}/share/gir-1.0' + ''; + + postInstall = '' + mkdir -p $out/share/gsettings-schemas/${name}/ + mv $out/share/glib-2.0 $out/share/gsettings-schemas/${name} + ''; + + preFixup = '' + wrapProgram "$out/bin/geary" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gnome3.gnome_themes_standard}/share:$out/share:$GSETTINGS_SCHEMAS_PATH" + ''; + + enableParallelBuilding = true; + + patches = [ ./disable_valadoc.patch ]; + patchFlags = "-p0"; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Geary; + description = "Mail client for GNOME 3"; + maintainers = gnome3.maintainers; + license = licenses.lgpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/misc/geary/disable_valadoc.patch b/pkgs/desktops/gnome-3/3.18/misc/geary/disable_valadoc.patch new file mode 100644 index 0000000000000..e65c0dea74728 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/misc/geary/disable_valadoc.patch @@ -0,0 +1,24 @@ +--- src/CMakeLists.txt.orig 2014-05-23 14:41:20.809160364 +0200 ++++ src/CMakeLists.txt 2014-05-23 14:41:29.240261581 +0200 +@@ -696,21 +696,6 @@ + ${CMAKE_COMMAND} -E copy geary-mailer ${CMAKE_BINARY_DIR}/ + ) + +-# Valadoc +-################################################# +-foreach(pkg ${ENGINE_PACKAGES}) +- list(APPEND valadoc_pkg_opts "--pkg=${pkg}") +-endforeach(pkg ${ENGINE_PACKAGES}) +- +-include(FindValadoc) +-add_custom_target( +- valadoc +- WORKING_DIRECTORY +- ${CMAKE_SOURCE_DIR}/src +- COMMAND +- ${VALADOC_EXECUTABLE} --force --no-protected -b ${CMAKE_CURRENT_SOURCE_DIR} -o ${CMAKE_SOURCE_DIR}/valadoc --package-name=geary --package-version=${VERSION} ${ENGINE_SRC} ${valadoc_pkg_opts} --vapidir=${CMAKE_SOURCE_DIR}/bindings/vapi +-) +- + ## Make clean: remove copied files + ################################################## + set_property( diff --git a/pkgs/desktops/gnome-3/3.18/misc/gexiv2/default.nix b/pkgs/desktops/gnome-3/3.18/misc/gexiv2/default.nix new file mode 100644 index 0000000000000..7cea9cd8d1506 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/misc/gexiv2/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchurl, pkgconfig, exiv2, glib, libtool, m4, gnome3 }: + +let + majorVersion = "0.10"; +in +stdenv.mkDerivation rec { + name = "gexiv2-${version}"; + version = "${majorVersion}.3"; + + src = fetchurl { + url = "mirror://gnome/sources/gexiv2/${majorVersion}/${name}.tar.xz"; + sha256 = "390cfb966197fa9f3f32200bc578d7c7f3560358c235e6419657206a362d3988"; + }; + + preConfigure = '' + patchShebangs . + ''; + + buildInputs = [ pkgconfig glib libtool m4 ]; + propagatedBuildInputs = [ exiv2 ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Projects/gexiv2; + description = "GObject wrapper around the Exiv2 photo metadata library"; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/misc/gfbgraph/default.nix b/pkgs/desktops/gnome-3/3.18/misc/gfbgraph/default.nix new file mode 100644 index 0000000000000..e85b087fa41f3 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/misc/gfbgraph/default.nix @@ -0,0 +1,23 @@ +{ stdenv, intltool, fetchurl, pkgconfig, glib +, gnome3, libsoup, json_glib }: + +stdenv.mkDerivation rec { + name = "gfbgraph-0.2.2"; + + src = fetchurl { + url = "mirror://gnome/sources/gfbgraph/0.2/${name}.tar.xz"; + sha256 = "66c7b1c951863565c179d0b4b5207f27b3b36f80afed9f6a9acfc5fc3ae775d4"; + }; + + buildInputs = [ pkgconfig glib gnome3.gnome_online_accounts ]; + propagatedBuildInputs = [ libsoup json_glib gnome3.rest ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "GLib/GObject wrapper for the Facebook Graph API"; + maintainers = gnome3.maintainers; + license = licenses.lgpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/misc/gitg/default.nix b/pkgs/desktops/gnome-3/3.18/misc/gitg/default.nix new file mode 100644 index 0000000000000..c517fca57bf94 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/misc/gitg/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, fetchgit, vala, intltool, libgit2, pkgconfig, gtk3, glib +, json_glib, webkitgtk, makeWrapper, libpeas, bash, gobjectIntrospection +, gnome3, gtkspell3, shared_mime_info, libgee, libgit2-glib, librsvg }: + +# TODO: icons and theme still does not work +# use packaged gnome3.adwaita-icon-theme + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + preCheck = '' + substituteInPlace tests/libgitg/test-commit.c --replace "/bin/bash" "${bash}/bin/bash" + ''; + doCheck = true; + + makeFlags = "INTROSPECTION_GIRDIR=$(out)/share/gir-1.0/ INTROSPECTION_TYPELIBDIR=$(out)/lib/girepository-1.0"; + + propagatedUserEnvPkgs = [ shared_mime_info + gnome3.gnome_themes_standard ]; + + buildInputs = [ vala intltool libgit2 pkgconfig gtk3 glib json_glib webkitgtk libgee libpeas + libgit2-glib gtkspell3 gnome3.gsettings_desktop_schemas gnome3.gtksourceview librsvg + gobjectIntrospection makeWrapper gnome3.adwaita-icon-theme ]; + + preFixup = '' + wrapProgram "$out/bin/gitg" \ + --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gtk3}/share:${gnome3.gnome_themes_standard}/share:$out/share:$GSETTINGS_SCHEMAS_PATH" + ''; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/action/show/Apps/Gitg; + description = "GNOME GUI client to view git repositories"; + maintainers = with maintainers; [ iElectric ]; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/misc/gitg/src.nix b/pkgs/desktops/gnome-3/3.18/misc/gitg/src.nix new file mode 100644 index 0000000000000..ac95070b5f598 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/misc/gitg/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gitg-3.18.0"; + + src = fetchurl { + url = mirror://gnome/sources/gitg/3.18/gitg-3.18.0.tar.xz; + sha256 = "fa4b7b9c492f13f5f1d864af1281ea377ac8c7619c856e05f533b18989edf421"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/misc/gnome-tweak-tool/0001-Search-for-themes-and-icons-in-system-data-dirs.patch b/pkgs/desktops/gnome-3/3.18/misc/gnome-tweak-tool/0001-Search-for-themes-and-icons-in-system-data-dirs.patch new file mode 100644 index 0000000000000..d5a6f90e33dbe --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/misc/gnome-tweak-tool/0001-Search-for-themes-and-icons-in-system-data-dirs.patch @@ -0,0 +1,123 @@ +From 175218579aa2b4f4974ff1cf4fd1ac93082a4714 Mon Sep 17 00:00:00 2001 +From: Jascha Geerds <jg@ekby.de> +Date: Sat, 1 Aug 2015 21:01:11 +0200 +Subject: [PATCH 1/1] Search for themes and icons in system data dirs + +--- + gtweak/tweaks/tweak_group_interface.py | 17 ++++------------- + gtweak/tweaks/tweak_group_keymouse.py | 7 ++----- + gtweak/utils.py | 17 +++++++++++++++++ + 3 files changed, 23 insertions(+), 18 deletions(-) + +diff --git a/gtweak/tweaks/tweak_group_interface.py b/gtweak/tweaks/tweak_group_interface.py +index ed2ad5f..a319907 100644 +--- a/gtweak/tweaks/tweak_group_interface.py ++++ b/gtweak/tweaks/tweak_group_interface.py +@@ -26,7 +26,7 @@ from gi.repository import Gtk + from gi.repository import GLib + + import gtweak +-from gtweak.utils import walk_directories, make_combo_list_with_default, extract_zip_file ++from gtweak.utils import walk_directories, make_combo_list_with_default, extract_zip_file, get_resource_dirs + from gtweak.tweakmodel import Tweak, TWEAK_GROUP_APPEARANCE + from gtweak.gshellwrapper import GnomeShellFactory + from gtweak.gsettings import GSettingsSetting +@@ -46,10 +46,7 @@ class GtkThemeSwitcher(GSettingsComboTweak): + + def _get_valid_themes(self): + """ Only shows themes that have variations for gtk+-3 and gtk+-2 """ +- dirs = ( os.path.join(gtweak.DATA_DIR, "themes"), +- os.path.join(GLib.get_user_data_dir(), "themes"), +- os.path.join(os.path.expanduser("~"), ".themes")) +- valid = walk_directories(dirs, lambda d: ++ valid = walk_directories(get_resource_dirs('themes'), lambda d: + os.path.exists(os.path.join(d, "gtk-2.0")) and \ + os.path.exists(os.path.join(d, "gtk-3.0"))) + return valid +@@ -64,10 +61,7 @@ class IconThemeSwitcher(GSettingsComboTweak): + **options) + + def _get_valid_icon_themes(self): +- dirs = ( os.path.join(gtweak.DATA_DIR, "icons"), +- os.path.join(GLib.get_user_data_dir(), "icons"), +- os.path.join(os.path.expanduser("~"), ".icons")) +- valid = walk_directories(dirs, lambda d: ++ valid = walk_directories(get_resource_dirs("icons"), lambda d: + os.path.isdir(d) and \ + os.path.exists(os.path.join(d, "index.theme"))) + return valid +@@ -82,10 +76,7 @@ class CursorThemeSwitcher(GSettingsComboTweak): + **options) + + def _get_valid_cursor_themes(self): +- dirs = ( os.path.join(gtweak.DATA_DIR, "icons"), +- os.path.join(GLib.get_user_data_dir(), "icons"), +- os.path.join(os.path.expanduser("~"), ".icons")) +- valid = walk_directories(dirs, lambda d: ++ valid = walk_directories(get_resource_dirs("icons"), lambda d: + os.path.isdir(d) and \ + os.path.exists(os.path.join(d, "cursors"))) + return valid +diff --git a/gtweak/tweaks/tweak_group_keymouse.py b/gtweak/tweaks/tweak_group_keymouse.py +index b56a4f4..3486098 100644 +--- a/gtweak/tweaks/tweak_group_keymouse.py ++++ b/gtweak/tweaks/tweak_group_keymouse.py +@@ -20,7 +20,7 @@ import os.path + from gi.repository import GLib + + import gtweak +-from gtweak.utils import XSettingsOverrides, walk_directories, make_combo_list_with_default ++from gtweak.utils import XSettingsOverrides, walk_directories, make_combo_list_with_default, get_resource_dirs + from gtweak.widgets import ListBoxTweakGroup, GSettingsComboTweak, GSettingsSwitchTweak, GetterSetterSwitchTweak, Title + + class PrimaryPasteTweak(GetterSetterSwitchTweak): +@@ -47,10 +47,7 @@ class KeyThemeSwitcher(GSettingsComboTweak): + **options) + + def _get_valid_key_themes(self): +- dirs = ( os.path.join(gtweak.DATA_DIR, "themes"), +- os.path.join(GLib.get_user_data_dir(), "themes"), +- os.path.join(os.path.expanduser("~"), ".themes")) +- valid = walk_directories(dirs, lambda d: ++ valid = walk_directories(get_resource_dirs("themes"), lambda d: + os.path.isfile(os.path.join(d, "gtk-3.0", "gtk-keys.css")) and \ + os.path.isfile(os.path.join(d, "gtk-2.0-key", "gtkrc"))) + return valid +diff --git a/gtweak/utils.py b/gtweak/utils.py +index 3d20425..0fcb51d 100644 +--- a/gtweak/utils.py ++++ b/gtweak/utils.py +@@ -21,6 +21,7 @@ import tempfile + import shutil + import subprocess + import glob ++import itertools + + import gtweak + from gtweak.gsettings import GSettingsSetting +@@ -114,6 +115,22 @@ def execute_subprocess(cmd_then_args, block=True): + stdout, stderr = p.communicate() + return stdout, stderr, p.returncode + ++def get_resource_dirs(resource): ++ """Returns a list of all known resource dirs for a given resource. ++ ++ :param str resource: ++ Name of the resource (e.g. "themes") ++ :return: ++ A list of resource dirs ++ """ ++ dirs = [os.path.join(dir, resource) ++ for dir in itertools.chain(GLib.get_system_data_dirs(), ++ (gtweak.DATA_DIR, ++ GLib.get_user_data_dir()))] ++ dirs += [os.path.join(os.path.expanduser("~"), ".{}".format(resource))] ++ ++ return [dir for dir in dirs if os.path.isdir(dir)] ++ + @singleton + class AutostartManager: + +-- +2.4.5 + diff --git a/pkgs/desktops/gnome-3/3.18/misc/gnome-tweak-tool/0002-Don-t-show-multiple-entries-for-a-single-theme.patch b/pkgs/desktops/gnome-3/3.18/misc/gnome-tweak-tool/0002-Don-t-show-multiple-entries-for-a-single-theme.patch new file mode 100644 index 0000000000000..61ae27349795c --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/misc/gnome-tweak-tool/0002-Don-t-show-multiple-entries-for-a-single-theme.patch @@ -0,0 +1,103 @@ +From edd3203c7b7d5ba596df9f148c443cdfc8a58d88 Mon Sep 17 00:00:00 2001 +From: Jascha Geerds <jg@ekby.de> +Date: Sat, 1 Aug 2015 21:26:57 +0200 +Subject: [PATCH 1/1] Don't show multiple entries for a single theme + +--- + gtweak/tweaks/tweak_group_interface.py | 8 ++++---- + gtweak/tweaks/tweak_group_keymouse.py | 4 ++-- + gtweak/utils.py | 16 ++++++++++++++++ + 3 files changed, 22 insertions(+), 6 deletions(-) + +diff --git a/gtweak/tweaks/tweak_group_interface.py b/gtweak/tweaks/tweak_group_interface.py +index a319907..82c0286 100644 +--- a/gtweak/tweaks/tweak_group_interface.py ++++ b/gtweak/tweaks/tweak_group_interface.py +@@ -26,7 +26,7 @@ from gi.repository import Gtk + from gi.repository import GLib + + import gtweak +-from gtweak.utils import walk_directories, make_combo_list_with_default, extract_zip_file, get_resource_dirs ++from gtweak.utils import walk_directories, make_combo_list_with_default, extract_zip_file, get_resource_dirs, get_unique_resources + from gtweak.tweakmodel import Tweak, TWEAK_GROUP_APPEARANCE + from gtweak.gshellwrapper import GnomeShellFactory + from gtweak.gsettings import GSettingsSetting +@@ -49,7 +49,7 @@ class GtkThemeSwitcher(GSettingsComboTweak): + valid = walk_directories(get_resource_dirs('themes'), lambda d: + os.path.exists(os.path.join(d, "gtk-2.0")) and \ + os.path.exists(os.path.join(d, "gtk-3.0"))) +- return valid ++ return get_unique_resources(valid) + + class IconThemeSwitcher(GSettingsComboTweak): + def __init__(self, **options): +@@ -64,7 +64,7 @@ class IconThemeSwitcher(GSettingsComboTweak): + valid = walk_directories(get_resource_dirs("icons"), lambda d: + os.path.isdir(d) and \ + os.path.exists(os.path.join(d, "index.theme"))) +- return valid ++ return get_unique_resources(valid) + + class CursorThemeSwitcher(GSettingsComboTweak): + def __init__(self, **options): +@@ -79,7 +79,7 @@ class CursorThemeSwitcher(GSettingsComboTweak): + valid = walk_directories(get_resource_dirs("icons"), lambda d: + os.path.isdir(d) and \ + os.path.exists(os.path.join(d, "cursors"))) +- return valid ++ return get_unique_resources(valid) + + class ShellThemeTweak(Gtk.Box, Tweak): + +diff --git a/gtweak/tweaks/tweak_group_keymouse.py b/gtweak/tweaks/tweak_group_keymouse.py +index 3486098..9f53425 100644 +--- a/gtweak/tweaks/tweak_group_keymouse.py ++++ b/gtweak/tweaks/tweak_group_keymouse.py +@@ -20,7 +20,7 @@ import os.path + from gi.repository import GLib + + import gtweak +-from gtweak.utils import XSettingsOverrides, walk_directories, make_combo_list_with_default, get_resource_dirs ++from gtweak.utils import XSettingsOverrides, walk_directories, make_combo_list_with_default, get_resource_dirs, get_unique_resources + from gtweak.widgets import ListBoxTweakGroup, GSettingsComboTweak, GSettingsSwitchTweak, GetterSetterSwitchTweak, Title + + class PrimaryPasteTweak(GetterSetterSwitchTweak): +@@ -50,7 +50,7 @@ class KeyThemeSwitcher(GSettingsComboTweak): + valid = walk_directories(get_resource_dirs("themes"), lambda d: + os.path.isfile(os.path.join(d, "gtk-3.0", "gtk-keys.css")) and \ + os.path.isfile(os.path.join(d, "gtk-2.0-key", "gtkrc"))) +- return valid ++ return get_unique_resources(valid) + + TWEAK_GROUPS = [ + ListBoxTweakGroup(_("Keyboard and Mouse"), +diff --git a/gtweak/utils.py b/gtweak/utils.py +index 0fcb51d..ce8e12e 100644 +--- a/gtweak/utils.py ++++ b/gtweak/utils.py +@@ -131,6 +131,22 @@ def get_resource_dirs(resource): + + return [dir for dir in dirs if os.path.isdir(dir)] + ++def get_unique_resources(dirs): ++ """Filter out duplicated resources. ++ ++ :param list dirs: ++ List of resource dirs (e.g. /usr/share/themes/Adwaita) ++ :return: ++ List of dirs without duplicated resources ++ """ ++ unique_dirs = {} ++ for dir in dirs: ++ basename = os.path.basename(dir) ++ if basename not in unique_dirs: ++ unique_dirs[basename] = dir ++ ++ return unique_dirs ++ + @singleton + class AutostartManager: + +-- +2.4.5 + diff --git a/pkgs/desktops/gnome-3/3.18/misc/gnome-tweak-tool/0003-Create-config-dir-if-it-doesn-t-exist.patch b/pkgs/desktops/gnome-3/3.18/misc/gnome-tweak-tool/0003-Create-config-dir-if-it-doesn-t-exist.patch new file mode 100644 index 0000000000000..840ebb82ec756 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/misc/gnome-tweak-tool/0003-Create-config-dir-if-it-doesn-t-exist.patch @@ -0,0 +1,29 @@ +From dea8fc3c37c43f4fbbcc658ee995a95b93452b3c Mon Sep 17 00:00:00 2001 +From: Jascha Geerds <jg@ekby.de> +Date: Sun, 2 Aug 2015 12:01:20 +0200 +Subject: [PATCH 1/1] Create config dir if it doesn't exist + +Otherwise gnome-tweak-tool can't enable the dark theme and fails +without a clear error message. +--- + gtweak/gtksettings.py | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/gtweak/gtksettings.py b/gtweak/gtksettings.py +index bcec9f1..f39991b 100644 +--- a/gtweak/gtksettings.py ++++ b/gtweak/gtksettings.py +@@ -35,6 +35,10 @@ class GtkSettingsManager: + def _get_keyfile(self): + keyfile = None + try: ++ config_dir = os.path.dirname(self._path) ++ if not os.path.isdir(config_dir): ++ os.makedirs(config_dir) ++ + keyfile = GLib.KeyFile() + keyfile.load_from_file(self._path, 0) + except MemoryError: +-- +2.4.5 + diff --git a/pkgs/desktops/gnome-3/3.18/misc/gnome-tweak-tool/default.nix b/pkgs/desktops/gnome-3/3.18/misc/gnome-tweak-tool/default.nix new file mode 100644 index 0000000000000..986d4058af92e --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/misc/gnome-tweak-tool/default.nix @@ -0,0 +1,44 @@ +{ stdenv, intltool, fetchurl, python, pygobject3, atk +, pkgconfig, gtk3, glib, libsoup +, bash, makeWrapper, itstool, libxml2, python3Packages +, gnome3, librsvg, gdk_pixbuf, file, libnotify }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + doCheck = true; + + propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ]; + + makeFlags = [ "DESTDIR=/" ]; + + buildInputs = [ pkgconfig gtk3 glib intltool itstool libxml2 + gnome3.gsettings_desktop_schemas makeWrapper file + gdk_pixbuf gnome3.defaultIconTheme librsvg + python pygobject3 libnotify gnome3.gnome_shell + libsoup gnome3.gnome_settings_daemon gnome3.nautilus + gnome3.gnome_desktop ]; + + preFixup = '' + wrapProgram "$out/bin/gnome-tweak-tool" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ + --suffix XDG_DATA_DIRS : "${gtk3}/share:${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" \ + --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \ + --prefix PYTHONPATH : "$PYTHONPATH:$(toPythonPath $out)" + ''; + + patches = [ + ./find_gsettings.patch + ./0001-Search-for-themes-and-icons-in-system-data-dirs.patch + ./0002-Don-t-show-multiple-entries-for-a-single-theme.patch + ./0003-Create-config-dir-if-it-doesn-t-exist.patch + ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/action/show/Apps/GnomeTweakTool; + description = "A tool to customize advanced GNOME 3 options"; + maintainers = gnome3.maintainers; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/misc/gnome-tweak-tool/find_gsettings.patch b/pkgs/desktops/gnome-3/3.18/misc/gnome-tweak-tool/find_gsettings.patch new file mode 100644 index 0000000000000..3e68c04cb3ab8 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/misc/gnome-tweak-tool/find_gsettings.patch @@ -0,0 +1,22 @@ +diff --git a/gtweak/gsettings.py b/gtweak/gsettings.py +index a00fe19..dce74b2 100644 +--- a/gtweak/gsettings.py ++++ b/gtweak/gsettings.py +@@ -33,10 +33,15 @@ class GSettingsMissingError(Exception): + + class _GSettingsSchema: + def __init__(self, schema_name, schema_dir=None, schema_filename=None, **options): +- if not schema_dir: +- schema_dir = gtweak.GSETTINGS_SCHEMA_DIR + if not schema_filename: + schema_filename = schema_name + ".gschema.xml" ++ if not schema_dir: ++ schema_dir = gtweak.GSETTINGS_SCHEMA_DIR ++ for xdg_dir in GLib.get_system_data_dirs(): ++ dir = os.path.join(xdg_dir, "glib-2.0", "schemas") ++ if os.path.exists(os.path.join(dir, schema_filename)): ++ schema_dir = dir ++ break + + schema_path = os.path.join(schema_dir, schema_filename) + if not os.path.exists(schema_path): diff --git a/pkgs/desktops/gnome-3/3.18/misc/gnome-tweak-tool/src.nix b/pkgs/desktops/gnome-3/3.18/misc/gnome-tweak-tool/src.nix new file mode 100644 index 0000000000000..abb957394e7b2 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/misc/gnome-tweak-tool/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-tweak-tool-3.16.2"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-tweak-tool/3.16/gnome-tweak-tool-3.16.2.tar.xz; + sha256 = "b1e403725c3489be07e1d754f044d1128eddb38204a344bbe0baa523d531bd64"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/misc/gnome-video-effects/default.nix b/pkgs/desktops/gnome-3/3.18/misc/gnome-video-effects/default.nix new file mode 100644 index 0000000000000..c0bd2fed3f2d3 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/misc/gnome-video-effects/default.nix @@ -0,0 +1,20 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gnome3 }: + +stdenv.mkDerivation rec { + name = "gnome-video-effects-${version}"; + version = "0.4.1"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-video-effects/0.4/${name}.tar.xz"; + sha256 = "0jl4iny2dqpcgi3sgxzpgnbw0752i8ay3rscp2cgdjlp79ql5gil"; + }; + + buildInputs = [ pkgconfig intltool ]; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Projects/GnomeVideoEffects; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/misc/gpaste/default.nix b/pkgs/desktops/gnome-3/3.18/misc/gpaste/default.nix new file mode 100644 index 0000000000000..dee9caf444c57 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/misc/gpaste/default.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchurl, intltool, autoreconfHook, pkgconfig, vala, glib +, pango, gtk3, gnome3, dbus, clutter, appstream-glib, makeWrapper }: + +stdenv.mkDerivation rec { + version = "${gnome3.version}.3"; + name = "gpaste-${version}"; + + src = fetchurl { + url = "https://github.com/Keruspe/GPaste/archive/v${version}.tar.gz"; + sha256 = "1czc707y2ksb8lgq1la0qkj3wpi202hjfiyshsndhw0pqn3qjj4a"; + }; + + buildInputs = [ intltool autoreconfHook pkgconfig vala glib + gtk3 gnome3.gnome_control_center dbus.libs + clutter pango appstream-glib makeWrapper ]; + + preConfigure = "intltoolize -f"; + + configureFlags = [ "--with-controlcenterdir=$(out)/gnome-control-center/keybindings" + "--with-dbusservicesdir=$(out)/share/dbus-1/services" ]; + + enableParallelBuilding = true; + + preFixup = + let + libPath = stdenv.lib.makeLibraryPath + [ glib gtk3 clutter pango ]; + in + '' + for i in $out/libexec/gpaste/*; do + wrapProgram $i \ + --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" \ + --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" + done + ''; + + meta = with stdenv.lib; { + homepage = https://github.com/Keruspe/GPaste; + description = "Clipboard management system with GNOME3 integration"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/misc/gtkhtml/default.nix b/pkgs/desktops/gnome-3/3.18/misc/gtkhtml/default.nix new file mode 100644 index 0000000000000..89703b61932be --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/misc/gtkhtml/default.nix @@ -0,0 +1,16 @@ +{ stdenv, fetchurl, pkgconfig, gtk3, intltool +, gnome3, enchant, isocodes }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + buildInputs = [ pkgconfig gtk3 intltool gnome3.adwaita-icon-theme + gnome3.gsettings_desktop_schemas ]; + + propagatedBuildInputs = [ enchant isocodes ]; + + meta = with stdenv.lib; { + platforms = platforms.linux; + maintainers = gnome3.maintainers; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/misc/gtkhtml/src.nix b/pkgs/desktops/gnome-3/3.18/misc/gtkhtml/src.nix new file mode 100644 index 0000000000000..21876ec9c399f --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/misc/gtkhtml/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gtkhtml-4.10.0"; + + src = fetchurl { + url = mirror://gnome/sources/gtkhtml/4.10/gtkhtml-4.10.0.tar.xz; + sha256 = "ca3b6424fb2c7ac5d9cb8fdafb69318fa2e825c9cf6ed17d1e38d9b29e5606c3"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/misc/libgda/default.nix b/pkgs/desktops/gnome-3/3.18/misc/libgda/default.nix new file mode 100644 index 0000000000000..1fcb411d120d8 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/misc/libgda/default.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, pkgconfig, intltool, itstool, libxml2, gtk3, openssl }: + +let + major = "5.2"; + minor = "2"; + +in stdenv.mkDerivation rec { + version = "${major}.${minor}"; + name = "libgda-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/libgda/${major}/${name}.tar.xz"; + sha256 = "c9b8b1c32f1011e47b73c5dcf36649aaef2f1edaa5f5d75be20d9caadc2bc3e4"; + }; + + configureFlags = [ + "--enable-gi-system-install=no" + ]; + + enableParallelBuilding = true; + + buildInputs = [ pkgconfig intltool itstool libxml2 gtk3 openssl ]; + + meta = with stdenv.lib; { + description = "Database access library"; + homepage = http://www.gnome-db.org/; + license = [ licenses.lgpl2 licenses.gpl2 ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/misc/libgit2-glib/default.nix b/pkgs/desktops/gnome-3/3.18/misc/libgit2-glib/default.nix new file mode 100644 index 0000000000000..dbdd2cc7fd13b --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/misc/libgit2-glib/default.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchurl, gnome3, libtool, pkgconfig, vala +, gtk_doc, gobjectIntrospection, libgit2, glib }: + +let + majorVersion = "0.0"; +in +stdenv.mkDerivation rec { + name = "libgit2-glib-${majorVersion}.24"; + + src = fetchurl { + url = "mirror://gnome/sources/libgit2-glib/0.0/${name}.tar.xz"; + sha256 = "8a0a6f65d86f2c8cb9bcb20c5e0ea6fd02271399292a71fc7e6852f13adbbdb8"; + }; + + buildInputs = [ gnome3.gnome_common libtool pkgconfig vala + gtk_doc gobjectIntrospection libgit2 glib ]; + + meta = with stdenv.lib; { + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/misc/libmediaart/default.nix b/pkgs/desktops/gnome-3/3.18/misc/libmediaart/default.nix new file mode 100644 index 0000000000000..b864801257308 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/misc/libmediaart/default.nix @@ -0,0 +1,22 @@ +{ stdenv, fetchurl, pkgconfig, glib, gdk_pixbuf, gobjectIntrospection, gnome3 }: + +let + majorVersion = "1.9"; +in +stdenv.mkDerivation rec { + name = "libmediaart-${majorVersion}.0"; + + src = fetchurl { + url = "mirror://gnome/sources/libmediaart/${majorVersion}/${name}.tar.xz"; + sha256 = "0vshvm3sfwqs365glamvkmgnzjnmxd15j47xn0ak3p6l57dqlrll"; + }; + + buildInputs = [ pkgconfig glib gdk_pixbuf gobjectIntrospection ]; + + meta = with stdenv.lib; { + description = "Library tasked with managing, extracting and handling media art caches"; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + platforms = platforms.linux; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/misc/pomodoro/default.nix b/pkgs/desktops/gnome-3/3.18/misc/pomodoro/default.nix new file mode 100644 index 0000000000000..0440af440fece --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/misc/pomodoro/default.nix @@ -0,0 +1,50 @@ +{ stdenv, fetchFromGitHub, which, automake113x, intltool, pkgconfig, libtool, makeWrapper, + dbus_glib, libcanberra, gst_all_1, vala, gnome3, gtk3, gst_plugins_base, + glib, gobjectIntrospection, telepathy_glib +}: + +stdenv.mkDerivation rec { + rev = "624945d"; + name = "gnome-shell-pomodoro-${gnome3.version}-${rev}"; + + src = fetchFromGitHub { + owner = "codito"; + repo = "gnome-pomodoro"; + rev = "${rev}"; + sha256 = "0vjy95zvd309n8g13fa80qhqlv7k6wswhrjw7gddxrnmr662xdqq"; + }; + + configureScript = ''./autogen.sh''; + + buildInputs = [ + which automake113x intltool glib gobjectIntrospection pkgconfig libtool + makeWrapper dbus_glib libcanberra vala gst_all_1.gstreamer + gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good + gnome3.gsettings_desktop_schemas gnome3.gnome_desktop + gnome3.gnome_common gnome3.gnome_shell gtk3 telepathy_glib + gnome3.defaultIconTheme + ]; + + preBuild = '' + sed -i 's|\$(INTROSPECTION_GIRDIR)|${gnome3.gnome_desktop}/share/gir-1.0|' \ + vapi/Makefile + ''; + + preFixup = '' + wrapProgram $out/bin/gnome-pomodoro \ + --prefix XDG_DATA_DIRS : \ + "$out/share:$GSETTINGS_SCHEMAS_PATH:$XDG_DATA_DIRS" + ''; + + meta = with stdenv.lib; { + homepage = https://github.com/codito/gnome-shell-pomodoro; + description = "A time management utility for GNOME based on the pomodoro technique"; + longDescription = '' + This GNOME utility helps to manage time according to Pomodoro Technique. + It intends to improve productivity and focus by taking short breaks. + ''; + maintainers = with maintainers; [ DamienCassou jgeerds ]; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} diff --git a/pkgs/development/compilers/polyml/default.nix b/pkgs/development/compilers/polyml/default.nix index 76bb811dd66d8..276065ad35033 100644 --- a/pkgs/development/compilers/polyml/default.nix +++ b/pkgs/development/compilers/polyml/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl}: +{stdenv, fetchurl, autoreconfHook}: let version = "5.5.2"; @@ -7,6 +7,12 @@ in stdenv.mkDerivation { name = "polyml-${version}"; + prePatch = stdenv.lib.optionalString stdenv.isDarwin '' + substituteInPlace configure.ac --replace stdc++ c++ + ''; + + buildInputs = stdenv.lib.optional stdenv.isDarwin autoreconfHook; + src = fetchurl { url = "mirror://sourceforge/polyml/polyml.${version}.tar.gz"; sha256 = "10m680qdad6bd50bav9xjsgmsxw8yxg55vr7grbg0gvykzl2pzbk"; diff --git a/pkgs/development/compilers/sbcl/bootstrap.nix b/pkgs/development/compilers/sbcl/bootstrap.nix index 0b5b48e088ee2..ddbef4e8b997d 100644 --- a/pkgs/development/compilers/sbcl/bootstrap.nix +++ b/pkgs/development/compilers/sbcl/bootstrap.nix @@ -38,6 +38,10 @@ stdenv.mkDerivation rec { buildInputs = [ makeWrapper ]; installPhase = '' + mkdir -p $out/bin + cp -p src/runtime/sbcl $out/bin + install_name_tool -change /usr/lib/libgcc_s.1.dylib ${stdenv.libc}/lib/libgcc_s.10.5.dylib $out/bin/sbcl + mkdir -p $out/share/sbcl cp -p src/runtime/sbcl $out/share/sbcl cp -p output/sbcl.core $out/share/sbcl diff --git a/pkgs/development/interpreters/ruby/bundler-head.nix b/pkgs/development/interpreters/ruby/bundler-head.nix index a81f2f771bcbf..e31f63dccf069 100644 --- a/pkgs/development/interpreters/ruby/bundler-head.nix +++ b/pkgs/development/interpreters/ruby/bundler-head.nix @@ -5,7 +5,7 @@ buildRubyGem { src = fetchgit { url = "https://github.com/bundler/bundler.git"; rev = "a2343c9eabf5403d8ffcbca4dea33d18a60fc157"; - sha256 = "1p7kzhmicfljy9n7nq3qh6lvrsckiq76ddypf6s55gfh1l98z4k9"; + sha256 = "06qsai4ac3i2xlr7nbc4anh4cy6jd9jjf3rpj254g9gwshqv0qgr"; leaveDotGit = true; }; dontPatchShebangs = true; diff --git a/pkgs/development/interpreters/ruby/default.nix b/pkgs/development/interpreters/ruby/default.nix new file mode 100644 index 0000000000000..89e0016f98dec --- /dev/null +++ b/pkgs/development/interpreters/ruby/default.nix @@ -0,0 +1,248 @@ +{ stdenv, lib, fetchurl, fetchFromSavannah, fetchFromGitHub +, zlib, openssl, gdbm, ncurses, readline, groff, libyaml, libffi, autoreconfHook, bison +, autoconf, darwin ? null +} @ args: + +let + op = stdenv.lib.optional; + ops = stdenv.lib.optionals; + opString = stdenv.lib.optionalString; + patchSet = import ./rvm-patchsets.nix { inherit fetchFromGitHub; }; + config = import ./config.nix { inherit fetchFromSavannah; }; + + generic = { majorVersion, minorVersion, teenyVersion, patchLevel, sha256 }: let + versionNoPatch = "${majorVersion}.${minorVersion}.${teenyVersion}"; + version = "${versionNoPatch}-p${patchLevel}"; + fullVersionName = if patchLevel != "0" && stdenv.lib.versionOlder versionNoPatch "2.1" + then version + else versionNoPatch; + tag = "v" + stdenv.lib.replaceChars ["." "p" "-"] ["_" "_" ""] fullVersionName; + isRuby21 = majorVersion == "2" && minorVersion == "1"; + isRuby18 = majorVersion == "1" && minorVersion == "8"; + baseruby = self.override { useRailsExpress = false; }; + self = lib.makeOverridable ( + { stdenv, lib, fetchurl, fetchFromSavannah, fetchFromGitHub + , useRailsExpress ? true + , zlib, zlibSupport ? true + , openssl, opensslSupport ? true + , gdbm, gdbmSupport ? true + , ncurses, readline, cursesSupport ? true + , groff, docSupport ? false + , libyaml, yamlSupport ? true + , libffi, fiddleSupport ? true + , autoreconfHook, bison, autoconf + , darwin ? null + }: + stdenv.mkDerivation rec { + inherit version; + + name = "ruby-${version}"; + + src = if useRailsExpress then fetchFromGitHub { + owner = "ruby"; + repo = "ruby"; + rev = tag; + sha256 = sha256.git; + } else fetchurl { + url = "http://cache.ruby-lang.org/pub/ruby/${majorVersion}.${minorVersion}/ruby-${fullVersionName}.tar.gz"; + sha256 = sha256.src; + }; + + # Have `configure' avoid `/usr/bin/nroff' in non-chroot builds. + NROFF = "${groff}/bin/nroff"; + + buildInputs = ops useRailsExpress [ autoreconfHook bison ] + ++ (op fiddleSupport libffi) + ++ (ops cursesSupport [ ncurses readline ]) + ++ (op docSupport groff) + ++ (op zlibSupport zlib) + ++ (op opensslSupport openssl) + ++ (op gdbmSupport gdbm) + ++ (op yamlSupport libyaml) + # Looks like ruby fails to build on darwin without readline even if curses + # support is not enabled, so add readline to the build inputs if curses + # support is disabled (if it's enabled, we already have it) and we're + # running on darwin + ++ (op (!cursesSupport && stdenv.isDarwin) readline) + ++ (ops stdenv.isDarwin (with darwin; [ libiconv libobjc libunwind ])) + ++ op isRuby18 autoconf; + + enableParallelBuilding = true; + + patches = (import ./patchsets.nix { + inherit patchSet useRailsExpress ops patchLevel; + })."${versionNoPatch}"; + + postUnpack = opString isRuby21 '' + rm "$sourceRoot/enc/unicode/name2ctype.h" + ''; + + postPatch = opString (!isRuby18) (if isRuby21 then '' + rm tool/config_files.rb + cp ${config}/config.guess tool/ + cp ${config}/config.sub tool/ + '' else opString useRailsExpress '' + sed -i configure.in -e '/config.guess/d' + cp ${config}/config.guess tool/ + cp ${config}/config.sub tool/ + ''); + + configureFlags = ["--enable-shared" "--enable-pthread"] + ++ op useRailsExpress "--with-baseruby=${baseruby}/bin/ruby" + ++ ops stdenv.isDarwin [ + # on darwin, we have /usr/include/tk.h -- so the configure script detects + # that tk is installed + "--with-out-ext=tk" + # on yosemite, "generating encdb.h" will hang for a very long time without this flag + "--with-setjmp-type=setjmp" + ]; + + installFlags = stdenv.lib.optionalString docSupport "install-doc"; + # Bundler tries to create this directory + postInstall = '' + # Bundler tries to create this directory + mkdir -pv $out/${passthru.gemPath} + mkdir -p $out/nix-support + cat > $out/nix-support/setup-hook <<EOF + addGemPath() { + addToSearchPath GEM_PATH \$1/${passthru.gemPath} + } + + envHooks+=(addGemPath) + EOF + '' + opString useRailsExpress '' + rbConfig=$(find $out/lib/ruby -name rbconfig.rb) + + # Prevent the baseruby from being included in the closure. + sed -i '/^ CONFIG\["BASERUBY"\]/d' $rbConfig + sed -i "s|'--with-baseruby=${baseruby}/bin/ruby'||" $rbConfig + ''; + + meta = { + license = stdenv.lib.licenses.ruby; + homepage = "http://www.ruby-lang.org/en/"; + description = "The Ruby language"; + platforms = stdenv.lib.platforms.all; + }; + + passthru = rec { + inherit majorVersion minorVersion teenyVersion patchLevel; + rubyEngine = "ruby"; + baseRuby = baseruby; + libPath = "lib/${versionNoPatch}"; + gemPath = "lib/${rubyEngine}/gems/${versionNoPatch}"; + }; + } + ) args; in self; + +in { + ruby_1_8_7 = generic { + majorVersion = "1"; + minorVersion = "8"; + teenyVersion = "7"; + patchLevel = "374"; + sha256 = { + src = "0v17cmm95f3xwa4kvza8xwbnfvfqcrym8cvqfvscn45bxsmfwvl7"; + git = "1xddhxr0j26hpxfixvhqdscwk2ri846w2129fcfwfjzvy19igswx"; + }; + }; + + ruby_1_9_3 = generic { + majorVersion = "1"; + minorVersion = "9"; + teenyVersion = "3"; + patchLevel = "551"; + sha256 = { + src = "1s2ibg3s2iflzdv7rfxi1qqkvdbn2dq8gxdn0nxrb77ls5ffanxv"; + git = "1r9xzzxmci2ajb34qb4y1w424mz878zdgzxkfp9w60agldxnb36s"; + }; + }; + + ruby_2_0_0 = generic { + majorVersion = "2"; + minorVersion = "0"; + teenyVersion = "0"; + patchLevel = "645"; + sha256 = { + src = "1azl3kbqqw3jvwfcsy6fdb7vmwz5w73fwpq1y1gblz79zzzqx7sy"; + git = "14bnas1iif2shyaz4ylb0832x96y2mda52x0v0aglkvqmcz1cfxb"; + }; + }; + + ruby_2_1_0 = generic { + majorVersion = "2"; + minorVersion = "1"; + teenyVersion = "0"; + patchLevel = "0"; + sha256 = { + src = "17fhfbw8sr13rxfn58wvrhk2f5i88lkna2afn3gdjvprd8gyqf1m"; + git = "12sn532yvznqfz85378ys0b9ggmj7w8ddhzc1pnnlx7mbyy7r2hx"; + }; + }; + + ruby_2_1_1 = generic { + majorVersion = "2"; + minorVersion = "1"; + teenyVersion = "1"; + patchLevel = "0"; + sha256 = { + src = "0hc9x3mazyvnk94gs19q8mbnanlzk8mv0hii77slkvc8mqqxyhy8"; + git = "1v2ffvyd0xx1h1qd70431zczhvsdiyyw5kjxih4rszd5avzh5grl"; + }; + }; + + ruby_2_1_2 = generic { + majorVersion = "2"; + minorVersion = "1"; + teenyVersion = "2"; + patchLevel = "353"; + sha256 = { + src = "0db6krc2bd7yha8p96lcqrahjpsz7g7abhni134g708sh53n8apj"; + git = "14f8w3zwngnxsgigffh6h9z3ng53xq8mk126xmwrsmz9n3ypm6l0"; + }; + }; + + ruby_2_1_3 = generic { + majorVersion = "2"; + minorVersion = "1"; + teenyVersion = "3"; + patchLevel = "0"; + sha256 = { + src = "00bz6jcbxgnllplk4b9lnyc3w8yd3pz5rn11rmca1s8cn6vvw608"; + git = "1pnam9jry2l2mbji3gvrbb7jyisxl99xjz6l1qrccwnfinxxbmhv"; + }; + }; + + ruby_2_1_6 = generic { + majorVersion = "2"; + minorVersion = "1"; + teenyVersion = "6"; + patchLevel = "0"; + sha256 = { + src = "1r4bs8lfwsypbcf8j2lpv3by40729vp5mh697njizj97fjp644qy"; + git = "18kbjsbmgv6l3p1qxgmjnhh4jl7xdk3c20ycjpp62vrhq7pyzjsm"; + }; + }; + + ruby_2_2_0 = generic { + majorVersion = "2"; + minorVersion = "2"; + teenyVersion = "0"; + patchLevel = "0"; + sha256 = { + src = "1z2092fbpc2qkv1j3yj7jdz7qwvqpxqpmcnkphpjcpgvmfaf6wbn"; + git = "1w7rr2nq1bbw6aiagddzlrr3rl95kk33x4pv6570nm072g55ybpi"; + }; + }; + + ruby_2_2_2 = generic { + majorVersion = "2"; + minorVersion = "2"; + teenyVersion = "2"; + patchLevel = "0"; + sha256 = { + src = "0i4v7l8pnam0by2cza12zldlhrffqchwb2m9shlnp7j2gqqhzz2z"; + git = "08mw1ql2ghy483cp8xzzm78q17simn4l6phgm2gah7kjh9y3vbrn"; + }; + }; +} diff --git a/pkgs/development/interpreters/ruby/patchsets.nix b/pkgs/development/interpreters/ruby/patchsets.nix new file mode 100644 index 0000000000000..44f4c25a6858b --- /dev/null +++ b/pkgs/development/interpreters/ruby/patchsets.nix @@ -0,0 +1,126 @@ +{ patchSet, useRailsExpress, ops, patchLevel }: + +let self = rec { + "1.8.7" = [ + "${patchSet}/patches/ruby/1.8.7/p${patchLevel}/railsexpress/01-ignore-generated-files.patch" + "${patchSet}/patches/ruby/1.8.7/p${patchLevel}/railsexpress/02-fix-tests-for-osx.patch" + "${patchSet}/patches/ruby/1.8.7/p${patchLevel}/railsexpress/03-sigvtalrm-fix.patch" + "${patchSet}/patches/ruby/1.8.7/p${patchLevel}/railsexpress/04-railsbench-gc-patch.patch" + "${patchSet}/patches/ruby/1.8.7/p${patchLevel}/railsexpress/05-display-full-stack-trace.patch" + "${patchSet}/patches/ruby/1.8.7/p${patchLevel}/railsexpress/06-better-source-file-tracing.patch" + "${patchSet}/patches/ruby/1.8.7/p${patchLevel}/railsexpress/07-heap-dump-support.patch" + "${patchSet}/patches/ruby/1.8.7/p${patchLevel}/railsexpress/08-fork-support-for-gc-logging.patch" + "${patchSet}/patches/ruby/1.8.7/p${patchLevel}/railsexpress/09-track-malloc-size.patch" + "${patchSet}/patches/ruby/1.8.7/p${patchLevel}/railsexpress/10-track-object-allocation.patch" + "${patchSet}/patches/ruby/1.8.7/p${patchLevel}/railsexpress/11-expose-heap-slots.patch" + "${patchSet}/patches/ruby/1.8.7/p${patchLevel}/railsexpress/12-fix-heap-size-growth-logic.patch" + "${patchSet}/patches/ruby/1.8.7/p${patchLevel}/railsexpress/13-heap-slot-size.patch" + "${patchSet}/patches/ruby/1.8.7/p${patchLevel}/railsexpress/14-add-trace-stats-enabled-methods.patch" + "${patchSet}/patches/ruby/1.8.7/p${patchLevel}/railsexpress/15-track-live-dataset-size.patch" + "${patchSet}/patches/ruby/1.8.7/p${patchLevel}/railsexpress/16-add-object-size-information-to-heap-dump.patch" + "${patchSet}/patches/ruby/1.8.7/p${patchLevel}/railsexpress/17-caller-for-all-threads.patch" + ]; + "1.9.3" = [ + ./ruby19-parallel-install.patch + ./bitperfect-rdoc.patch + ] ++ ops useRailsExpress [ + "${patchSet}/patches/ruby/1.9.3/p${patchLevel}/railsexpress/01-fix-make-clean.patch" + "${patchSet}/patches/ruby/1.9.3/p${patchLevel}/railsexpress/02-zero-broken-tests.patch" + "${patchSet}/patches/ruby/1.9.3/p${patchLevel}/railsexpress/03-railsbench-gc.patch" + "${patchSet}/patches/ruby/1.9.3/p${patchLevel}/railsexpress/04-display-more-detailed-stack-trace.patch" + "${patchSet}/patches/ruby/1.9.3/p${patchLevel}/railsexpress/05-fork-support-for-gc-logging.patch" + "${patchSet}/patches/ruby/1.9.3/p${patchLevel}/railsexpress/06-track-live-dataset-size.patch" + "${patchSet}/patches/ruby/1.9.3/p${patchLevel}/railsexpress/07-webrick_204_304_keep_alive_fix.patch" + "${patchSet}/patches/ruby/1.9.3/p${patchLevel}/railsexpress/08-export-a-few-more-symbols-for-ruby-prof.patch" + "${patchSet}/patches/ruby/1.9.3/p${patchLevel}/railsexpress/09-thread-variables.patch" + "${patchSet}/patches/ruby/1.9.3/p${patchLevel}/railsexpress/10-faster-loading.patch" + "${patchSet}/patches/ruby/1.9.3/p${patchLevel}/railsexpress/11-falcon-st-opt.patch" + "${patchSet}/patches/ruby/1.9.3/p${patchLevel}/railsexpress/12-falcon-sparse-array.patch" + "${patchSet}/patches/ruby/1.9.3/p${patchLevel}/railsexpress/13-falcon-array-queue.patch" + "${patchSet}/patches/ruby/1.9.3/p${patchLevel}/railsexpress/14-railsbench-gc-fixes.patch" + "${patchSet}/patches/ruby/1.9.3/p${patchLevel}/railsexpress/15-show-full-backtrace-on-stack-overflow.patch" + "${patchSet}/patches/ruby/1.9.3/p${patchLevel}/railsexpress/16-configurable-fiber-stack-sizes.patch" + "${patchSet}/patches/ruby/1.9.3/p${patchLevel}/railsexpress/17-backport-psych-20.patch" + "${patchSet}/patches/ruby/1.9.3/p${patchLevel}/railsexpress/18-fix-missing-c-return-event.patch" + "${patchSet}/patches/ruby/1.9.3/p${patchLevel}/railsexpress/19-fix-process-daemon-call.patch" + ]; + "2.0.0" = ops useRailsExpress [ + "${patchSet}/patches/ruby/2.0.0/p${patchLevel}/railsexpress/01-zero-broken-tests.patch" + "${patchSet}/patches/ruby/2.0.0/p${patchLevel}/railsexpress/02-railsexpress-gc.patch" + "${patchSet}/patches/ruby/2.0.0/p${patchLevel}/railsexpress/03-display-more-detailed-stack-trace.patch" + "${patchSet}/patches/ruby/2.0.0/p${patchLevel}/railsexpress/04-show-full-backtrace-on-stack-overflow.patch" + ]; + "2.1.0" = ops useRailsExpress [ + "${patchSet}/patches/ruby/2.1.0/railsexpress/01-current-2.1.1-fixes.patch" + "${patchSet}/patches/ruby/2.1.0/railsexpress/02-zero-broken-tests.patch" + "${patchSet}/patches/ruby/2.1.0/railsexpress/03-improve-gc-stats.patch" + "${patchSet}/patches/ruby/2.1.0/railsexpress/04-display-more-detailed-stack-trace.patch" + "${patchSet}/patches/ruby/2.1.0/railsexpress/05-show-full-backtrace-on-stack-overflow.patch" + "${patchSet}/patches/ruby/2.1.0/railsexpress/06-fix-missing-c-return-event.patch" + "${patchSet}/patches/ruby/2.1.0/railsexpress/07-backport-006e66b6680f60adfb434ee7397f0dbc77de7873.patch" + "${patchSet}/patches/ruby/2.1.0/railsexpress/08-funny-falcon-stc-density.patch" + "${patchSet}/patches/ruby/2.1.0/railsexpress/09-funny-falcon-stc-pool-allocation.patch" + "${patchSet}/patches/ruby/2.1.0/railsexpress/10-aman-opt-aset-aref-str.patch" + "${patchSet}/patches/ruby/2.1.0/railsexpress/11-funny-falcon-method-cache.patch" + "${patchSet}/patches/ruby/2.1.0/railsexpress/12-backport-r44370.patch" + ]; + "2.1.1" = ops useRailsExpress [ + "${patchSet}/patches/ruby/2.1.0/railsexpress/01-zero-broken-tests.patch" + "${patchSet}/patches/ruby/2.1.0/railsexpress/02-improve-gc-stats.patch" + "${patchSet}/patches/ruby/2.1.0/railsexpress/03-display-more-detailed-stack-trace.patch" + "${patchSet}/patches/ruby/2.1.0/railsexpress/04-show-full-backtrace-on-stack-overflow.patch" + "${patchSet}/patches/ruby/2.1.0/railsexpress/05-fix-missing-c-return-event.patch" + "${patchSet}/patches/ruby/2.1.0/railsexpress/07-backport-006e66b6680f60adfb434ee7397f0dbc77de7873.patch" + "${patchSet}/patches/ruby/2.1.0/railsexpress/08-funny-falcon-stc-density.patch" + "${patchSet}/patches/ruby/2.1.0/railsexpress/09-funny-falcon-stc-pool-allocation.patch" + "${patchSet}/patches/ruby/2.1.0/railsexpress/10-aman-opt-aset-aref-str.patch" + "${patchSet}/patches/ruby/2.1.0/railsexpress/11-funny-falcon-method-cache.patch" + "${patchSet}/patches/ruby/2.1.0/railsexpress/12-backport-r44370.patch" + ]; + "2.1.2" = ops useRailsExpress [ + "${patchSet}/patches/ruby/2.1.2/railsexpress/01-zero-broken-tests.patch" + "${patchSet}/patches/ruby/2.1.2/railsexpress/02-improve-gc-stats.patch" + "${patchSet}/patches/ruby/2.1.2/railsexpress/03-display-more-detailed-stack-trace.patch" + "${patchSet}/patches/ruby/2.1.2/railsexpress/04-show-full-backtrace-on-stack-overflow.patch" + "${patchSet}/patches/ruby/2.1.2/railsexpress/05-fix-missing-c-return-event.patch" + "${patchSet}/patches/ruby/2.1.2/railsexpress/06-backport-006e66b6680f60adfb434ee7397f0dbc77de7873.patch" + "${patchSet}/patches/ruby/2.1.2/railsexpress/07-funny-falcon-stc-density.patch" + "${patchSet}/patches/ruby/2.1.2/railsexpress/08-funny-falcon-stc-pool-allocation.patch" + "${patchSet}/patches/ruby/2.1.2/railsexpress/09-aman-opt-aset-aref-str.patch" + "${patchSet}/patches/ruby/2.1.2/railsexpress/10-funny-falcon-method-cache.patch" + ]; + "2.1.3" = ops useRailsExpress [ + "${patchSet}/patches/ruby/2.1.3/railsexpress/01-zero-broken-tests.patch" + "${patchSet}/patches/ruby/2.1.3/railsexpress/02-improve-gc-stats.patch" + "${patchSet}/patches/ruby/2.1.3/railsexpress/03-display-more-detailed-stack-trace.patch" + "${patchSet}/patches/ruby/2.1.3/railsexpress/04-show-full-backtrace-on-stack-overflow.patch" + "${patchSet}/patches/ruby/2.1.3/railsexpress/05-funny-falcon-stc-density.patch" + "${patchSet}/patches/ruby/2.1.3/railsexpress/06-funny-falcon-stc-pool-allocation.patch" + "${patchSet}/patches/ruby/2.1.3/railsexpress/07-aman-opt-aset-aref-str.patch" + "${patchSet}/patches/ruby/2.1.3/railsexpress/08-funny-falcon-method-cache.patch" + ]; + "2.1.6" = ops useRailsExpress [ + "${patchSet}/patches/ruby/2.1.6/railsexpress/01-zero-broken-tests.patch" + "${patchSet}/patches/ruby/2.1.6/railsexpress/02-improve-gc-stats.patch" + "${patchSet}/patches/ruby/2.1.6/railsexpress/03-display-more-detailed-stack-trace.patch" + "${patchSet}/patches/ruby/2.1.6/railsexpress/04-show-full-backtrace-on-stack-overflow.patch" + "${patchSet}/patches/ruby/2.1.6/railsexpress/05-funny-falcon-stc-density.patch" + "${patchSet}/patches/ruby/2.1.6/railsexpress/06-funny-falcon-stc-pool-allocation.patch" + "${patchSet}/patches/ruby/2.1.6/railsexpress/07-aman-opt-aset-aref-str.patch" + "${patchSet}/patches/ruby/2.1.6/railsexpress/08-funny-falcon-method-cache.patch" + "${patchSet}/patches/ruby/2.1.6/railsexpress/09-heap-dump-support.patch" + ]; + "2.2.0" = ops useRailsExpress [ + "${patchSet}/patches/ruby/2.2.0/railsexpress/01-zero-broken-tests.patch" + "${patchSet}/patches/ruby/2.2.0/railsexpress/02-improve-gc-stats.patch" + "${patchSet}/patches/ruby/2.2.0/railsexpress/03-display-more-detailed-stack-trace.patch" + "${patchSet}/patches/ruby/2.2.0/railsexpress/04-backport-401c8bb.patch" + "${patchSet}/patches/ruby/2.2.0/railsexpress/05-fix-packed-bitfield-compat-warning-for-older-gccs.patch" + ]; + "2.2.2" = ops useRailsExpress [ + "${patchSet}/patches/ruby/2.2.2/railsexpress/01-zero-broken-tests.patch" + "${patchSet}/patches/ruby/2.2.2/railsexpress/02-improve-gc-stats.patch" + "${patchSet}/patches/ruby/2.2.2/railsexpress/03-display-more-detailed-stack-trace.patch" + "${patchSet}/patches/ruby/2.2.2/railsexpress/04-backported-bugfixes-222.patch" + ]; +}; in self diff --git a/pkgs/development/interpreters/ruby/ruby-1.9.3.nix b/pkgs/development/interpreters/ruby/ruby-1.9.3.nix deleted file mode 100644 index 1c4318e016862..0000000000000 --- a/pkgs/development/interpreters/ruby/ruby-1.9.3.nix +++ /dev/null @@ -1,124 +0,0 @@ -{ stdenv, lib, fetchurl, fetchFromGitHub -, zlib, zlibSupport ? true -, openssl, opensslSupport ? true -, gdbm, gdbmSupport ? true -, ncurses, readline, cursesSupport ? true -, groff, docSupport ? false -, libyaml, yamlSupport ? true -, ruby_1_9_3, autoreconfHook, bison, useRailsExpress ? true -, libiconv, libobjc -}: - -let - op = stdenv.lib.optional; - ops = stdenv.lib.optionals; - patchSet = import ./rvm-patchsets.nix { inherit fetchFromGitHub; }; - baseruby = ruby_1_9_3.override { useRailsExpress = false; }; -in - -stdenv.mkDerivation rec { - version = with passthru; "${majorVersion}.${minorVersion}.${teenyVersion}-p${patchLevel}"; - - name = "ruby-${version}"; - - src = if useRailsExpress then fetchFromGitHub { - owner = "ruby"; - repo = "ruby"; - rev = "v1_9_3_${passthru.patchLevel}"; - sha256 = "1r9xzzxmci2ajb34qb4y1w424mz878zdgzxkfp9w60agldxnb36s"; - } else fetchurl { - url = "http://cache.ruby-lang.org/pub/ruby/1.9/${name}.tar.bz2"; - sha256 = "07kpvv2z7g6shflls7fyfga8giifahwlnl30l49qdm9i6izf7idh"; - }; - - # Have `configure' avoid `/usr/bin/nroff' in non-chroot builds. - NROFF = "${groff}/bin/nroff"; - - buildInputs = ops useRailsExpress [ autoreconfHook bison ] - ++ (ops cursesSupport [ ncurses readline ] ) - ++ (op docSupport groff ) - ++ (op zlibSupport zlib) - ++ (op opensslSupport openssl) - ++ (op gdbmSupport gdbm) - ++ (op yamlSupport libyaml) - # Looks like ruby fails to build on darwin without readline even if curses - # support is not enabled, so add readline to the build inputs if curses - # support is disabled (if it's enabled, we already have it) and we're - # running on darwin - ++ (op (!cursesSupport && stdenv.isDarwin) readline) - ++ (ops stdenv.isDarwin [ libiconv libobjc ]); - - enableParallelBuilding = true; - - patches = [ - ./ruby19-parallel-install.patch - ./bitperfect-rdoc.patch - ] ++ ops useRailsExpress [ - "${patchSet}/patches/ruby/1.9.3/p${passthru.patchLevel}/railsexpress/01-fix-make-clean.patch" - "${patchSet}/patches/ruby/1.9.3/p${passthru.patchLevel}/railsexpress/02-zero-broken-tests.patch" - "${patchSet}/patches/ruby/1.9.3/p${passthru.patchLevel}/railsexpress/03-railsbench-gc.patch" - "${patchSet}/patches/ruby/1.9.3/p${passthru.patchLevel}/railsexpress/04-display-more-detailed-stack-trace.patch" - "${patchSet}/patches/ruby/1.9.3/p${passthru.patchLevel}/railsexpress/05-fork-support-for-gc-logging.patch" - "${patchSet}/patches/ruby/1.9.3/p${passthru.patchLevel}/railsexpress/06-track-live-dataset-size.patch" - "${patchSet}/patches/ruby/1.9.3/p${passthru.patchLevel}/railsexpress/07-webrick_204_304_keep_alive_fix.patch" - "${patchSet}/patches/ruby/1.9.3/p${passthru.patchLevel}/railsexpress/08-export-a-few-more-symbols-for-ruby-prof.patch" - "${patchSet}/patches/ruby/1.9.3/p${passthru.patchLevel}/railsexpress/09-thread-variables.patch" - "${patchSet}/patches/ruby/1.9.3/p${passthru.patchLevel}/railsexpress/10-faster-loading.patch" - "${patchSet}/patches/ruby/1.9.3/p${passthru.patchLevel}/railsexpress/11-falcon-st-opt.patch" - "${patchSet}/patches/ruby/1.9.3/p${passthru.patchLevel}/railsexpress/12-falcon-sparse-array.patch" - "${patchSet}/patches/ruby/1.9.3/p${passthru.patchLevel}/railsexpress/13-falcon-array-queue.patch" - "${patchSet}/patches/ruby/1.9.3/p${passthru.patchLevel}/railsexpress/14-railsbench-gc-fixes.patch" - "${patchSet}/patches/ruby/1.9.3/p${passthru.patchLevel}/railsexpress/15-show-full-backtrace-on-stack-overflow.patch" - "${patchSet}/patches/ruby/1.9.3/p${passthru.patchLevel}/railsexpress/16-configurable-fiber-stack-sizes.patch" - "${patchSet}/patches/ruby/1.9.3/p${passthru.patchLevel}/railsexpress/17-backport-psych-20.patch" - "${patchSet}/patches/ruby/1.9.3/p${passthru.patchLevel}/railsexpress/18-fix-missing-c-return-event.patch" - "${patchSet}/patches/ruby/1.9.3/p${passthru.patchLevel}/railsexpress/19-fix-process-daemon-call.patch" - ]; - - configureFlags = [ "--enable-shared" "--enable-pthread" ] - ++ op useRailsExpress "--with-baseruby=${baseruby}/bin/ruby" - # on darwin, we have /usr/include/tk.h -- so the configure script detects - # that tk is installed - ++ ( if stdenv.isDarwin then [ "--with-out-ext=tk " ] else [ ]); - - installFlags = stdenv.lib.optionalString docSupport "install-doc"; - - CFLAGS = stdenv.lib.optionalString stdenv.isDarwin "-mmacosx-version-min=10.7"; - - postInstall = '' - # Bundler tries to create this directory - mkdir -pv $out/${passthru.gemPath} - mkdir -p $out/nix-support - cat > $out/nix-support/setup-hook <<EOF - addGemPath() { - addToSearchPath GEM_PATH \$1/${passthru.gemPath} - } - - envHooks+=(addGemPath) - EOF - '' + lib.optionalString useRailsExpress '' - rbConfig=$(find $out/lib/ruby -name rbconfig.rb) - - # Prevent the baseruby from being included in the closure. - sed -i '/^ CONFIG\["BASERUBY"\]/d' $rbConfig - sed -i "s|'--with-baseruby=${baseruby}/bin/ruby'||" $rbConfig - ''; - - meta = with stdenv.lib; { - license = licenses.ruby; - homepage = "http://www.ruby-lang.org/en/"; - description = "The Ruby language"; - maintainers = with maintainers; [ lovek323 ]; - platforms = platforms.all; - }; - - passthru = rec { - majorVersion = "1"; - minorVersion = "9"; - teenyVersion = "3"; - patchLevel = "551"; - rubyEngine = "ruby"; - libPath = "lib/${rubyEngine}/${majorVersion}.${minorVersion}.${teenyVersion}"; - gemPath = "lib/${rubyEngine}/gems/${majorVersion}.${minorVersion}.${teenyVersion}"; - }; -} diff --git a/pkgs/development/interpreters/ruby/ruby-2.0.0.nix b/pkgs/development/interpreters/ruby/ruby-2.0.0.nix deleted file mode 100644 index dc6c70b676d4d..0000000000000 --- a/pkgs/development/interpreters/ruby/ruby-2.0.0.nix +++ /dev/null @@ -1,103 +0,0 @@ -{ stdenv, lib, fetchurl, fetchFromGitHub -, zlib, zlibSupport ? true -, openssl, opensslSupport ? true -, gdbm, gdbmSupport ? true -, ncurses, readline, cursesSupport ? true -, groff, docSupport ? false -, libyaml, yamlSupport ? true -, libffi, fiddleSupport ? true -, ruby_2_0_0, autoreconfHook, bison, useRailsExpress ? true -}: - -let - op = stdenv.lib.optional; - ops = stdenv.lib.optionals; - patchSet = import ./rvm-patchsets.nix { inherit fetchFromGitHub; }; - baseruby = ruby_2_0_0.override { useRailsExpress = false; }; -in - -stdenv.mkDerivation rec { - version = with passthru; "${majorVersion}.${minorVersion}.${teenyVersion}-p${patchLevel}"; - - name = "ruby-${version}"; - - src = if useRailsExpress then fetchFromGitHub { - owner = "ruby"; - repo = "ruby"; - rev = "v2_0_0_${passthru.patchLevel}"; - sha256 = "14bnas1iif2shyaz4ylb0832x96y2mda52x0v0aglkvqmcz1cfxb"; - } else fetchurl { - url = "https://cache.ruby-lang.org/pub/ruby/2.0/${name}.tar.bz2"; - sha256 = "1sc36qxqhziqbrvp99z4qdx9j0f8r1xhcbb6scb3m4nb02cwzk9d"; - }; - - # Have `configure' avoid `/usr/bin/nroff' in non-chroot builds. - NROFF = "${groff}/bin/nroff"; - - buildInputs = ops useRailsExpress [ autoreconfHook bison ] - ++ (op fiddleSupport libffi) - ++ (ops cursesSupport [ ncurses readline ] ) - ++ (op docSupport groff ) - ++ (op zlibSupport zlib) - ++ (op opensslSupport openssl) - ++ (op gdbmSupport gdbm) - ++ (op yamlSupport libyaml) - # Looks like ruby fails to build on darwin without readline even if curses - # support is not enabled, so add readline to the build inputs if curses - # support is disabled (if it's enabled, we already have it) and we're - # running on darwin - ++ (op (!cursesSupport && stdenv.isDarwin) readline); - - enableParallelBuilding = true; - - patches = ops useRailsExpress [ - "${patchSet}/patches/ruby/2.0.0/p${passthru.patchLevel}/railsexpress/01-zero-broken-tests.patch" - "${patchSet}/patches/ruby/2.0.0/p${passthru.patchLevel}/railsexpress/02-railsexpress-gc.patch" - "${patchSet}/patches/ruby/2.0.0/p${passthru.patchLevel}/railsexpress/03-display-more-detailed-stack-trace.patch" - "${patchSet}/patches/ruby/2.0.0/p${passthru.patchLevel}/railsexpress/04-show-full-backtrace-on-stack-overflow.patch" - ]; - - configureFlags = ["--enable-shared" ] - ++ op useRailsExpress "--with-baseruby=${baseruby}/bin/ruby" - # on darwin, we have /usr/include/tk.h -- so the configure script detects - # that tk is installed - ++ ( if stdenv.isDarwin then [ "--with-out-ext=tk " ] else [ ]); - - installFlags = stdenv.lib.optionalString docSupport "install-doc"; - # Bundler tries to create this directory - postInstall = '' - # Bundler tries to create this directory - mkdir -pv $out/${passthru.gemPath} - mkdir -p $out/nix-support - cat > $out/nix-support/setup-hook <<EOF - addGemPath() { - addToSearchPath GEM_PATH \$1/${passthru.gemPath} - } - - envHooks+=(addGemPath) - EOF - '' + lib.optionalString useRailsExpress '' - rbConfig=$(find $out/lib/ruby -name rbconfig.rb) - - # Prevent the baseruby from being included in the closure. - sed -i '/^ CONFIG\["BASERUBY"\]/d' $rbConfig - sed -i "s|'--with-baseruby=${baseruby}/bin/ruby'||" $rbConfig - ''; - - meta = { - license = stdenv.lib.licenses.ruby; - homepage = "http://www.ruby-lang.org/en/"; - description = "The Ruby language"; - platforms = stdenv.lib.platforms.all; - }; - - passthru = rec { - majorVersion = "2"; - minorVersion = "0"; - teenyVersion = "0"; - patchLevel = "645"; - rubyEngine = "ruby"; - libPath = "lib/${rubyEngine}/${majorVersion}.${minorVersion}.${teenyVersion}"; - gemPath = "lib/${rubyEngine}/gems/${majorVersion}.${minorVersion}.${teenyVersion}"; - }; -} diff --git a/pkgs/development/interpreters/ruby/ruby-2.1.0.nix b/pkgs/development/interpreters/ruby/ruby-2.1.0.nix deleted file mode 100644 index 0fe9daa50e4da..0000000000000 --- a/pkgs/development/interpreters/ruby/ruby-2.1.0.nix +++ /dev/null @@ -1,120 +0,0 @@ -{ stdenv, lib, fetchurl, fetchFromSavannah, fetchFromGitHub -, zlib, zlibSupport ? true -, openssl, opensslSupport ? true -, gdbm, gdbmSupport ? true -, ncurses, readline, cursesSupport ? true -, groff, docSupport ? false -, libyaml, yamlSupport ? true -, libffi, fiddleSupport ? true -, ruby_2_1_0, autoreconfHook, bison, useRailsExpress ? true -}: - -let - op = stdenv.lib.optional; - ops = stdenv.lib.optionals; - patchSet = import ./rvm-patchsets.nix { inherit fetchFromGitHub; }; - config = import ./config.nix { inherit fetchFromSavannah; }; - baseruby = ruby_2_1_0.override { useRailsExpress = false; }; -in - -stdenv.mkDerivation rec { - version = with passthru; "${majorVersion}.${minorVersion}.${teenyVersion}-p${patchLevel}"; - - name = "ruby-${version}"; - - src = if useRailsExpress then fetchFromGitHub { - owner = "ruby"; - repo = "ruby"; - rev = "v2_1_0"; - sha256 = "12sn532yvznqfz85378ys0b9ggmj7w8ddhzc1pnnlx7mbyy7r2hx"; - } else fetchurl { - url = "http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.0.tar.gz"; - sha256 = "17fhfbw8sr13rxfn58wvrhk2f5i88lkna2afn3gdjvprd8gyqf1m"; - }; - - # Have `configure' avoid `/usr/bin/nroff' in non-chroot builds. - NROFF = "${groff}/bin/nroff"; - - buildInputs = ops useRailsExpress [ autoreconfHook bison ] - ++ (op fiddleSupport libffi) - ++ (ops cursesSupport [ ncurses readline ] ) - ++ (op docSupport groff ) - ++ (op zlibSupport zlib) - ++ (op opensslSupport openssl) - ++ (op gdbmSupport gdbm) - ++ (op yamlSupport libyaml) - # Looks like ruby fails to build on darwin without readline even if curses - # support is not enabled, so add readline to the build inputs if curses - # support is disabled (if it's enabled, we already have it) and we're - # running on darwin - ++ (op (!cursesSupport && stdenv.isDarwin) readline); - - enableParallelBuilding = true; - - patches = ops useRailsExpress [ - "${patchSet}/patches/ruby/2.1.0/railsexpress/01-current-2.1.1-fixes.patch" - "${patchSet}/patches/ruby/2.1.0/railsexpress/02-zero-broken-tests.patch" - "${patchSet}/patches/ruby/2.1.0/railsexpress/03-improve-gc-stats.patch" - "${patchSet}/patches/ruby/2.1.0/railsexpress/04-display-more-detailed-stack-trace.patch" - "${patchSet}/patches/ruby/2.1.0/railsexpress/05-show-full-backtrace-on-stack-overflow.patch" - "${patchSet}/patches/ruby/2.1.0/railsexpress/06-fix-missing-c-return-event.patch" - "${patchSet}/patches/ruby/2.1.0/railsexpress/07-backport-006e66b6680f60adfb434ee7397f0dbc77de7873.patch" - "${patchSet}/patches/ruby/2.1.0/railsexpress/08-funny-falcon-stc-density.patch" - "${patchSet}/patches/ruby/2.1.0/railsexpress/09-funny-falcon-stc-pool-allocation.patch" - "${patchSet}/patches/ruby/2.1.0/railsexpress/10-aman-opt-aset-aref-str.patch" - "${patchSet}/patches/ruby/2.1.0/railsexpress/11-funny-falcon-method-cache.patch" - "${patchSet}/patches/ruby/2.1.0/railsexpress/12-backport-r44370.patch" - ]; - - # Ruby >= 2.1.0 tries to download config.{guess,sub} - postPatch = '' - rm tool/config_files.rb - cp ${config}/config.guess tool/ - cp ${config}/config.sub tool/ - ''; - - configureFlags = ["--enable-shared" ] - ++ op useRailsExpress "--with-baseruby=${baseruby}/bin/ruby" - # on darwin, we have /usr/include/tk.h -- so the configure script detects - # that tk is installed - ++ ( if stdenv.isDarwin then [ "--with-out-ext=tk " ] else [ ]); - - installFlags = stdenv.lib.optionalString docSupport "install-doc"; - # Bundler tries to create this directory - postInstall = '' - # Bundler tries to create this directory - mkdir -pv $out/${passthru.gemPath} - mkdir -p $out/nix-support - cat > $out/nix-support/setup-hook <<EOF - addGemPath() { - addToSearchPath GEM_PATH \$1/${passthru.gemPath} - } - - envHooks+=(addGemPath) - EOF - '' + lib.optionalString useRailsExpress '' - rbConfig=$(find $out/lib/ruby -name rbconfig.rb) - - # Prevent the baseruby from being included in the closure. - sed -i '/^ CONFIG\["BASERUBY"\]/d' $rbConfig - sed -i "s|'--with-baseruby=${baseruby}/bin/ruby'||" $rbConfig - ''; - - - meta = { - license = stdenv.lib.licenses.ruby; - homepage = "http://www.ruby-lang.org/en/"; - description = "The Ruby language"; - platforms = stdenv.lib.platforms.all; - }; - - passthru = rec { - majorVersion = "2"; - minorVersion = "1"; - teenyVersion = "0"; - patchLevel = "0"; - rubyEngine = "ruby"; - libPath = "lib/${rubyEngine}/${majorVersion}.${minorVersion}.${teenyVersion}"; - gemPath = "lib/${rubyEngine}/gems/${majorVersion}.${minorVersion}.${teenyVersion}"; - }; -} diff --git a/pkgs/development/interpreters/ruby/ruby-2.1.1.nix b/pkgs/development/interpreters/ruby/ruby-2.1.1.nix deleted file mode 100644 index 8b2c04e853f89..0000000000000 --- a/pkgs/development/interpreters/ruby/ruby-2.1.1.nix +++ /dev/null @@ -1,118 +0,0 @@ -{ stdenv, lib, fetchurl, fetchFromSavannah, fetchFromGitHub -, zlib, zlibSupport ? true -, openssl, opensslSupport ? true -, gdbm, gdbmSupport ? true -, ncurses, readline, cursesSupport ? true -, groff, docSupport ? false -, libyaml, yamlSupport ? true -, libffi, fiddleSupport ? true -, ruby_2_1_1, autoreconfHook, bison, useRailsExpress ? true -}: - -let - op = stdenv.lib.optional; - ops = stdenv.lib.optionals; - patchSet = import ./rvm-patchsets.nix { inherit fetchFromGitHub; }; - config = import ./config.nix { inherit fetchFromSavannah; }; - baseruby = ruby_2_1_1.override { useRailsExpress = false; }; -in - -stdenv.mkDerivation rec { - version = with passthru; "${majorVersion}.${minorVersion}.${teenyVersion}-p${patchLevel}"; - - name = "ruby-${version}"; - - src = if useRailsExpress then fetchFromGitHub { - owner = "ruby"; - repo = "ruby"; - rev = "v2_1_1"; - sha256 = "1v2ffvyd0xx1h1qd70431zczhvsdiyyw5kjxih4rszd5avzh5grl"; - } else fetchurl { - url = "http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.1.tar.gz"; - sha256 = "0hc9x3mazyvnk94gs19q8mbnanlzk8mv0hii77slkvc8mqqxyhy8"; - }; - - # Have `configure' avoid `/usr/bin/nroff' in non-chroot builds. - NROFF = "${groff}/bin/nroff"; - - buildInputs = ops useRailsExpress [ autoreconfHook bison ] - ++ (op fiddleSupport libffi) - ++ (ops cursesSupport [ ncurses readline ] ) - ++ (op docSupport groff ) - ++ (op zlibSupport zlib) - ++ (op opensslSupport openssl) - ++ (op gdbmSupport gdbm) - ++ (op yamlSupport libyaml) - # Looks like ruby fails to build on darwin without readline even if curses - # support is not enabled, so add readline to the build inputs if curses - # support is disabled (if it's enabled, we already have it) and we're - # running on darwin - ++ (op (!cursesSupport && stdenv.isDarwin) readline); - - enableParallelBuilding = true; - - patches = ops useRailsExpress [ - "${patchSet}/patches/ruby/2.1.0/railsexpress/01-zero-broken-tests.patch" - "${patchSet}/patches/ruby/2.1.0/railsexpress/02-improve-gc-stats.patch" - "${patchSet}/patches/ruby/2.1.0/railsexpress/03-display-more-detailed-stack-trace.patch" - "${patchSet}/patches/ruby/2.1.0/railsexpress/04-show-full-backtrace-on-stack-overflow.patch" - "${patchSet}/patches/ruby/2.1.0/railsexpress/05-fix-missing-c-return-event.patch" - "${patchSet}/patches/ruby/2.1.0/railsexpress/07-backport-006e66b6680f60adfb434ee7397f0dbc77de7873.patch" - "${patchSet}/patches/ruby/2.1.0/railsexpress/08-funny-falcon-stc-density.patch" - "${patchSet}/patches/ruby/2.1.0/railsexpress/09-funny-falcon-stc-pool-allocation.patch" - "${patchSet}/patches/ruby/2.1.0/railsexpress/10-aman-opt-aset-aref-str.patch" - "${patchSet}/patches/ruby/2.1.0/railsexpress/11-funny-falcon-method-cache.patch" - "${patchSet}/patches/ruby/2.1.0/railsexpress/12-backport-r44370.patch" - ]; - - # Ruby >= 2.1.0 tries to download config.{guess,sub} - postPatch = '' - rm tool/config_files.rb - cp ${config}/config.guess tool/ - cp ${config}/config.sub tool/ - ''; - - configureFlags = ["--enable-shared" ] - ++ op useRailsExpress "--with-baseruby=${baseruby}/bin/ruby" - # on darwin, we have /usr/include/tk.h -- so the configure script detects - # that tk is installed - ++ ( if stdenv.isDarwin then [ "--with-out-ext=tk " ] else [ ]); - - installFlags = stdenv.lib.optionalString docSupport "install-doc"; - # Bundler tries to create this directory - postInstall = '' - # Bundler tries to create this directory - mkdir -pv $out/${passthru.gemPath} - mkdir -p $out/nix-support - cat > $out/nix-support/setup-hook <<EOF - addGemPath() { - addToSearchPath GEM_PATH \$1/${passthru.gemPath} - } - - envHooks+=(addGemPath) - EOF - '' + lib.optionalString useRailsExpress '' - rbConfig=$(find $out/lib/ruby -name rbconfig.rb) - - # Prevent the baseruby from being included in the closure. - sed -i '/^ CONFIG\["BASERUBY"\]/d' $rbConfig - sed -i "s|'--with-baseruby=${baseruby}/bin/ruby'||" $rbConfig - ''; - - meta = { - license = stdenv.lib.licenses.ruby; - homepage = "http://www.ruby-lang.org/en/"; - description = "The Ruby language"; - platforms = stdenv.lib.platforms.all; - }; - - passthru = rec { - majorVersion = "2"; - minorVersion = "1"; - teenyVersion = "1"; - patchLevel = "0"; - rubyEngine = "ruby"; - libPath = "lib/${rubyEngine}/${majorVersion}.${minorVersion}.${teenyVersion}"; - gemPath = "lib/${rubyEngine}/gems/${majorVersion}.${minorVersion}.${teenyVersion}"; - }; -} diff --git a/pkgs/development/interpreters/ruby/ruby-2.1.2.nix b/pkgs/development/interpreters/ruby/ruby-2.1.2.nix deleted file mode 100644 index 2cad52cc56d25..0000000000000 --- a/pkgs/development/interpreters/ruby/ruby-2.1.2.nix +++ /dev/null @@ -1,117 +0,0 @@ -{ stdenv, lib, fetchurl, fetchFromSavannah, fetchFromGitHub -, zlib, zlibSupport ? true -, openssl, opensslSupport ? true -, gdbm, gdbmSupport ? true -, ncurses, readline, cursesSupport ? true -, groff, docSupport ? false -, libyaml, yamlSupport ? true -, libffi, fiddleSupport ? true -, ruby_2_1_2, autoreconfHook, bison, useRailsExpress ? true -}: - -let - op = stdenv.lib.optional; - ops = stdenv.lib.optionals; - patchSet = import ./rvm-patchsets.nix { inherit fetchFromGitHub; }; - config = import ./config.nix { inherit fetchFromSavannah; }; - baseruby = ruby_2_1_2.override { useRailsExpress = false; }; -in - -stdenv.mkDerivation rec { - version = with passthru; "${majorVersion}.${minorVersion}.${teenyVersion}-p${patchLevel}"; - - name = "ruby-${version}"; - - src = if useRailsExpress then fetchFromGitHub { - owner = "ruby"; - repo = "ruby"; - rev = "v2_1_2"; - sha256 = "14f8w3zwngnxsgigffh6h9z3ng53xq8mk126xmwrsmz9n3ypm6l0"; - } else fetchurl { - url = "http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.gz"; - sha256 = "0db6krc2bd7yha8p96lcqrahjpsz7g7abhni134g708sh53n8apj"; - }; - - # Have `configure' avoid `/usr/bin/nroff' in non-chroot builds. - NROFF = "${groff}/bin/nroff"; - - buildInputs = ops useRailsExpress [ autoreconfHook bison ] - ++ (op fiddleSupport libffi) - ++ (ops cursesSupport [ ncurses readline ] ) - ++ (op docSupport groff ) - ++ (op zlibSupport zlib) - ++ (op opensslSupport openssl) - ++ (op gdbmSupport gdbm) - ++ (op yamlSupport libyaml) - # Looks like ruby fails to build on darwin without readline even if curses - # support is not enabled, so add readline to the build inputs if curses - # support is disabled (if it's enabled, we already have it) and we're - # running on darwin - ++ (op (!cursesSupport && stdenv.isDarwin) readline); - - enableParallelBuilding = true; - - patches = ops useRailsExpress [ - "${patchSet}/patches/ruby/2.1.2/railsexpress/01-zero-broken-tests.patch" - "${patchSet}/patches/ruby/2.1.2/railsexpress/02-improve-gc-stats.patch" - "${patchSet}/patches/ruby/2.1.2/railsexpress/03-display-more-detailed-stack-trace.patch" - "${patchSet}/patches/ruby/2.1.2/railsexpress/04-show-full-backtrace-on-stack-overflow.patch" - "${patchSet}/patches/ruby/2.1.2/railsexpress/05-fix-missing-c-return-event.patch" - "${patchSet}/patches/ruby/2.1.2/railsexpress/06-backport-006e66b6680f60adfb434ee7397f0dbc77de7873.patch" - "${patchSet}/patches/ruby/2.1.2/railsexpress/07-funny-falcon-stc-density.patch" - "${patchSet}/patches/ruby/2.1.2/railsexpress/08-funny-falcon-stc-pool-allocation.patch" - "${patchSet}/patches/ruby/2.1.2/railsexpress/09-aman-opt-aset-aref-str.patch" - "${patchSet}/patches/ruby/2.1.2/railsexpress/10-funny-falcon-method-cache.patch" - ]; - - # Ruby >= 2.1.0 tries to download config.{guess,sub} - postPatch = '' - rm tool/config_files.rb - cp ${config}/config.guess tool/ - cp ${config}/config.sub tool/ - ''; - - configureFlags = ["--enable-shared" ] - ++ op useRailsExpress "--with-baseruby=${baseruby}/bin/ruby" - # on darwin, we have /usr/include/tk.h -- so the configure script detects - # that tk is installed - ++ ( if stdenv.isDarwin then [ "--with-out-ext=tk " ] else [ ]); - - installFlags = stdenv.lib.optionalString docSupport "install-doc"; - # Bundler tries to create this directory - postInstall = '' - # Bundler tries to create this directory - mkdir -pv $out/${passthru.gemPath} - mkdir -p $out/nix-support - cat > $out/nix-support/setup-hook <<EOF - addGemPath() { - addToSearchPath GEM_PATH \$1/${passthru.gemPath} - } - - envHooks+=(addGemPath) - EOF - '' + lib.optionalString useRailsExpress '' - rbConfig=$(find $out/lib/ruby -name rbconfig.rb) - - # Prevent the baseruby from being included in the closure. - sed -i '/^ CONFIG\["BASERUBY"\]/d' $rbConfig - sed -i "s|'--with-baseruby=${baseruby}/bin/ruby'||" $rbConfig - ''; - - meta = { - license = stdenv.lib.licenses.ruby; - homepage = "http://www.ruby-lang.org/en/"; - description = "The Ruby language"; - platforms = stdenv.lib.platforms.all; - }; - - passthru = rec { - majorVersion = "2"; - minorVersion = "1"; - teenyVersion = "2"; - patchLevel = "353"; - rubyEngine = "ruby"; - libPath = "lib/${rubyEngine}/${majorVersion}.${minorVersion}.${teenyVersion}"; - gemPath = "lib/${rubyEngine}/gems/${majorVersion}.${minorVersion}.${teenyVersion}"; - }; -} diff --git a/pkgs/development/interpreters/ruby/ruby-2.1.3.nix b/pkgs/development/interpreters/ruby/ruby-2.1.3.nix deleted file mode 100644 index 50cc3484730dd..0000000000000 --- a/pkgs/development/interpreters/ruby/ruby-2.1.3.nix +++ /dev/null @@ -1,121 +0,0 @@ -{ stdenv, lib, fetchurl, fetchFromSavannah, fetchFromGitHub -, zlib, zlibSupport ? true -, openssl, opensslSupport ? true -, gdbm, gdbmSupport ? true -, ncurses, readline, cursesSupport ? true -, groff, docSupport ? false -, libyaml, yamlSupport ? true -, libffi, fiddleSupport ? true -, ruby_2_1_3, autoreconfHook, bison, useRailsExpress ? true -}: - -let - op = stdenv.lib.optional; - ops = stdenv.lib.optionals; - patchSet = import ./rvm-patchsets.nix { inherit fetchFromGitHub; }; - config = import ./config.nix { inherit fetchFromSavannah; }; - baseruby = ruby_2_1_3.override { useRailsExpress = false; }; -in - -stdenv.mkDerivation rec { - version = with passthru; "${majorVersion}.${minorVersion}.${teenyVersion}-p${patchLevel}"; - - name = "ruby-${version}"; - - src = if useRailsExpress then fetchFromGitHub { - owner = "ruby"; - repo = "ruby"; - rev = "v2_1_3"; - sha256 = "1pnam9jry2l2mbji3gvrbb7jyisxl99xjz6l1qrccwnfinxxbmhv"; - } else fetchurl { - url = "http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.3.tar.gz"; - sha256 = "00bz6jcbxgnllplk4b9lnyc3w8yd3pz5rn11rmca1s8cn6vvw608"; - }; - - # Have `configure' avoid `/usr/bin/nroff' in non-chroot builds. - NROFF = "${groff}/bin/nroff"; - - buildInputs = ops useRailsExpress [ autoreconfHook bison ] - ++ (op fiddleSupport libffi) - ++ (ops cursesSupport [ ncurses readline ]) - ++ (op docSupport groff) - ++ (op zlibSupport zlib) - ++ (op opensslSupport openssl) - ++ (op gdbmSupport gdbm) - ++ (op yamlSupport libyaml) - # Looks like ruby fails to build on darwin without readline even if curses - # support is not enabled, so add readline to the build inputs if curses - # support is disabled (if it's enabled, we already have it) and we're - # running on darwin - ++ (op (!cursesSupport && stdenv.isDarwin) readline); - - enableParallelBuilding = true; - - # Fix a build failure on systems with nix store optimisation. - # (The build process attempted to copy file a overwriting file b, where a and - # b are hard-linked, which results in cp returning a non-zero exit code.) - # https://github.com/NixOS/nixpkgs/issues/4266 - postUnpack = ''rm "$sourceRoot/enc/unicode/name2ctype.h"''; - - patches = ops useRailsExpress [ - "${patchSet}/patches/ruby/2.1.3/railsexpress/01-zero-broken-tests.patch" - "${patchSet}/patches/ruby/2.1.3/railsexpress/02-improve-gc-stats.patch" - "${patchSet}/patches/ruby/2.1.3/railsexpress/03-display-more-detailed-stack-trace.patch" - "${patchSet}/patches/ruby/2.1.3/railsexpress/04-show-full-backtrace-on-stack-overflow.patch" - "${patchSet}/patches/ruby/2.1.3/railsexpress/05-funny-falcon-stc-density.patch" - "${patchSet}/patches/ruby/2.1.3/railsexpress/06-funny-falcon-stc-pool-allocation.patch" - "${patchSet}/patches/ruby/2.1.3/railsexpress/07-aman-opt-aset-aref-str.patch" - "${patchSet}/patches/ruby/2.1.3/railsexpress/08-funny-falcon-method-cache.patch" - ]; - - # Ruby >= 2.1.0 tries to download config.{guess,sub} - postPatch = '' - rm tool/config_files.rb - cp ${config}/config.guess tool/ - cp ${config}/config.sub tool/ - ''; - - configureFlags = ["--enable-shared" ] - ++ op useRailsExpress "--with-baseruby=${baseruby}/bin/ruby" - # on darwin, we have /usr/include/tk.h -- so the configure script detects - # that tk is installed - ++ ( if stdenv.isDarwin then [ "--with-out-ext=tk " ] else [ ]); - - installFlags = stdenv.lib.optionalString docSupport "install-doc"; - # Bundler tries to create this directory - postInstall = '' - # Bundler tries to create this directory - mkdir -pv $out/${passthru.gemPath} - mkdir -p $out/nix-support - cat > $out/nix-support/setup-hook <<EOF - addGemPath() { - addToSearchPath GEM_PATH \$1/${passthru.gemPath} - } - - envHooks+=(addGemPath) - EOF - '' + lib.optionalString useRailsExpress '' - rbConfig=$(find $out/lib/ruby -name rbconfig.rb) - - # Prevent the baseruby from being included in the closure. - sed -i '/^ CONFIG\["BASERUBY"\]/d' $rbConfig - sed -i "s|'--with-baseruby=${baseruby}/bin/ruby'||" $rbConfig - ''; - - meta = { - license = stdenv.lib.licenses.ruby; - homepage = "http://www.ruby-lang.org/en/"; - description = "The Ruby language"; - platforms = stdenv.lib.platforms.all; - }; - - passthru = rec { - majorVersion = "2"; - minorVersion = "1"; - teenyVersion = "3"; - patchLevel = "0"; - rubyEngine = "ruby"; - libPath = "lib/${rubyEngine}/${majorVersion}.${minorVersion}.${teenyVersion}"; - gemPath = "lib/${rubyEngine}/gems/${majorVersion}.${minorVersion}.${teenyVersion}"; - }; -} diff --git a/pkgs/development/interpreters/ruby/ruby-2.1.6.nix b/pkgs/development/interpreters/ruby/ruby-2.1.6.nix deleted file mode 100644 index 0bf89de1d98c0..0000000000000 --- a/pkgs/development/interpreters/ruby/ruby-2.1.6.nix +++ /dev/null @@ -1,124 +0,0 @@ -{ stdenv, lib, fetchurl, fetchFromSavannah, fetchFromGitHub -, zlib, zlibSupport ? true -, openssl, opensslSupport ? true -, gdbm, gdbmSupport ? true -, ncurses, readline, cursesSupport ? true -, groff, docSupport ? false -, libyaml, yamlSupport ? true -, libffi, fiddleSupport ? true -, ruby_2_1_6, autoreconfHook, bison, useRailsExpress ? true -, libiconv, libobjc, libunwind -}: - -let - op = stdenv.lib.optional; - ops = stdenv.lib.optionals; - patchSet = import ./rvm-patchsets.nix { inherit fetchFromGitHub; }; - config = import ./config.nix { inherit fetchFromSavannah; }; - baseruby = ruby_2_1_6.override { useRailsExpress = false; }; -in - -stdenv.mkDerivation rec { - version = with passthru; "${majorVersion}.${minorVersion}.${teenyVersion}-p${patchLevel}"; - - name = "ruby-${version}"; - - src = if useRailsExpress then fetchFromGitHub { - owner = "ruby"; - repo = "ruby"; - rev = "v2_1_6"; - sha256 = "18kbjsbmgv6l3p1qxgmjnhh4jl7xdk3c20ycjpp62vrhq7pyzjsm"; - } else fetchurl { - url = "http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.6.tar.gz"; - sha256 = "1r4bs8lfwsypbcf8j2lpv3by40729vp5mh697njizj97fjp644qy"; - }; - - # Have `configure' avoid `/usr/bin/nroff' in non-chroot builds. - NROFF = "${groff}/bin/nroff"; - - buildInputs = ops useRailsExpress [ autoreconfHook bison ] - ++ (op fiddleSupport libffi) - ++ (ops cursesSupport [ ncurses readline ]) - ++ (op docSupport groff) - ++ (op zlibSupport zlib) - ++ (op opensslSupport openssl) - ++ (op gdbmSupport gdbm) - ++ (op yamlSupport libyaml) - # Looks like ruby fails to build on darwin without readline even if curses - # support is not enabled, so add readline to the build inputs if curses - # support is disabled (if it's enabled, we already have it) and we're - # running on darwin - ++ (op (!cursesSupport && stdenv.isDarwin) readline) - ++ (ops stdenv.isDarwin [ libiconv libobjc libunwind ]); - - enableParallelBuilding = true; - - # Fix a build failure on systems with nix store optimisation. - # (The build process attempted to copy file a overwriting file b, where a and - # b are hard-linked, which results in cp returning a non-zero exit code.) - # https://github.com/NixOS/nixpkgs/issues/4266 - postUnpack = ''rm "$sourceRoot/enc/unicode/name2ctype.h"''; - - patches = ops useRailsExpress [ - "${patchSet}/patches/ruby/2.1.6/railsexpress/01-zero-broken-tests.patch" - "${patchSet}/patches/ruby/2.1.6/railsexpress/02-improve-gc-stats.patch" - "${patchSet}/patches/ruby/2.1.6/railsexpress/03-display-more-detailed-stack-trace.patch" - "${patchSet}/patches/ruby/2.1.6/railsexpress/04-show-full-backtrace-on-stack-overflow.patch" - "${patchSet}/patches/ruby/2.1.6/railsexpress/05-funny-falcon-stc-density.patch" - "${patchSet}/patches/ruby/2.1.6/railsexpress/06-funny-falcon-stc-pool-allocation.patch" - "${patchSet}/patches/ruby/2.1.6/railsexpress/07-aman-opt-aset-aref-str.patch" - "${patchSet}/patches/ruby/2.1.6/railsexpress/08-funny-falcon-method-cache.patch" - "${patchSet}/patches/ruby/2.1.6/railsexpress/09-heap-dump-support.patch" - ]; - - # Ruby >= 2.1.0 tries to download config.{guess,sub} - postPatch = '' - rm tool/config_files.rb - cp ${config}/config.guess tool/ - cp ${config}/config.sub tool/ - ''; - - configureFlags = ["--enable-shared" ] - ++ op useRailsExpress "--with-baseruby=${baseruby}/bin/ruby" - # on darwin, we have /usr/include/tk.h -- so the configure script detects - # that tk is installed - ++ ( if stdenv.isDarwin then [ "--with-out-ext=tk " ] else [ ]); - - installFlags = stdenv.lib.optionalString docSupport "install-doc"; - # Bundler tries to create this directory - postInstall = '' - # Bundler tries to create this directory - mkdir -pv $out/${passthru.gemPath} - mkdir -p $out/nix-support - cat > $out/nix-support/setup-hook <<EOF - addGemPath() { - addToSearchPath GEM_PATH \$1/${passthru.gemPath} - } - - envHooks+=(addGemPath) - EOF - '' + lib.optionalString useRailsExpress '' - rbConfig=$(find $out/lib/ruby -name rbconfig.rb) - - # Prevent the baseruby from being included in the closure. - sed -i '/^ CONFIG\["BASERUBY"\]/d' $rbConfig - sed -i "s|'--with-baseruby=${baseruby}/bin/ruby'||" $rbConfig - ''; - - meta = { - license = stdenv.lib.licenses.ruby; - homepage = "http://www.ruby-lang.org/en/"; - description = "The Ruby language"; - platforms = stdenv.lib.platforms.all; - }; - - passthru = rec { - majorVersion = "2"; - minorVersion = "1"; - teenyVersion = "6"; - patchLevel = "0"; - rubyEngine = "ruby"; - libPath = "lib/${rubyEngine}/${majorVersion}.${minorVersion}.${teenyVersion}"; - gemPath = "lib/${rubyEngine}/gems/${majorVersion}.${minorVersion}.${teenyVersion}"; - }; -} diff --git a/pkgs/development/interpreters/ruby/ruby-2.2.0.nix b/pkgs/development/interpreters/ruby/ruby-2.2.0.nix deleted file mode 100644 index a29b746640016..0000000000000 --- a/pkgs/development/interpreters/ruby/ruby-2.2.0.nix +++ /dev/null @@ -1,113 +0,0 @@ -{ stdenv, lib, fetchurl, fetchFromSavannah, fetchFromGitHub -, zlib, zlibSupport ? true -, openssl, opensslSupport ? true -, gdbm, gdbmSupport ? true -, ncurses, readline, cursesSupport ? true -, groff, docSupport ? false -, libyaml, yamlSupport ? true -, libffi, fiddleSupport ? true -, ruby_2_2_0, autoreconfHook, bison, useRailsExpress ? true -, libiconv, libobjc, libunwind -}: - -let - op = stdenv.lib.optional; - ops = stdenv.lib.optionals; - patchSet = import ./rvm-patchsets.nix { inherit fetchFromGitHub; }; - config = import ./config.nix { inherit fetchFromSavannah; }; - baseruby = ruby_2_2_0.override { useRailsExpress = false; }; -in - -stdenv.mkDerivation rec { - version = with passthru; "${majorVersion}.${minorVersion}.${teenyVersion}-p${patchLevel}"; - - name = "ruby-${version}"; - - src = if useRailsExpress then fetchFromGitHub { - owner = "ruby"; - repo = "ruby"; - rev = "v2_2_0"; - sha256 = "1w7rr2nq1bbw6aiagddzlrr3rl95kk33x4pv6570nm072g55ybpi"; - } else fetchurl { - url = "http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0.tar.gz"; - sha256 = "1z2092fbpc2qkv1j3yj7jdz7qwvqpxqpmcnkphpjcpgvmfaf6wbn"; - }; - - # Have `configure' avoid `/usr/bin/nroff' in non-chroot builds. - NROFF = "${groff}/bin/nroff"; - - buildInputs = ops useRailsExpress [ autoreconfHook bison ] - ++ (op fiddleSupport libffi) - ++ (ops cursesSupport [ ncurses readline ]) - ++ (op docSupport groff) - ++ (op zlibSupport zlib) - ++ (op opensslSupport openssl) - ++ (op gdbmSupport gdbm) - ++ (op yamlSupport libyaml) - # Looks like ruby fails to build on darwin without readline even if curses - # support is not enabled, so add readline to the build inputs if curses - # support is disabled (if it's enabled, we already have it) and we're - # running on darwin - ++ (op (!cursesSupport && stdenv.isDarwin) readline) - ++ (ops stdenv.isDarwin [ libiconv libobjc libunwind ]); - - enableParallelBuilding = true; - - patches = ops useRailsExpress [ - "${patchSet}/patches/ruby/2.2.0/railsexpress/01-zero-broken-tests.patch" - "${patchSet}/patches/ruby/2.2.0/railsexpress/02-improve-gc-stats.patch" - "${patchSet}/patches/ruby/2.2.0/railsexpress/03-display-more-detailed-stack-trace.patch" - "${patchSet}/patches/ruby/2.2.0/railsexpress/04-backport-401c8bb.patch" - "${patchSet}/patches/ruby/2.2.0/railsexpress/05-fix-packed-bitfield-compat-warning-for-older-gccs.patch" - ]; - - postPatch = ops useRailsExpress '' - sed -i configure.in -e '/config.guess/d' - cp ${config}/config.guess tool/ - cp ${config}/config.sub tool/ - ''; - - configureFlags = ["--enable-shared" ] - ++ op useRailsExpress "--with-baseruby=${baseruby}/bin/ruby" - # on darwin, we have /usr/include/tk.h -- so the configure script detects - # that tk is installed - ++ ( if stdenv.isDarwin then [ "--with-out-ext=tk " ] else [ ]); - - installFlags = stdenv.lib.optionalString docSupport "install-doc"; - # Bundler tries to create this directory - postInstall = '' - # Bundler tries to create this directory - mkdir -pv $out/${passthru.gemPath} - mkdir -p $out/nix-support - cat > $out/nix-support/setup-hook <<EOF - addGemPath() { - addToSearchPath GEM_PATH \$1/${passthru.gemPath} - } - - envHooks+=(addGemPath) - EOF - '' + lib.optionalString useRailsExpress '' - rbConfig=$(find $out/lib/ruby -name rbconfig.rb) - - # Prevent the baseruby from being included in the closure. - sed -i '/^ CONFIG\["BASERUBY"\]/d' $rbConfig - sed -i "s|'--with-baseruby=${baseruby}/bin/ruby'||" $rbConfig - ''; - - meta = { - license = stdenv.lib.licenses.ruby; - homepage = "http://www.ruby-lang.org/en/"; - description = "The Ruby language"; - platforms = stdenv.lib.platforms.all; - }; - - passthru = rec { - majorVersion = "2"; - minorVersion = "2"; - teenyVersion = "0"; - patchLevel = "0"; - rubyEngine = "ruby"; - libPath = "lib/${rubyEngine}/${majorVersion}.${minorVersion}.${teenyVersion}"; - gemPath = "lib/${rubyEngine}/gems/${majorVersion}.${minorVersion}.${teenyVersion}"; - }; -} diff --git a/pkgs/development/interpreters/ruby/ruby-2.2.2.nix b/pkgs/development/interpreters/ruby/ruby-2.2.2.nix deleted file mode 100644 index df40f674989e7..0000000000000 --- a/pkgs/development/interpreters/ruby/ruby-2.2.2.nix +++ /dev/null @@ -1,112 +0,0 @@ -{ stdenv, lib, fetchurl, fetchFromSavannah, fetchFromGitHub -, zlib, zlibSupport ? true -, openssl, opensslSupport ? true -, gdbm, gdbmSupport ? true -, ncurses, readline, cursesSupport ? true -, groff, docSupport ? false -, libyaml, yamlSupport ? true -, libffi, fiddleSupport ? true -, ruby_2_2_2, autoreconfHook, bison, useRailsExpress ? true -, libiconv, libobjc, libunwind -}: - -let - op = stdenv.lib.optional; - ops = stdenv.lib.optionals; - patchSet = import ./rvm-patchsets.nix { inherit fetchFromGitHub; }; - config = import ./config.nix { inherit fetchFromSavannah; }; - baseruby = ruby_2_2_2.override { useRailsExpress = false; }; -in - -stdenv.mkDerivation rec { - version = with passthru; "${majorVersion}.${minorVersion}.${teenyVersion}-p${patchLevel}"; - - name = "ruby-${version}"; - - src = if useRailsExpress then fetchFromGitHub { - owner = "ruby"; - repo = "ruby"; - rev = "v2_2_2"; - sha256 = "08mw1ql2ghy483cp8xzzm78q17simn4l6phgm2gah7kjh9y3vbrn"; - } else fetchurl { - url = "http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.gz"; - sha256 = "0i4v7l8pnam0by2cza12zldlhrffqchwb2m9shlnp7j2gqqhzz2z"; - }; - - # Have `configure' avoid `/usr/bin/nroff' in non-chroot builds. - NROFF = "${groff}/bin/nroff"; - - buildInputs = ops useRailsExpress [ autoreconfHook bison ] - ++ (op fiddleSupport libffi) - ++ (ops cursesSupport [ ncurses readline ]) - ++ (op docSupport groff) - ++ (op zlibSupport zlib) - ++ (op opensslSupport openssl) - ++ (op gdbmSupport gdbm) - ++ (op yamlSupport libyaml) - # Looks like ruby fails to build on darwin without readline even if curses - # support is not enabled, so add readline to the build inputs if curses - # support is disabled (if it's enabled, we already have it) and we're - # running on darwin - ++ (op (!cursesSupport && stdenv.isDarwin) readline) - ++ (ops stdenv.isDarwin [ libiconv libobjc libunwind ]); - - enableParallelBuilding = true; - - patches = ops useRailsExpress [ - "${patchSet}/patches/ruby/2.2.2/railsexpress/01-zero-broken-tests.patch" - "${patchSet}/patches/ruby/2.2.2/railsexpress/02-improve-gc-stats.patch" - "${patchSet}/patches/ruby/2.2.2/railsexpress/03-display-more-detailed-stack-trace.patch" - "${patchSet}/patches/ruby/2.2.2/railsexpress/04-backported-bugfixes-222.patch" - ]; - - postPatch = ops useRailsExpress '' - sed -i configure.in -e '/config.guess/d' - cp ${config}/config.guess tool/ - cp ${config}/config.sub tool/ - ''; - - configureFlags = ["--enable-shared" ] - ++ op useRailsExpress "--with-baseruby=${baseruby}/bin/ruby" - # on darwin, we have /usr/include/tk.h -- so the configure script detects - # that tk is installed - ++ ( if stdenv.isDarwin then [ "--with-out-ext=tk " ] else [ ]); - - installFlags = stdenv.lib.optionalString docSupport "install-doc"; - # Bundler tries to create this directory - postInstall = '' - # Bundler tries to create this directory - mkdir -pv $out/${passthru.gemPath} - mkdir -p $out/nix-support - cat > $out/nix-support/setup-hook <<EOF - addGemPath() { - addToSearchPath GEM_PATH \$1/${passthru.gemPath} - } - - envHooks+=(addGemPath) - EOF - '' + lib.optionalString useRailsExpress '' - rbConfig=$(find $out/lib/ruby -name rbconfig.rb) - - # Prevent the baseruby from being included in the closure. - sed -i '/^ CONFIG\["BASERUBY"\]/d' $rbConfig - sed -i "s|'--with-baseruby=${baseruby}/bin/ruby'||" $rbConfig - ''; - - meta = { - license = stdenv.lib.licenses.ruby; - homepage = "http://www.ruby-lang.org/en/"; - description = "The Ruby language"; - platforms = stdenv.lib.platforms.all; - }; - - passthru = rec { - majorVersion = "2"; - minorVersion = "2"; - teenyVersion = "2"; - patchLevel = "0"; - rubyEngine = "ruby"; - libPath = "lib/${rubyEngine}/${majorVersion}.${minorVersion}.${teenyVersion}"; - gemPath = "lib/${rubyEngine}/gems/${majorVersion}.${minorVersion}.${teenyVersion}"; - }; -} diff --git a/pkgs/development/libraries/at-spi2-atk/default.nix b/pkgs/development/libraries/at-spi2-atk/default.nix index 7e6286abcce36..f5d806ff67a59 100644 --- a/pkgs/development/libraries/at-spi2-atk/default.nix +++ b/pkgs/development/libraries/at-spi2-atk/default.nix @@ -2,14 +2,14 @@ , intltool, dbus_glib, at_spi2_core, libSM }: stdenv.mkDerivation rec { - versionMajor = "2.16"; + versionMajor = "2.18"; versionMinor = "0"; moduleName = "at-spi2-atk"; name = "${moduleName}-${versionMajor}.${versionMinor}"; src = fetchurl { url = "mirror://gnome/sources/${moduleName}/${versionMajor}/${name}.tar.xz"; - sha256 = "1y9gfz1iz3wpja7s000f0bmyyvc6im5fcdl6bxwbz0v3qdgc9vvq"; + sha256 = "0xgkrnx04vaklbkzc7bzym9s0qhj8aiz4knqlxgx3vxnacsb6vaa"; }; buildInputs = [ python pkgconfig popt atk libX11 libICE xorg.libXtst libXi diff --git a/pkgs/development/libraries/at-spi2-core/default.nix b/pkgs/development/libraries/at-spi2-core/default.nix index 0fc28185501ac..b49d1ddb8040d 100644 --- a/pkgs/development/libraries/at-spi2-core/default.nix +++ b/pkgs/development/libraries/at-spi2-core/default.nix @@ -2,14 +2,14 @@ , libX11, xextproto, libSM, libICE, libXtst, libXi, gobjectIntrospection }: stdenv.mkDerivation rec { - versionMajor = "2.16"; + versionMajor = "2.18"; versionMinor = "0"; moduleName = "at-spi2-core"; name = "${moduleName}-${versionMajor}.${versionMinor}"; src = fetchurl { url = "mirror://gnome/sources/${moduleName}/${versionMajor}/${name}.tar.xz"; - sha256 = "1l3l39mw23zyjlcqidvkyqlr4gwbhplzw2hcv3qvn6p8ikxpf2qw"; + sha256 = "0xna0gnlqvzy6209klirywcm7ianazshg6pkk828g07bnrywgvhs"; }; outputs = [ "out" "doc" ]; diff --git a/pkgs/development/libraries/atk/default.nix b/pkgs/development/libraries/atk/default.nix index d5e442c738cc0..dcb90aa16cd18 100644 --- a/pkgs/development/libraries/atk/default.nix +++ b/pkgs/development/libraries/atk/default.nix @@ -1,7 +1,7 @@ { stdenv, fetchurl, pkgconfig, perl, glib, libintlOrEmpty, gobjectIntrospection }: let - ver_maj = "2.16"; + ver_maj = "2.18"; ver_min = "0"; in stdenv.mkDerivation rec { @@ -9,7 +9,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "mirror://gnome/sources/atk/${ver_maj}/${name}.tar.xz"; - sha256 = "0qp5i91kfk6rhrlam3s8ha0cz88lkyp89vsyn4pb5856c1h9hpq9"; + sha256 = "ce6c48d77bf951083029d5a396dd552d836fff3c1715d3a7022e917e46d0c92b"; }; buildInputs = libintlOrEmpty; diff --git a/pkgs/development/libraries/capnproto/default.nix b/pkgs/development/libraries/capnproto/default.nix index 8a67206d5b492..839d48e488f09 100644 --- a/pkgs/development/libraries/capnproto/default.nix +++ b/pkgs/development/libraries/capnproto/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "capnproto-${version}"; - version = "0.5.1.2"; + version = "0.5.3"; src = fetchurl { url = "https://capnproto.org/capnproto-c++-${version}.tar.gz"; - sha256 = "0a89v6sigsyj9vii0d5kqs2fdv73r71f8czzhdvqdvk3p0mlcgx2"; + sha256 = "1yvaadhgakskqq5wpv53hd6fc3pp17mrdldw4i5cvgck4iwprcfd"; }; meta = with stdenv.lib; { diff --git a/pkgs/development/libraries/clutter/1.24.nix b/pkgs/development/libraries/clutter/1.24.nix new file mode 100644 index 0000000000000..b9d45b6c62bb2 --- /dev/null +++ b/pkgs/development/libraries/clutter/1.24.nix @@ -0,0 +1,52 @@ +{ stdenv, fetchurl, glib, pkgconfig, mesa, libX11, libXext, libXfixes +, libXdamage, libXcomposite, libXi, cogl, pango, atk, json_glib, +gobjectIntrospection +}: + +let + ver_maj = "1.24"; + ver_min = "0"; +in +stdenv.mkDerivation rec { + name = "clutter-${ver_maj}.${ver_min}"; + + src = fetchurl { + url = "mirror://gnome/sources/clutter/${ver_maj}/${name}.tar.xz"; + sha256 = "85c87d5745b97af7633776419a47421aae7cea66c1b870f88cc5e06a4c5626e6"; + }; + + nativeBuildInputs = [ pkgconfig ]; + propagatedBuildInputs = + [ libX11 mesa libXext libXfixes libXdamage libXcomposite libXi cogl pango + atk json_glib gobjectIntrospection + ]; + + configureFlags = [ "--enable-introspection" ]; # needed by muffin AFAIK + + #doCheck = true; # no tests possible without a display + + meta = { + description = "Clutter, a library for creating fast, dynamic graphical user interfaces"; + + longDescription = + '' Clutter is free software library for creating fast, compelling, + portable, and dynamic graphical user interfaces. It is a core part + of MeeGo, and is supported by the open source community. Its + development is sponsored by Intel. + + Clutter uses OpenGL for rendering (and optionally OpenGL|ES for use + on mobile and embedded platforms), but wraps an easy to use, + efficient, flexible API around GL's complexity. + + Clutter enforces no particular user interface style, but provides a + rich, generic foundation for higher-level toolkits tailored to + specific needs. + ''; + + license = stdenv.lib.licenses.lgpl2Plus; + homepage = http://www.clutter-project.org/; + + maintainers = with stdenv.lib.maintainers; [ urkud lethalman ]; + platforms = stdenv.lib.platforms.mesaPlatforms; + }; +} diff --git a/pkgs/development/libraries/cogl/1.22.nix b/pkgs/development/libraries/cogl/1.22.nix new file mode 100644 index 0000000000000..ce4fda5bd4686 --- /dev/null +++ b/pkgs/development/libraries/cogl/1.22.nix @@ -0,0 +1,56 @@ +{ stdenv, fetchurl, pkgconfig, mesa_noglu, glib, gdk_pixbuf, xorg, libintlOrEmpty +, pangoSupport ? true, pango, cairo, gobjectIntrospection +, gstreamerSupport ? true, gst_all_1 }: + +let + ver_maj = "1.22"; + ver_min = "0"; +in +stdenv.mkDerivation rec { + name = "cogl-${ver_maj}.${ver_min}"; + + src = fetchurl { + url = "mirror://gnome/sources/cogl/${ver_maj}/${name}.tar.xz"; + sha256 = "689dfb5d14fc1106e9d2ded0f7930dcf7265d0bc84fa846b4f03941633eeaa91"; + }; + + nativeBuildInputs = [ pkgconfig ]; + + configureFlags = [ + "--enable-introspection" + "--enable-kms-egl-platform" + ] ++ stdenv.lib.optional gstreamerSupport "--enable-cogl-gst" + ++ stdenv.lib.optionals (!stdenv.isDarwin) [ "--enable-gles1" "--enable-gles2" ]; + + propagatedBuildInputs = with xorg; [ + glib gdk_pixbuf gobjectIntrospection + mesa_noglu libXrandr libXfixes libXcomposite libXdamage + ] + ++ libintlOrEmpty + ++ stdenv.lib.optionals gstreamerSupport [ gst_all_1.gstreamer + gst_all_1.gst-plugins-base ]; + + buildInputs = stdenv.lib.optionals pangoSupport [ pango cairo ]; + + COGL_PANGO_DEP_CFLAGS + = stdenv.lib.optionalString (stdenv.isDarwin && pangoSupport) + "-I${pango}/include/pango-1.0 -I${cairo}/include/cairo"; + + NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isDarwin "-lintl"; + + #doCheck = true; # all tests fail (no idea why) + + meta = with stdenv.lib; { + description = "A small open source library for using 3D graphics hardware for rendering"; + maintainers = with maintainers; [ lovek323 ]; + + longDescription = '' + Cogl is a small open source library for using 3D graphics hardware for + rendering. The API departs from the flat state machine style of OpenGL + and is designed to make it easy to write orthogonal components that can + render without stepping on each other's toes. + ''; + + platforms = stdenv.lib.platforms.mesaPlatforms; + }; +} diff --git a/pkgs/development/libraries/gdk-pixbuf/default.nix b/pkgs/development/libraries/gdk-pixbuf/default.nix index 754fddd101a2b..0971df78e667e 100644 --- a/pkgs/development/libraries/gdk-pixbuf/default.nix +++ b/pkgs/development/libraries/gdk-pixbuf/default.nix @@ -2,15 +2,15 @@ , jasper, libintlOrEmpty, gobjectIntrospection, doCheck ? false }: let - ver_maj = "2.31"; - ver_min = "7"; + ver_maj = "2.32"; + ver_min = "0"; in stdenv.mkDerivation rec { name = "gdk-pixbuf-${ver_maj}.${ver_min}"; src = fetchurl { url = "mirror://gnome/sources/gdk-pixbuf/${ver_maj}/${name}.tar.xz"; - sha256 = "046n9wz16kh3rpzxaiiwphf5bihxgj4g14cjn65wwmw82q4y0dj7"; + sha256 = "0rqvj5gcs2zfyyg9llm289b0xkj4mrhzxfjpjja0wx1m6vn5axjk"; }; setupHook = ./setup-hook.sh; diff --git a/pkgs/development/libraries/glib/default.nix b/pkgs/development/libraries/glib/default.nix index fb9c361c53063..137fe943637df 100644 --- a/pkgs/development/libraries/glib/default.nix +++ b/pkgs/development/libraries/glib/default.nix @@ -39,8 +39,8 @@ let ln -sr -t "$out/include/" "$out"/lib/*/include/* 2>/dev/null || true ''; - ver_maj = "2.44"; - ver_min = "1"; + ver_maj = "2.46"; + ver_min = "0"; in stdenv.mkDerivation rec { @@ -48,7 +48,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "mirror://gnome/sources/glib/${ver_maj}/${name}.tar.xz"; - sha256 = "01yabrfp64i11mrks3p1gcks99lw0zm7f5vhkc53sl4amyndw4c8"; + sha256 = "b1cee83469ae7d80f17c267c37f090414e93960bd62d2b254a5a96fbc5baacb4"; }; patches = optional stdenv.isDarwin ./darwin-compilation.patch ++ optional doCheck ./skip-timer-test.patch; diff --git a/pkgs/development/libraries/gobject-introspection/default.nix b/pkgs/development/libraries/gobject-introspection/default.nix index 50fddd9da9fdc..f429e1dc6c36b 100644 --- a/pkgs/development/libraries/gobject-introspection/default.nix +++ b/pkgs/development/libraries/gobject-introspection/default.nix @@ -5,7 +5,7 @@ # In that case its about 6MB which could be separated let - ver_maj = "1.44"; + ver_maj = "1.46"; ver_min = "0"; in stdenv.mkDerivation rec { @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "mirror://gnome/sources/gobject-introspection/${ver_maj}/${name}.tar.xz"; - sha256 = "1b972qg2yb51sdavfvb6kc19akwc15c1bwnbg81vadxamql2q33g"; + sha256 = "6658bd3c2b8813eb3e2511ee153238d09ace9d309e4574af27443d87423e4233"; }; buildInputs = [ flex bison pkgconfig python ] @@ -25,6 +25,10 @@ stdenv.mkDerivation rec { # other dependencies). configureFlags = [ "--disable-tests" ]; + preConfigure = '' + sed 's|/usr/bin/env ||' -i tools/g-ir-tool-template.in + ''; + postInstall = "rm -rf $out/share/gtk-doc"; setupHook = ./setup-hook.sh; diff --git a/pkgs/development/libraries/gtk+/3.x.nix b/pkgs/development/libraries/gtk+/3.x.nix index 8422f71985a7f..9bf95d015dd72 100644 --- a/pkgs/development/libraries/gtk+/3.x.nix +++ b/pkgs/development/libraries/gtk+/3.x.nix @@ -1,16 +1,16 @@ { stdenv, fetchurl, pkgconfig, gettext, perl , expat, glib, cairo, pango, gdk_pixbuf, atk, at_spi2_atk, gobjectIntrospection -, xorg, xlibsWrapper, wayland, libxkbcommon, epoxy +, xlibs, x11, wayland, libxkbcommon, epoxy , xineramaSupport ? stdenv.isLinux , cupsSupport ? stdenv.isLinux, cups ? null }: -assert xineramaSupport -> xorg.libXinerama != null; +assert xineramaSupport -> xlibs.libXinerama != null; assert cupsSupport -> cups != null; let - ver_maj = "3.16"; - ver_min = "7"; + ver_maj = "3.18"; + ver_min = "0"; version = "${ver_maj}.${ver_min}"; in stdenv.mkDerivation rec { @@ -18,25 +18,25 @@ stdenv.mkDerivation rec { src = fetchurl { url = "mirror://gnome/sources/gtk+/${ver_maj}/gtk+-${version}.tar.xz"; - sha256 = "1fkzdhqa1pjzb1qsh2ll3y2567ylyszks59qspx85lalvqa9ss0r"; + sha256 = "7fb8ae257403317d3852bad28d064d35f67e978b1fed8b71d5997e87204271b9"; }; nativeBuildInputs = [ pkgconfig gettext gobjectIntrospection perl ]; buildInputs = [ libxkbcommon epoxy ]; - propagatedBuildInputs = with xorg; with stdenv.lib; + propagatedBuildInputs = with xlibs; with stdenv.lib; [ expat glib cairo pango gdk_pixbuf atk at_spi2_atk libXrandr libXrender libXcomposite libXi libXcursor ] ++ optionals stdenv.isLinux [ wayland ] ++ optional xineramaSupport libXinerama ++ optional cupsSupport cups; + NIX_LDFLAGS = if stdenv.isDarwin then "-lintl" else null; + # demos fail to install, no idea where's the problem preConfigure = "sed '/^SRC_SUBDIRS /s/demos//' -i Makefile.in"; enableParallelBuilding = true; - NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isDarwin "-lintl"; - postInstall = "rm -rf $out/share/gtk-doc"; passthru = { @@ -46,7 +46,7 @@ stdenv.mkDerivation rec { ''; # workaround for bug of nix-mode for Emacs */ ''; }; - meta = with stdenv.lib; { + meta = { description = "A multi-platform toolkit for creating graphical user interfaces"; longDescription = '' @@ -62,9 +62,9 @@ stdenv.mkDerivation rec { homepage = http://www.gtk.org/; - license = licenses.lgpl2Plus; + license = stdenv.lib.licenses.lgpl2Plus; - maintainers = with maintainers; [ urkud raskin vcunat lethalman ]; - platforms = platforms.all; + maintainers = with stdenv.lib.maintainers; [ urkud raskin vcunat lethalman ]; + platforms = stdenv.lib.platforms.all; }; } diff --git a/pkgs/development/libraries/libaccounts-glib/default.nix b/pkgs/development/libraries/libaccounts-glib/default.nix index aa029ede9530e..2e2bdb11d5015 100644 --- a/pkgs/development/libraries/libaccounts-glib/default.nix +++ b/pkgs/development/libraries/libaccounts-glib/default.nix @@ -22,4 +22,6 @@ stdenv.mkDerivation rec { configurePhase = '' HAVE_GCOV_FALSE="#" ./configure $configureFlags --prefix=$out ''; + + NIX_CFLAGS_COMPILE = "-Wno-error=deprecated-declarations"; # since glib-2.46 } diff --git a/pkgs/development/libraries/libarchive/default.nix b/pkgs/development/libraries/libarchive/default.nix index 1ec253dccd630..ff33043dbaeac 100644 --- a/pkgs/development/libraries/libarchive/default.nix +++ b/pkgs/development/libraries/libarchive/default.nix @@ -1,4 +1,4 @@ -{ fetchurl, stdenv, acl, openssl, libxml2, attr, zlib, bzip2, e2fsprogs, xz +{ fetchurl, stdenv, acl, openssl, libxml2, attr, zlib, bzip2, e2fsprogs, xz, lzo , sharutils }: stdenv.mkDerivation rec { @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { # ^ it's CVE-2015-2304 specific to libarchive ]; - buildInputs = [ sharutils libxml2 zlib bzip2 openssl xz ] ++ + buildInputs = [ sharutils libxml2 zlib bzip2 openssl xz lzo ] ++ stdenv.lib.optionals stdenv.isLinux [ e2fsprogs attr acl ]; preBuild = if stdenv.isCygwin then '' @@ -26,7 +26,9 @@ stdenv.mkDerivation rec { '' else null; preFixup = '' - sed 's|-lcrypto|-L${openssl}/lib -lcrypto|' -i $out/lib/libarchive.la + sed -i $out/lib/libarchive.la \ + -e 's|-lcrypto|-L${openssl}/lib -lcrypto|' \ + -e 's|-llzo2|-L${lzo}/lib -llzo2|' ''; meta = { diff --git a/pkgs/development/libraries/libjpeg-turbo/default.nix b/pkgs/development/libraries/libjpeg-turbo/default.nix index 158b8825db490..3660a652e79dc 100644 --- a/pkgs/development/libraries/libjpeg-turbo/default.nix +++ b/pkgs/development/libraries/libjpeg-turbo/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, nasm }: stdenv.mkDerivation rec { - name = "libjpeg-turbo-1.4.1"; + name = "libjpeg-turbo-1.4.2"; src = fetchurl { url = "mirror://sourceforge/libjpeg-turbo/${name}.tar.gz"; - sha256 = "027vz97064bjmwj7gdw2p47y1437w08j54frpgzmnql5rvabmxab"; + sha256 = "0gi349hp1x7mb98s4mf66sb2xay2kjjxj9ihrriw0yiy0k9va6sj"; }; buildInputs = [ nasm ]; diff --git a/pkgs/development/libraries/libpsl/default.nix b/pkgs/development/libraries/libpsl/default.nix index 25bd92add38d7..913341c49b94a 100644 --- a/pkgs/development/libraries/libpsl/default.nix +++ b/pkgs/development/libraries/libpsl/default.nix @@ -28,6 +28,10 @@ in stdenv.mkDerivation { buildInputs = [ icu libxslt ]; nativeBuildInputs = [ autoreconfHook docbook_xsl gtk_doc pkgconfig ]; + postPatch = '' + substituteInPlace src/psl.c --replace bits/stat.h sys/stat.h + ''; + preAutoreconf = '' mkdir m4 gtkdocize diff --git a/pkgs/development/libraries/pango/default.nix b/pkgs/development/libraries/pango/default.nix index 2db67041ec347..e7106b9877e0f 100644 --- a/pkgs/development/libraries/pango/default.nix +++ b/pkgs/development/libraries/pango/default.nix @@ -3,26 +3,26 @@ }: let - ver_maj = "1.36"; - ver_min = "8"; + ver_maj = "1.38"; + ver_min = "0"; in stdenv.mkDerivation rec { name = "pango-${ver_maj}.${ver_min}"; src = fetchurl { url = "mirror://gnome/sources/pango/${ver_maj}/${name}.tar.xz"; - sha256 = "01rdzjh68w8l5zn0648yibyarj8p6g7yfn59nw5awaz1i8dvbnqq"; + sha256 = "0v12gi7f01iq3z852pclpnmkbcksbvpcmiazmklkx1dd9fbpakhx"; }; buildInputs = with stdenv.lib; [ gobjectIntrospection ] - ++ optionals stdenv.isDarwin [ fontconfig ]; + ++ optional stdenv.isDarwin fontconfig; nativeBuildInputs = [ pkgconfig ]; propagatedBuildInputs = [ xlibsWrapper glib cairo libpng fontconfig freetype harfbuzz ] ++ libintlOrEmpty; enableParallelBuilding = true; - doCheck = false; # test-layout fails on 1.36.8 + doCheck = false; # test-layout fails on 1.38.0 # jww (2014-05-05): The tests currently fail on Darwin: # # ERROR:testiter.c:139:iter_char_test: assertion failed: (extents.width == x1 - x0) @@ -31,7 +31,7 @@ stdenv.mkDerivation rec { postInstall = "rm -rf $out/share/gtk-doc"; - meta = { + meta = with stdenv.lib; { description = "A library for laying out and rendering of text, with an emphasis on internationalization"; longDescription = '' @@ -43,9 +43,9 @@ stdenv.mkDerivation rec { ''; homepage = http://www.pango.org/; - license = stdenv.lib.licenses.lgpl2Plus; + license = licenses.lgpl2Plus; - maintainers = with stdenv.lib.maintainers; [ raskin urkud ]; - hydraPlatforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin; + maintainers = with maintainers; [ raskin urkud ]; + platforms = with platforms; linux ++ darwin; }; } diff --git a/pkgs/development/libraries/pcre/cve-2015-3210.patch b/pkgs/development/libraries/pcre/cve-2015-3210.patch new file mode 100644 index 0000000000000..c97849fb70c76 --- /dev/null +++ b/pkgs/development/libraries/pcre/cve-2015-3210.patch @@ -0,0 +1,87 @@ +From 68ff1beb43bb3d4d8838f3285c97023d1e50513a Mon Sep 17 00:00:00 2001 +From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> +Date: Fri, 15 May 2015 17:17:03 +0000 +Subject: [PATCH] Fix buffer overflow for named recursive back reference when + the name is duplicated. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Upstream commit ported to pcre-8.37: + +commit 4b79af6b4cbeb5326ae5e4d83f3e935e00286c19 +Author: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> +Date: Fri May 15 17:17:03 2015 +0000 + + Fix buffer overflow for named recursive back reference when the name is + duplicated. + + git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1558 2f5784b3-3f2a-0410-8824-cb99058d5e15 + +This fixes CVE-2015-3210. + +Signed-off-by: Petr PÃsaÅ™ <ppisar@redhat.com> +--- + pcre_compile.c | 16 ++++++++++++++-- + testdata/testinput2 | 2 ++ + testdata/testoutput2 | 2 ++ + 3 files changed, 18 insertions(+), 2 deletions(-) + +diff --git a/pcre_compile.c b/pcre_compile.c +index 0efad26..6f06912 100644 +--- a/pcre_compile.c ++++ b/pcre_compile.c +@@ -7173,14 +7173,26 @@ for (;; ptr++) + number. If the name is not found, set the value to 0 for a forward + reference. */ + ++ recno = 0; + ng = cd->named_groups; + for (i = 0; i < cd->names_found; i++, ng++) + { + if (namelen == ng->length && + STRNCMP_UC_UC(name, ng->name, namelen) == 0) +- break; ++ { ++ open_capitem *oc; ++ recno = ng->number; ++ if (is_recurse) break; ++ for (oc = cd->open_caps; oc != NULL; oc = oc->next) ++ { ++ if (oc->number == recno) ++ { ++ oc->flag = TRUE; ++ break; ++ } ++ } ++ } + } +- recno = (i < cd->names_found)? ng->number : 0; + + /* Count named back references. */ + +diff --git a/testdata/testinput2 b/testdata/testinput2 +index 58fe53b..83bb471 100644 +--- a/testdata/testinput2 ++++ b/testdata/testinput2 +@@ -4152,4 +4152,6 @@ backtracking verbs. --/ + + /((?2){73}(?2))((?1))/ + ++"(?J)(?'d'(?'d'\g{d}))" ++ + /-- End of testinput2 --/ +diff --git a/testdata/testoutput2 b/testdata/testoutput2 +index b718df0..7dff52a 100644 +--- a/testdata/testoutput2 ++++ b/testdata/testoutput2 +@@ -14423,4 +14423,6 @@ Failed: lookbehind assertion is not fixed length at offset 17 + + /((?2){73}(?2))((?1))/ + ++"(?J)(?'d'(?'d'\g{d}))" ++ + /-- End of testinput2 --/ +-- +2.4.3 + diff --git a/pkgs/development/libraries/pcre/cve-2015-5073.patch b/pkgs/development/libraries/pcre/cve-2015-5073.patch new file mode 100644 index 0000000000000..16fd45c87b1da --- /dev/null +++ b/pkgs/development/libraries/pcre/cve-2015-5073.patch @@ -0,0 +1,68 @@ +From 354e1f8e921dcb9cf2f3a5eac93cd826d01a7d8a Mon Sep 17 00:00:00 2001 +From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> +Date: Tue, 23 Jun 2015 16:34:53 +0000 +Subject: [PATCH] Fix buffer overflow for forward reference within backward + assertion with excess closing parenthesis. Bugzilla 1651. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This is upstream commit ported to 8.37: + +commit 764692f9aea9eab50fdba6cb537441d8b34c6c37 +Author: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> +Date: Tue Jun 23 16:34:53 2015 +0000 + + Fix buffer overflow for forward reference within backward assertion with excess + closing parenthesis. Bugzilla 1651. + + git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1571 2f5784b3-3f2a-0410-8824-cb99058d5e15 + +It fixes CVE-2015-5073. + +Signed-off-by: Petr PÃsaÅ™ <ppisar@redhat.com> +--- + pcre_compile.c | 2 +- + testdata/testinput2 | 2 ++ + testdata/testoutput2 | 3 +++ + 3 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/pcre_compile.c b/pcre_compile.c +index 6f06912..b66b1f6 100644 +--- a/pcre_compile.c ++++ b/pcre_compile.c +@@ -9392,7 +9392,7 @@ OP_RECURSE that are not fixed length get a diagnosic with a useful offset. The + exceptional ones forgo this. We scan the pattern to check that they are fixed + length, and set their lengths. */ + +-if (cd->check_lookbehind) ++if (errorcode == 0 && cd->check_lookbehind) + { + pcre_uchar *cc = (pcre_uchar *)codestart; + +diff --git a/testdata/testinput2 b/testdata/testinput2 +index 83bb471..5cc9ce6 100644 +--- a/testdata/testinput2 ++++ b/testdata/testinput2 +@@ -4154,4 +4154,6 @@ backtracking verbs. --/ + + "(?J)(?'d'(?'d'\g{d}))" + ++/(?=di(?<=(?1))|(?=(.))))/ ++ + /-- End of testinput2 --/ +diff --git a/testdata/testoutput2 b/testdata/testoutput2 +index 7dff52a..4decb8d 100644 +--- a/testdata/testoutput2 ++++ b/testdata/testoutput2 +@@ -14425,4 +14425,7 @@ Failed: lookbehind assertion is not fixed length at offset 17 + + "(?J)(?'d'(?'d'\g{d}))" + ++/(?=di(?<=(?1))|(?=(.))))/ ++Failed: unmatched parentheses at offset 23 ++ + /-- End of testinput2 --/ +-- +2.4.3 + diff --git a/pkgs/development/libraries/pcre/default.nix b/pkgs/development/libraries/pcre/default.nix index f32af2a0e1e4d..3370e910565e1 100644 --- a/pkgs/development/libraries/pcre/default.nix +++ b/pkgs/development/libraries/pcre/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, autoreconfHook, unicodeSupport ? true, cplusplusSupport ? true +{ stdenv, fetchurl, unicodeSupport ? true, cplusplusSupport ? true , windows ? null }: @@ -12,12 +12,10 @@ stdenv.mkDerivation rec { sha256 = "17bqykp604p7376wj3q2nmjdhrb6v1ny8q08zdwi7qvc02l9wrsi"; }; - nativeBuildInputs = [ autoreconfHook ]; - - # A bundle of fixes which should be removed for 8.38 - patchPhase = '' - patch -p0 -i ${./fixes.patch} - ''; + patches = + [ ./cve-2015-3210.patch + ./cve-2015-5073.patch + ]; outputs = [ "out" "doc" "man" ]; diff --git a/pkgs/development/libraries/pcre/fixes.patch b/pkgs/development/libraries/pcre/fixes.patch deleted file mode 100644 index 3b39128d7e497..0000000000000 --- a/pkgs/development/libraries/pcre/fixes.patch +++ /dev/null @@ -1,3538 +0,0 @@ -Index: pcre_jit_compile.c -=================================================================== ---- pcre_jit_compile.c (revision 1554) -+++ pcre_jit_compile.c (working copy) -@@ -1064,6 +1064,7 @@ - pcre_uchar *end = NULL; - int private_data_ptr = *private_data_start; - int space, size, bracketlen; -+BOOL repeat_check = TRUE; - - while (cc < ccend) - { -@@ -1071,9 +1072,10 @@ - size = 0; - bracketlen = 0; - if (private_data_ptr > SLJIT_MAX_LOCAL_SIZE) -- return; -+ break; - -- if (*cc == OP_ONCE || *cc == OP_ONCE_NC || *cc == OP_BRA || *cc == OP_CBRA || *cc == OP_COND) -+ if (repeat_check && (*cc == OP_ONCE || *cc == OP_ONCE_NC || *cc == OP_BRA || *cc == OP_CBRA || *cc == OP_COND)) -+ { - if (detect_repeat(common, cc)) - { - /* These brackets are converted to repeats, so no global -@@ -1081,6 +1083,8 @@ - if (cc >= end) - end = bracketend(cc); - } -+ } -+ repeat_check = TRUE; - - switch(*cc) - { -@@ -1136,6 +1140,13 @@ - bracketlen = 1 + LINK_SIZE + IMM2_SIZE; - break; - -+ case OP_BRAZERO: -+ case OP_BRAMINZERO: -+ case OP_BRAPOSZERO: -+ repeat_check = FALSE; -+ size = 1; -+ break; -+ - CASE_ITERATOR_PRIVATE_DATA_1 - space = 1; - size = -2; -@@ -1162,12 +1173,17 @@ - size = 1; - break; - -- CASE_ITERATOR_TYPE_PRIVATE_DATA_2B -+ case OP_TYPEUPTO: - if (cc[1 + IMM2_SIZE] != OP_ANYNL && cc[1 + IMM2_SIZE] != OP_EXTUNI) - space = 2; - size = 1 + IMM2_SIZE; - break; - -+ case OP_TYPEMINUPTO: -+ space = 2; -+ size = 1 + IMM2_SIZE; -+ break; -+ - case OP_CLASS: - case OP_NCLASS: - size += 1 + 32 / sizeof(pcre_uchar); -@@ -1316,6 +1332,13 @@ - cc += 1 + LINK_SIZE + IMM2_SIZE; - break; - -+ case OP_THEN: -+ stack_restore = TRUE; -+ if (common->control_head_ptr != 0) -+ *needs_control_head = TRUE; -+ cc ++; -+ break; -+ - default: - stack_restore = TRUE; - /* Fall through. */ -@@ -2220,6 +2243,7 @@ - SLJIT_ASSERT_STOP(); - break; - } -+ SLJIT_ASSERT(current > (sljit_sw*)current[-1]); - current = (sljit_sw*)current[-1]; - } - return -1; -@@ -3209,7 +3233,7 @@ - bytes[0] = len; - } - --static int scan_prefix(compiler_common *common, pcre_uchar *cc, pcre_uint32 *chars, pcre_uint8 *bytes, int max_chars) -+static int scan_prefix(compiler_common *common, pcre_uchar *cc, pcre_uint32 *chars, pcre_uint8 *bytes, int max_chars, pcre_uint32 *rec_count) - { - /* Recursive function, which scans prefix literals. */ - BOOL last, any, caseless; -@@ -3227,9 +3251,14 @@ - repeat = 1; - while (TRUE) - { -+ if (*rec_count == 0) -+ return 0; -+ (*rec_count)--; -+ - last = TRUE; - any = FALSE; - caseless = FALSE; -+ - switch (*cc) - { - case OP_CHARI: -@@ -3291,7 +3320,7 @@ - #ifdef SUPPORT_UTF - if (common->utf && HAS_EXTRALEN(*cc)) len += GET_EXTRALEN(*cc); - #endif -- max_chars = scan_prefix(common, cc + len, chars, bytes, max_chars); -+ max_chars = scan_prefix(common, cc + len, chars, bytes, max_chars, rec_count); - if (max_chars == 0) - return consumed; - last = FALSE; -@@ -3314,7 +3343,7 @@ - alternative = cc + GET(cc, 1); - while (*alternative == OP_ALT) - { -- max_chars = scan_prefix(common, alternative + 1 + LINK_SIZE, chars, bytes, max_chars); -+ max_chars = scan_prefix(common, alternative + 1 + LINK_SIZE, chars, bytes, max_chars, rec_count); - if (max_chars == 0) - return consumed; - alternative += GET(alternative, 1); -@@ -3556,6 +3585,7 @@ - int range_right = -1, range_len = 3 - 1; - sljit_ub *update_table = NULL; - BOOL in_range; -+pcre_uint32 rec_count; - - for (i = 0; i < MAX_N_CHARS; i++) - { -@@ -3564,7 +3594,8 @@ - bytes[i * MAX_N_BYTES] = 0; - } - --max = scan_prefix(common, common->start, chars, bytes, MAX_N_CHARS); -+rec_count = 10000; -+max = scan_prefix(common, common->start, chars, bytes, MAX_N_CHARS, &rec_count); - - if (max <= 1) - return FALSE; -@@ -4311,8 +4342,10 @@ - case 4: - if ((ranges[1] - ranges[0]) == (ranges[3] - ranges[2]) - && (ranges[0] | (ranges[2] - ranges[0])) == ranges[2] -+ && (ranges[1] & (ranges[2] - ranges[0])) == 0 - && is_powerof2(ranges[2] - ranges[0])) - { -+ SLJIT_ASSERT((ranges[0] & (ranges[2] - ranges[0])) == 0 && (ranges[2] & ranges[3] & (ranges[2] - ranges[0])) != 0); - OP2(SLJIT_OR, TMP1, 0, TMP1, 0, SLJIT_IMM, ranges[2] - ranges[0]); - if (ranges[2] + 1 != ranges[3]) - { -@@ -4900,9 +4933,10 @@ - if (!check_class_ranges(common, (const pcre_uint8 *)cc, FALSE, TRUE, list)) - { - #ifdef COMPILE_PCRE8 -- SLJIT_ASSERT(common->utf); -+ jump = NULL; -+ if (common->utf) - #endif -- jump = CMP(SLJIT_GREATER, TMP1, 0, SLJIT_IMM, 255); -+ jump = CMP(SLJIT_GREATER, TMP1, 0, SLJIT_IMM, 255); - - OP2(SLJIT_AND, TMP2, 0, TMP1, 0, SLJIT_IMM, 0x7); - OP2(SLJIT_LSHR, TMP1, 0, TMP1, 0, SLJIT_IMM, 3); -@@ -4911,7 +4945,10 @@ - OP2(SLJIT_AND | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, TMP2, 0); - add_jump(compiler, list, JUMP(SLJIT_NOT_ZERO)); - -- JUMPHERE(jump); -+#ifdef COMPILE_PCRE8 -+ if (common->utf) -+#endif -+ JUMPHERE(jump); - } - - OP1(SLJIT_MOV, TMP1, 0, TMP3, 0); -@@ -7665,6 +7702,10 @@ - OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(0), STR_PTR, 0); - } - -+ /* Even if the match is empty, we need to reset the control head. */ -+ if (needs_control_head) -+ OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_SP), common->control_head_ptr, SLJIT_MEM1(STACK_TOP), STACK(stack)); -+ - if (opcode == OP_SBRAPOS || opcode == OP_SCBRAPOS) - add_jump(compiler, &emptymatch, CMP(SLJIT_EQUAL, TMP1, 0, STR_PTR, 0)); - -@@ -7692,6 +7733,10 @@ - OP1(SLJIT_MOV, SLJIT_MEM1(TMP2), (framesize + 1) * sizeof(sljit_sw), STR_PTR, 0); - } - -+ /* Even if the match is empty, we need to reset the control head. */ -+ if (needs_control_head) -+ OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_SP), common->control_head_ptr, SLJIT_MEM1(STACK_TOP), STACK(stack)); -+ - if (opcode == OP_SBRAPOS || opcode == OP_SCBRAPOS) - add_jump(compiler, &emptymatch, CMP(SLJIT_EQUAL, TMP1, 0, STR_PTR, 0)); - -@@ -7704,9 +7749,6 @@ - } - } - -- if (needs_control_head) -- OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_SP), common->control_head_ptr, SLJIT_MEM1(STACK_TOP), STACK(stack)); -- - JUMPTO(SLJIT_JUMP, loop); - flush_stubs(common); - -@@ -8441,8 +8483,7 @@ - OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(1), STR_PTR, 0); - } - BACKTRACK_AS(braminzero_backtrack)->matchingpath = LABEL(); -- if (cc[1] > OP_ASSERTBACK_NOT) -- count_match(common); -+ count_match(common); - break; - - case OP_ONCE: -@@ -9624,7 +9665,7 @@ - DEFINE_COMPILER; - pcre_uchar *cc = common->start + common->currententry->start; - pcre_uchar *ccbegin = cc + 1 + LINK_SIZE + (*cc == OP_BRA ? 0 : IMM2_SIZE); --pcre_uchar *ccend = bracketend(cc); -+pcre_uchar *ccend = bracketend(cc) - (1 + LINK_SIZE); - BOOL needs_control_head; - int framesize = get_framesize(common, cc, NULL, TRUE, &needs_control_head); - int private_data_size = get_private_data_copy_length(common, ccbegin, ccend, needs_control_head); -@@ -9648,6 +9689,7 @@ - - sljit_emit_fast_enter(compiler, TMP2, 0); - allocate_stack(common, private_data_size + framesize + alternativesize); -+count_match(common); - OP1(SLJIT_MOV, SLJIT_MEM1(STACK_TOP), STACK(private_data_size + framesize + alternativesize - 1), TMP2, 0); - copy_private_data(common, ccbegin, ccend, TRUE, private_data_size + framesize + alternativesize, framesize + alternativesize, needs_control_head); - if (needs_control_head) -@@ -9992,6 +10034,7 @@ - OP1(SLJIT_MOV_UI, TMP1, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, limit_match)); - OP1(SLJIT_MOV, STACK_TOP, 0, SLJIT_MEM1(TMP2), SLJIT_OFFSETOF(struct sljit_stack, base)); - OP1(SLJIT_MOV, STACK_LIMIT, 0, SLJIT_MEM1(TMP2), SLJIT_OFFSETOF(struct sljit_stack, limit)); -+OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, SLJIT_IMM, 1); - OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_SP), LIMIT_MATCH, TMP1, 0); - - if (mode == JIT_PARTIAL_SOFT_COMPILE) -Index: RunGrepTest -=================================================================== ---- RunGrepTest (revision 1554) -+++ RunGrepTest (working copy) -@@ -512,6 +512,14 @@ - (cd $srcdir; $valgrind $pcregrep --line-offsets '(?<=\Ka)' $builddir/testtemp1grep) >>testtrygrep 2>&1 - echo "RC=$?" >>testtrygrep - -+echo "---------------------------- Test 108 ------------------------------" >>testtrygrep -+(cd $srcdir; $valgrind $pcregrep -lq PATTERN ./testdata/grepinput ./testdata/grepinputx) >>testtrygrep -+echo "RC=$?" >>testtrygrep -+ -+echo "---------------------------- Test 109 -----------------------------" >>testtrygrep -+(cd $srcdir; $valgrind $pcregrep -cq lazy ./testdata/grepinput*) >>testtrygrep -+echo "RC=$?" >>testtrygrep -+ - # Now compare the results. - - $cf $srcdir/testdata/grepoutput testtrygrep -Index: pcre_compile.c -=================================================================== ---- pcre_compile.c (revision 1554) -+++ pcre_compile.c (working copy) -@@ -174,7 +174,7 @@ - -ESC_Z, CHAR_LEFT_SQUARE_BRACKET, - CHAR_BACKSLASH, CHAR_RIGHT_SQUARE_BRACKET, - CHAR_CIRCUMFLEX_ACCENT, CHAR_UNDERSCORE, -- CHAR_GRAVE_ACCENT, 7, -+ CHAR_GRAVE_ACCENT, ESC_a, - -ESC_b, 0, - -ESC_d, ESC_e, - ESC_f, 0, -@@ -202,9 +202,9 @@ - /* 68 */ 0, 0, '|', ',', '%', '_', '>', '?', - /* 70 */ 0, 0, 0, 0, 0, 0, 0, 0, - /* 78 */ 0, '`', ':', '#', '@', '\'', '=', '"', --/* 80 */ 0, 7, -ESC_b, 0, -ESC_d, ESC_e, ESC_f, 0, -+/* 80 */ 0, ESC_a, -ESC_b, 0, -ESC_d, ESC_e, ESC_f, 0, - /* 88 */-ESC_h, 0, 0, '{', 0, 0, 0, 0, --/* 90 */ 0, 0, -ESC_k, 'l', 0, ESC_n, 0, -ESC_p, -+/* 90 */ 0, 0, -ESC_k, 0, 0, ESC_n, 0, -ESC_p, - /* 98 */ 0, ESC_r, 0, '}', 0, 0, 0, 0, - /* A0 */ 0, '~', -ESC_s, ESC_tee, 0,-ESC_v, -ESC_w, 0, - /* A8 */ 0,-ESC_z, 0, 0, 0, '[', 0, 0, -@@ -219,6 +219,12 @@ - /* F0 */ 0, 0, 0, 0, 0, 0, 0, 0, - /* F8 */ 0, 0, 0, 0, 0, 0, 0, 0 - }; -+ -+/* We also need a table of characters that may follow \c in an EBCDIC -+environment for characters 0-31. */ -+ -+static unsigned char ebcdic_escape_c[] = "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"; -+ - #endif - - -@@ -458,7 +464,7 @@ - "range out of order in character class\0" - "nothing to repeat\0" - /* 10 */ -- "operand of unlimited repeat could match the empty string\0" /** DEAD **/ -+ "internal error: invalid forward reference offset\0" - "internal error: unexpected repeat\0" - "unrecognized character after (? or (?-\0" - "POSIX named classes are supported only within a class\0" -@@ -527,7 +533,11 @@ - "different names for subpatterns of the same number are not allowed\0" - "(*MARK) must have an argument\0" - "this version of PCRE is not compiled with Unicode property support\0" -+#ifndef EBCDIC - "\\c must be followed by an ASCII character\0" -+#else -+ "\\c must be followed by a letter or one of [\\]^_?\0" -+#endif - "\\k is not followed by a braced, angle-bracketed, or quoted name\0" - /* 70 */ - "internal error: unknown opcode in find_fixedlength()\0" -@@ -1425,7 +1435,16 @@ - c ^= 0x40; - #else /* EBCDIC coding */ - if (c >= CHAR_a && c <= CHAR_z) c += 64; -- c ^= 0xC0; -+ if (c == CHAR_QUESTION_MARK) -+ c = ('\\' == 188 && '`' == 74)? 0x5f : 0xff; -+ else -+ { -+ for (i = 0; i < 32; i++) -+ { -+ if (c == ebcdic_escape_c[i]) break; -+ } -+ if (i < 32) c = i; else *errorcodeptr = ERR68; -+ } - #endif - break; - -@@ -1799,7 +1818,7 @@ - case OP_ASSERTBACK: - case OP_ASSERTBACK_NOT: - do cc += GET(cc, 1); while (*cc == OP_ALT); -- cc += PRIV(OP_lengths)[*cc]; -+ cc += 1 + LINK_SIZE; - break; - - /* Skip over things that don't match chars */ -@@ -2487,7 +2506,7 @@ - if (c == OP_BRA || c == OP_BRAPOS || - c == OP_CBRA || c == OP_CBRAPOS || - c == OP_ONCE || c == OP_ONCE_NC || -- c == OP_COND) -+ c == OP_COND || c == OP_SCOND) - { - BOOL empty_branch; - if (GET(code, 1) == 0) return TRUE; /* Hit unclosed bracket */ -@@ -3886,11 +3905,11 @@ - The problem in trying to be exactly like Perl is in the handling of escapes. We - have to be sure that [abc[:x\]pqr] is *not* treated as containing a POSIX - class, but [abc[:x\]pqr:]] is (so that an error can be generated). The code --below handles the special case of \], but does not try to do any other escape --processing. This makes it different from Perl for cases such as [:l\ower:] --where Perl recognizes it as the POSIX class "lower" but PCRE does not recognize --"l\ower". This is a lesser evil than not diagnosing bad classes when Perl does, --I think. -+below handles the special cases \\ and \], but does not try to do any other -+escape processing. This makes it different from Perl for cases such as -+[:l\ower:] where Perl recognizes it as the POSIX class "lower" but PCRE does -+not recognize "l\ower". This is a lesser evil than not diagnosing bad classes -+when Perl does, I think. - - A user pointed out that PCRE was rejecting [:a[:digit:]] whereas Perl was not. - It seems that the appearance of a nested POSIX class supersedes an apparent -@@ -3917,21 +3936,16 @@ - terminator = *(++ptr); /* compiler warns about "non-constant" initializer. */ - for (++ptr; *ptr != CHAR_NULL; ptr++) - { -- if (*ptr == CHAR_BACKSLASH && ptr[1] == CHAR_RIGHT_SQUARE_BRACKET) -+ if (*ptr == CHAR_BACKSLASH && -+ (ptr[1] == CHAR_RIGHT_SQUARE_BRACKET || -+ ptr[1] == CHAR_BACKSLASH)) - ptr++; -- else if (*ptr == CHAR_RIGHT_SQUARE_BRACKET) return FALSE; -- else -+ else if ((*ptr == CHAR_LEFT_SQUARE_BRACKET && ptr[1] == terminator) || -+ *ptr == CHAR_RIGHT_SQUARE_BRACKET) return FALSE; -+ else if (*ptr == terminator && ptr[1] == CHAR_RIGHT_SQUARE_BRACKET) - { -- if (*ptr == terminator && ptr[1] == CHAR_RIGHT_SQUARE_BRACKET) -- { -- *endptr = ptr; -- return TRUE; -- } -- if (*ptr == CHAR_LEFT_SQUARE_BRACKET && -- (ptr[1] == CHAR_COLON || ptr[1] == CHAR_DOT || -- ptr[1] == CHAR_EQUALS_SIGN) && -- check_posix_syntax(ptr, endptr)) -- return FALSE; -+ *endptr = ptr; -+ return TRUE; - } - } - return FALSE; -@@ -3985,11 +3999,12 @@ - is called, the partially compiled regex must be temporarily terminated with - OP_END. - --This function has been extended with the possibility of forward references for --recursions and subroutine calls. It must also check the list of such references --for the group we are dealing with. If it finds that one of the recursions in --the current group is on this list, it adjusts the offset in the list, not the --value in the reference (which is a group number). -+This function has been extended to cope with forward references for recursions -+and subroutine calls. It must check the list of such references for the -+group we are dealing with. If it finds that one of the recursions in the -+current group is on this list, it does not adjust the value in the reference -+(which is a group number). After the group has been scanned, all the offsets in -+the forward reference list for the group are adjusted. - - Arguments: - group points to the start of the group -@@ -4005,29 +4020,21 @@ - adjust_recurse(pcre_uchar *group, int adjust, BOOL utf, compile_data *cd, - size_t save_hwm_offset) - { -+int offset; -+pcre_uchar *hc; - pcre_uchar *ptr = group; - - while ((ptr = (pcre_uchar *)find_recurse(ptr, utf)) != NULL) - { -- int offset; -- pcre_uchar *hc; -- -- /* See if this recursion is on the forward reference list. If so, adjust the -- reference. */ -- - for (hc = (pcre_uchar *)cd->start_workspace + save_hwm_offset; hc < cd->hwm; - hc += LINK_SIZE) - { - offset = (int)GET(hc, 0); -- if (cd->start_code + offset == ptr + 1) -- { -- PUT(hc, 0, offset + adjust); -- break; -- } -+ if (cd->start_code + offset == ptr + 1) break; - } - -- /* Otherwise, adjust the recursion offset if it's after the start of this -- group. */ -+ /* If we have not found this recursion on the forward reference list, adjust -+ the recursion's offset if it's after the start of this group. */ - - if (hc >= cd->hwm) - { -@@ -4037,6 +4044,15 @@ - - ptr += 1 + LINK_SIZE; - } -+ -+/* Now adjust all forward reference offsets for the group. */ -+ -+for (hc = (pcre_uchar *)cd->start_workspace + save_hwm_offset; hc < cd->hwm; -+ hc += LINK_SIZE) -+ { -+ offset = (int)GET(hc, 0); -+ PUT(hc, 0, offset + adjust); -+ } - } - - -@@ -4465,7 +4481,7 @@ - const pcre_uchar *nestptr = NULL; - pcre_uchar *previous = NULL; - pcre_uchar *previous_callout = NULL; --size_t save_hwm_offset = 0; -+size_t item_hwm_offset = 0; - pcre_uint8 classbits[32]; - - /* We can fish out the UTF-8 setting once and for all into a BOOL, but we -@@ -4623,8 +4639,7 @@ - /* In the real compile phase, just check the workspace used by the forward - reference list. */ - -- else if (cd->hwm > cd->start_workspace + cd->workspace_size - -- WORK_SIZE_SAFETY_MARGIN) -+ else if (cd->hwm > cd->start_workspace + cd->workspace_size) - { - *errorcodeptr = ERR52; - goto FAILED; -@@ -4767,6 +4782,7 @@ - zeroreqchar = reqchar; - zeroreqcharflags = reqcharflags; - previous = code; -+ item_hwm_offset = cd->hwm - cd->start_workspace; - *code++ = ((options & PCRE_DOTALL) != 0)? OP_ALLANY: OP_ANY; - break; - -@@ -4818,6 +4834,7 @@ - /* Handle a real character class. */ - - previous = code; -+ item_hwm_offset = cd->hwm - cd->start_workspace; - - /* PCRE supports POSIX class stuff inside a class. Perl gives an error if - they are encountered at the top level, so we'll do that too. */ -@@ -5195,9 +5212,9 @@ - cd, PRIV(vspace_list)); - continue; - --#ifdef SUPPORT_UCP - case ESC_p: - case ESC_P: -+#ifdef SUPPORT_UCP - { - BOOL negated; - unsigned int ptype = 0, pdata = 0; -@@ -5211,6 +5228,9 @@ - class_has_8bitchar--; /* Undo! */ - continue; - } -+#else -+ *errorcodeptr = ERR45; -+ goto FAILED; - #endif - /* Unrecognized escapes are faulted if PCRE is running in its - strict mode. By default, for compatibility with Perl, they are -@@ -5930,7 +5950,7 @@ - { - register int i; - int len = (int)(code - previous); -- size_t base_hwm_offset = save_hwm_offset; -+ size_t base_hwm_offset = item_hwm_offset; - pcre_uchar *bralink = NULL; - pcre_uchar *brazeroptr = NULL; - -@@ -5985,7 +6005,7 @@ - if (repeat_max <= 1) /* Covers 0, 1, and unlimited */ - { - *code = OP_END; -- adjust_recurse(previous, 1, utf, cd, save_hwm_offset); -+ adjust_recurse(previous, 1, utf, cd, item_hwm_offset); - memmove(previous + 1, previous, IN_UCHARS(len)); - code++; - if (repeat_max == 0) -@@ -6009,7 +6029,7 @@ - { - int offset; - *code = OP_END; -- adjust_recurse(previous, 2 + LINK_SIZE, utf, cd, save_hwm_offset); -+ adjust_recurse(previous, 2 + LINK_SIZE, utf, cd, item_hwm_offset); - memmove(previous + 2 + LINK_SIZE, previous, IN_UCHARS(len)); - code += 2 + LINK_SIZE; - *previous++ = OP_BRAZERO + repeat_type; -@@ -6254,6 +6274,12 @@ - while (*scode == OP_ALT); - } - -+ /* A conditional group with only one branch has an implicit empty -+ alternative branch. */ -+ -+ if (*bracode == OP_COND && bracode[GET(bracode,1)] != OP_ALT) -+ *bracode = OP_SCOND; -+ - /* Handle possessive quantifiers. */ - - if (possessive_quantifier) -@@ -6267,11 +6293,11 @@ - { - int nlen = (int)(code - bracode); - *code = OP_END; -- adjust_recurse(bracode, 1 + LINK_SIZE, utf, cd, save_hwm_offset); -+ adjust_recurse(bracode, 1 + LINK_SIZE, utf, cd, item_hwm_offset); - memmove(bracode + 1 + LINK_SIZE, bracode, IN_UCHARS(nlen)); - code += 1 + LINK_SIZE; - nlen += 1 + LINK_SIZE; -- *bracode = OP_BRAPOS; -+ *bracode = (*bracode == OP_COND)? OP_BRAPOS : OP_SBRAPOS; - *code++ = OP_KETRPOS; - PUTINC(code, 0, nlen); - PUT(bracode, 1, nlen); -@@ -6401,7 +6427,7 @@ - else - { - *code = OP_END; -- adjust_recurse(tempcode, 1 + LINK_SIZE, utf, cd, save_hwm_offset); -+ adjust_recurse(tempcode, 1 + LINK_SIZE, utf, cd, item_hwm_offset); - memmove(tempcode + 1 + LINK_SIZE, tempcode, IN_UCHARS(len)); - code += 1 + LINK_SIZE; - len += 1 + LINK_SIZE; -@@ -6450,7 +6476,7 @@ - - default: - *code = OP_END; -- adjust_recurse(tempcode, 1 + LINK_SIZE, utf, cd, save_hwm_offset); -+ adjust_recurse(tempcode, 1 + LINK_SIZE, utf, cd, item_hwm_offset); - memmove(tempcode + 1 + LINK_SIZE, tempcode, IN_UCHARS(len)); - code += 1 + LINK_SIZE; - len += 1 + LINK_SIZE; -@@ -6623,7 +6649,7 @@ - newoptions = options; - skipbytes = 0; - bravalue = OP_CBRA; -- save_hwm_offset = cd->hwm - cd->start_workspace; -+ item_hwm_offset = cd->hwm - cd->start_workspace; - reset_bracount = FALSE; - - /* Deal with the extended parentheses; all are introduced by '?', and the -@@ -6641,6 +6667,7 @@ - /* ------------------------------------------------------------ */ - case CHAR_VERTICAL_LINE: /* Reset capture count for each branch */ - reset_bracount = TRUE; -+ cd->dupgroups = TRUE; /* Record (?| encountered */ - /* Fall through */ - - /* ------------------------------------------------------------ */ -@@ -6741,6 +6768,12 @@ - { - while (IS_DIGIT(*ptr)) - { -+ if (recno > INT_MAX / 10 - 1) /* Integer overflow */ -+ { -+ while (IS_DIGIT(*ptr)) ptr++; -+ *errorcodeptr = ERR61; -+ goto FAILED; -+ } - recno = recno * 10 + (int)(*ptr - CHAR_0); - ptr++; - } -@@ -6769,7 +6802,7 @@ - ptr++; - } - namelen = (int)(ptr - name); -- if (lengthptr != NULL) *lengthptr += IMM2_SIZE; -+ if (lengthptr != NULL) skipbytes += IMM2_SIZE; - } - - /* Check the terminator */ -@@ -6875,6 +6908,11 @@ - *errorcodeptr = ERR15; - goto FAILED; - } -+ if (recno > INT_MAX / 10 - 1) /* Integer overflow */ -+ { -+ *errorcodeptr = ERR61; -+ goto FAILED; -+ } - recno = recno * 10 + name[i] - CHAR_0; - } - if (recno == 0) recno = RREF_ANY; -@@ -7151,7 +7189,8 @@ - if (lengthptr != NULL) - { - named_group *ng; -- -+ recno = 0; -+ - if (namelen == 0) - { - *errorcodeptr = ERR62; -@@ -7168,20 +7207,6 @@ - goto FAILED; - } - -- /* The name table does not exist in the first pass; instead we must -- scan the list of names encountered so far in order to get the -- number. If the name is not found, set the value to 0 for a forward -- reference. */ -- -- ng = cd->named_groups; -- for (i = 0; i < cd->names_found; i++, ng++) -- { -- if (namelen == ng->length && -- STRNCMP_UC_UC(name, ng->name, namelen) == 0) -- break; -- } -- recno = (i < cd->names_found)? ng->number : 0; -- - /* Count named back references. */ - - if (!is_recurse) cd->namedrefcount++; -@@ -7191,6 +7216,56 @@ - 16-bit data item. */ - - *lengthptr += IMM2_SIZE; -+ -+ /* If this is a forward reference and we are within a (?|...) group, -+ the reference may end up as the number of a group which we are -+ currently inside, that is, it could be a recursive reference. In the -+ real compile this will be picked up and the reference wrapped with -+ OP_ONCE to make it atomic, so we must space in case this occurs. */ -+ -+ /* In fact, this can happen for a non-forward reference because -+ another group with the same number might be created later. This -+ issue is fixed "properly" in PCRE2. As PCRE1 is now in maintenance -+ only mode, we finesse the bug by allowing more memory always. */ -+ -+ *lengthptr += 2 + 2*LINK_SIZE; -+ -+ /* It is even worse than that. The current reference may be to an -+ existing named group with a different number (so apparently not -+ recursive) but which later on is also attached to a group with the -+ current number. This can only happen if $(| has been previous -+ encountered. In that case, we allow yet more memory, just in case. -+ (Again, this is fixed "properly" in PCRE2. */ -+ -+ if (cd->dupgroups) *lengthptr += 4 + 4*LINK_SIZE; -+ -+ /* Otherwise, check for recursion here. The name table does not exist -+ in the first pass; instead we must scan the list of names encountered -+ so far in order to get the number. If the name is not found, leave -+ the value of recno as 0 for a forward reference. */ -+ -+ else -+ { -+ ng = cd->named_groups; -+ for (i = 0; i < cd->names_found; i++, ng++) -+ { -+ if (namelen == ng->length && -+ STRNCMP_UC_UC(name, ng->name, namelen) == 0) -+ { -+ open_capitem *oc; -+ recno = ng->number; -+ if (is_recurse) break; -+ for (oc = cd->open_caps; oc != NULL; oc = oc->next) -+ { -+ if (oc->number == recno) -+ { -+ oc->flag = TRUE; -+ break; -+ } -+ } -+ } -+ } -+ } - } - - /* In the real compile, search the name table. We check the name -@@ -7237,8 +7312,6 @@ - for (i++; i < cd->names_found; i++) - { - if (STRCMP_UC_UC(slot + IMM2_SIZE, cslot + IMM2_SIZE) != 0) break; -- -- - count++; - cslot += cd->name_entry_size; - } -@@ -7247,6 +7320,7 @@ - { - if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE; - previous = code; -+ item_hwm_offset = cd->hwm - cd->start_workspace; - *code++ = ((options & PCRE_CASELESS) != 0)? OP_DNREFI : OP_DNREF; - PUT2INC(code, 0, index); - PUT2INC(code, 0, count); -@@ -7284,9 +7358,14 @@ - - - /* ------------------------------------------------------------ */ -- case CHAR_R: /* Recursion */ -- ptr++; /* Same as (?0) */ -- /* Fall through */ -+ case CHAR_R: /* Recursion, same as (?0) */ -+ recno = 0; -+ if (*(++ptr) != CHAR_RIGHT_PARENTHESIS) -+ { -+ *errorcodeptr = ERR29; -+ goto FAILED; -+ } -+ goto HANDLE_RECURSION; - - - /* ------------------------------------------------------------ */ -@@ -7323,7 +7402,15 @@ - - recno = 0; - while(IS_DIGIT(*ptr)) -+ { -+ if (recno > INT_MAX / 10 - 1) /* Integer overflow */ -+ { -+ while (IS_DIGIT(*ptr)) ptr++; -+ *errorcodeptr = ERR61; -+ goto FAILED; -+ } - recno = recno * 10 + *ptr++ - CHAR_0; -+ } - - if (*ptr != (pcre_uchar)terminator) - { -@@ -7360,6 +7447,7 @@ - HANDLE_RECURSION: - - previous = code; -+ item_hwm_offset = cd->hwm - cd->start_workspace; - called = cd->start_code; - - /* When we are actually compiling, find the bracket that is being -@@ -7561,7 +7649,11 @@ - previous = NULL; - cd->iscondassert = FALSE; - } -- else previous = code; -+ else -+ { -+ previous = code; -+ item_hwm_offset = cd->hwm - cd->start_workspace; -+ } - - *code = bravalue; - tempcode = code; -@@ -7809,7 +7901,7 @@ - const pcre_uchar *p; - pcre_uint32 cf; - -- save_hwm_offset = cd->hwm - cd->start_workspace; /* Normally this is set when '(' is read */ -+ item_hwm_offset = cd->hwm - cd->start_workspace; /* Normally this is set when '(' is read */ - terminator = (*(++ptr) == CHAR_LESS_THAN_SIGN)? - CHAR_GREATER_THAN_SIGN : CHAR_APOSTROPHE; - -@@ -7838,7 +7930,7 @@ - if (*p != (pcre_uchar)terminator) - { - *errorcodeptr = ERR57; -- break; -+ goto FAILED; - } - ptr++; - goto HANDLE_NUMERICAL_RECURSION; -@@ -7853,7 +7945,7 @@ - ptr[1] != CHAR_APOSTROPHE && ptr[1] != CHAR_LEFT_CURLY_BRACKET)) - { - *errorcodeptr = ERR69; -- break; -+ goto FAILED; - } - is_recurse = FALSE; - terminator = (*(++ptr) == CHAR_LESS_THAN_SIGN)? -@@ -7877,6 +7969,7 @@ - HANDLE_REFERENCE: - if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE; - previous = code; -+ item_hwm_offset = cd->hwm - cd->start_workspace; - *code++ = ((options & PCRE_CASELESS) != 0)? OP_REFI : OP_REF; - PUT2INC(code, 0, recno); - cd->backref_map |= (recno < 32)? (1 << recno) : 1; -@@ -7906,6 +7999,7 @@ - if (!get_ucp(&ptr, &negated, &ptype, &pdata, errorcodeptr)) - goto FAILED; - previous = code; -+ item_hwm_offset = cd->hwm - cd->start_workspace; - *code++ = ((escape == ESC_p) != negated)? OP_PROP : OP_NOTPROP; - *code++ = ptype; - *code++ = pdata; -@@ -7946,6 +8040,7 @@ - - { - previous = (escape > ESC_b && escape < ESC_Z)? code : NULL; -+ item_hwm_offset = cd->hwm - cd->start_workspace; - *code++ = (!utf && escape == ESC_C)? OP_ALLANY : escape; - } - } -@@ -7989,6 +8084,7 @@ - - ONE_CHAR: - previous = code; -+ item_hwm_offset = cd->hwm - cd->start_workspace; - - /* For caseless UTF-8 mode when UCP support is available, check whether - this character has more than one other case. If so, generate a special -@@ -9164,6 +9260,7 @@ - cd->name_entry_size = 0; - cd->name_table = NULL; - cd->dupnames = FALSE; -+cd->dupgroups = FALSE; - cd->namedrefcount = 0; - cd->start_code = cworkspace; - cd->hwm = cworkspace; -@@ -9198,7 +9295,7 @@ - - DPRINTF(("end pre-compile: length=%d workspace=%d\n", length, - (int)(cd->hwm - cworkspace))); -- -+ - if (length > MAX_PATTERN_SIZE) - { - errorcode = ERR20; -@@ -9336,6 +9433,16 @@ - int offset, recno; - cd->hwm -= LINK_SIZE; - offset = GET(cd->hwm, 0); -+ -+ /* Check that the hwm handling hasn't gone wrong. This whole area is -+ rewritten in PCRE2 because there are some obscure cases. */ -+ -+ if (offset == 0 || codestart[offset-1] != OP_RECURSE) -+ { -+ errorcode = ERR10; -+ break; -+ } -+ - recno = GET(codestart, offset); - if (recno != prev_recno) - { -@@ -9366,7 +9473,7 @@ - "const" attribute if the cast (pcre_uchar *)codestart is used directly in the - function call. */ - --if ((options & PCRE_NO_AUTO_POSSESS) == 0) -+if (errorcode == 0 && (options & PCRE_NO_AUTO_POSSESS) == 0) - { - pcre_uchar *temp = (pcre_uchar *)codestart; - auto_possessify(temp, utf, cd); -@@ -9380,7 +9487,7 @@ - exceptional ones forgo this. We scan the pattern to check that they are fixed - length, and set their lengths. */ - --if (cd->check_lookbehind) -+if (errorcode == 0 && cd->check_lookbehind) - { - pcre_uchar *cc = (pcre_uchar *)codestart; - -@@ -9593,4 +9700,3 @@ - } - - /* End of pcre_compile.c */ -- -Index: ChangeLog -=================================================================== ---- ChangeLog (revision 1554) -+++ ChangeLog (working copy) -@@ -1,6 +1,162 @@ - ChangeLog for PCRE - ------------------ - -+Note that the PCRE 8.xx series (PCRE1) is now in a bugfix-only state. All -+development is happening in the PCRE2 10.xx series. -+ -+Version 8.38 xx-xxx-xxxx -+------------------------ -+ -+1. If a group that contained a recursive back reference also contained a -+ forward reference subroutine call followed by a non-forward-reference -+ subroutine call, for example /.((?2)(?R)\1)()/, pcre2_compile() failed to -+ compile correct code, leading to undefined behaviour or an internally -+ detected error. This bug was discovered by the LLVM fuzzer. -+ -+2. Quantification of certain items (e.g. atomic back references) could cause -+ incorrect code to be compiled when recursive forward references were -+ involved. For example, in this pattern: /(?1)()((((((\1++))\x85)+)|))/. -+ This bug was discovered by the LLVM fuzzer. -+ -+3. A repeated conditional group whose condition was a reference by name caused -+ a buffer overflow if there was more than one group with the given name. -+ This bug was discovered by the LLVM fuzzer. -+ -+4. A recursive back reference by name within a group that had the same name as -+ another group caused a buffer overflow. For example: -+ /(?J)(?'d'(?'d'\g{d}))/. This bug was discovered by the LLVM fuzzer. -+ -+5. A forward reference by name to a group whose number is the same as the -+ current group, for example in this pattern: /(?|(\k'Pm')|(?'Pm'))/, caused -+ a buffer overflow at compile time. This bug was discovered by the LLVM -+ fuzzer. -+ -+6. A lookbehind assertion within a set of mutually recursive subpatterns could -+ provoke a buffer overflow. This bug was discovered by the LLVM fuzzer. -+ -+7. Another buffer overflow bug involved duplicate named groups with a -+ reference between their definition, with a group that reset capture -+ numbers, for example: /(?J:(?|(?'R')(\k'R')|((?'R'))))/. This has been -+ fixed by always allowing for more memory, even if not needed. (A proper fix -+ is implemented in PCRE2, but it involves more refactoring.) -+ -+8. There was no check for integer overflow in subroutine calls such as (?123). -+ -+9. The table entry for \l in EBCDIC environments was incorrect, leading to its -+ being treated as a literal 'l' instead of causing an error. -+ -+10. There was a buffer overflow if pcre_exec() was called with an ovector of -+ size 1. This bug was found by american fuzzy lop. -+ -+11. If a non-capturing group containing a conditional group that could match -+ an empty string was repeated, it was not identified as matching an empty -+ string itself. For example: /^(?:(?(1)x|)+)+$()/. -+ -+12. In an EBCDIC environment, pcretest was mishandling the escape sequences -+ \a and \e in test subject lines. -+ -+13. In an EBCDIC environment, \a in a pattern was converted to the ASCII -+ instead of the EBCDIC value. -+ -+14. The handling of \c in an EBCDIC environment has been revised so that it is -+ now compatible with the specification in Perl's perlebcdic page. -+ -+15. The EBCDIC character 0x41 is a non-breaking space, equivalent to 0xa0 in -+ ASCII/Unicode. This has now been added to the list of characters that are -+ recognized as white space in EBCDIC. -+ -+16. When PCRE was compiled without UCP support, the use of \p and \P gave an -+ error (correctly) when used outside a class, but did not give an error -+ within a class. -+ -+17. \h within a class was incorrectly compiled in EBCDIC environments. -+ -+18. A pattern with an unmatched closing parenthesis that contained a backward -+ assertion which itself contained a forward reference caused buffer -+ overflow. And example pattern is: /(?=di(?<=(?1))|(?=(.))))/. -+ -+19. JIT should return with error when the compiled pattern requires more stack -+ space than the maximum. -+ -+20. A possessively repeated conditional group that could match an empty string, -+ for example, /(?(R))*+/, was incorrectly compiled. -+ -+21. Fix infinite recursion in the JIT compiler when certain patterns such as -+ /(?:|a|){100}x/ are analysed. -+ -+22. Some patterns with character classes involving [: and \\ were incorrectly -+ compiled and could cause reading from uninitialized memory or an incorrect -+ error diagnosis. -+ -+23. Pathological patterns containing many nested occurrences of [: caused -+ pcre_compile() to run for a very long time. -+ -+24. A conditional group with only one branch has an implicit empty alternative -+ branch and must therefore be treated as potentially matching an empty -+ string. -+ -+25. If (?R was followed by - or + incorrect behaviour happened instead of a -+ diagnostic. -+ -+26. Arrange to give up on finding the minimum matching length for overly -+ complex patterns. -+ -+27. Similar to (4) above: in a pattern with duplicated named groups and an -+ occurrence of (?| it is possible for an apparently non-recursive back -+ reference to become recursive if a later named group with the relevant -+ number is encountered. This could lead to a buffer overflow. Wen Guanxing -+ from Venustech ADLAB discovered this bug. -+ -+28. If pcregrep was given the -q option with -c or -l, or when handling a -+ binary file, it incorrectly wrote output to stdout. -+ -+29. The JIT compiler did not restore the control verb head in case of *THEN -+ control verbs. This issue was found by Karl Skomski with a custom LLVM -+ fuzzer. -+ -+30. Error messages for syntax errors following \g and \k were giving inaccurate -+ offsets in the pattern. -+ -+31. Added a check for integer overflow in conditions (?(<digits>) and -+ (?(R<digits>). This omission was discovered by Karl Skomski with the LLVM -+ fuzzer. -+ -+32. Handling recursive references such as (?2) when the reference is to a group -+ later in the pattern uses code that is very hacked about and error-prone. -+ It has been re-written for PCRE2. Here in PCRE1, a check has been added to -+ give an internal error if it is obvious that compiling has gone wrong. -+ -+33. The JIT compiler should not check repeats after a {0,1} repeat byte code. -+ This issue was found by Karl Skomski with a custom LLVM fuzzer. -+ -+34. The JIT compiler should restore the control chain for empty possessive -+ repeats. This issue was found by Karl Skomski with a custom LLVM fuzzer. -+ -+35. Match limit check added to JIT recursion. This issue was found by Karl -+ Skomski with a custom LLVM fuzzer. -+ -+36. Yet another case similar to 27 above has been circumvented by an -+ unconditional allocation of extra memory. This issue is fixed "properly" in -+ PCRE2 by refactoring the way references are handled. Wen Guanxing -+ from Venustech ADLAB discovered this bug. -+ -+37. Fix two assertion fails in JIT. These issues were found by Karl Skomski -+ with a custom LLVM fuzzer. -+ -+38. Fixed a corner case of range optimization in JIT. -+ -+39. An incorrect error "overran compiling workspace" was given if there were -+ exactly enough group forward references such that the last one extended -+ into the workspace safety margin. The next one would have expanded the -+ workspace. The test for overflow was not including the safety margin. -+ -+40. A match limit issue is fixed in JIT which was found by Karl Skomski -+ with a custom LLVM fuzzer. -+ -+41. Remove the use of /dev/null in testdata/testinput2, because it doesn't -+ work under Windows. (Why has it taken so long for anyone to notice?) -+ -+ - Version 8.37 28-April-2015 - -------------------------- - -Index: pcretest.c -=================================================================== ---- pcretest.c (revision 1554) -+++ pcretest.c (working copy) -@@ -4621,9 +4621,9 @@ - - else switch ((c = *p++)) - { -- case 'a': c = 7; break; -+ case 'a': c = CHAR_BEL; break; - case 'b': c = '\b'; break; -- case 'e': c = 27; break; -+ case 'e': c = CHAR_ESC; break; - case 'f': c = '\f'; break; - case 'n': c = '\n'; break; - case 'r': c = '\r'; break; -Index: sljit/sljitLir.c -=================================================================== ---- sljit/sljitLir.c (revision 1554) -+++ sljit/sljitLir.c (working copy) -@@ -845,8 +845,8 @@ - } - - static SLJIT_CONST char* op0_names[] = { -- (char*)"breakpoint", (char*)"nop", -- (char*)"lumul", (char*)"lsmul", (char*)"ludiv", (char*)"lsdiv", -+ (char*)"breakpoint", (char*)"nop", (char*)"lumul", (char*)"lsmul", -+ (char*)"udivmod", (char*)"sdivmod", (char*)"udivi", (char*)"sdivi" - }; - - static SLJIT_CONST char* op1_names[] = { -@@ -1036,7 +1036,7 @@ - { - #if (defined SLJIT_ARGUMENT_CHECKS && SLJIT_ARGUMENT_CHECKS) - CHECK_ARGUMENT((op >= SLJIT_BREAKPOINT && op <= SLJIT_LSMUL) -- || ((op & ~SLJIT_INT_OP) >= SLJIT_LUDIV && (op & ~SLJIT_INT_OP) <= SLJIT_LSDIV)); -+ || ((op & ~SLJIT_INT_OP) >= SLJIT_UDIVMOD && (op & ~SLJIT_INT_OP) <= SLJIT_SDIVI)); - CHECK_ARGUMENT(op < SLJIT_LUMUL || compiler->scratches >= 2); - #endif - #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE) -@@ -1447,6 +1447,8 @@ - - static SLJIT_INLINE CHECK_RETURN_TYPE check_sljit_get_local_base(struct sljit_compiler *compiler, sljit_si dst, sljit_sw dstw, sljit_sw offset) - { -+ SLJIT_UNUSED_ARG(offset); -+ - #if (defined SLJIT_ARGUMENT_CHECKS && SLJIT_ARGUMENT_CHECKS) - FUNCTION_CHECK_DST(dst, dstw); - #endif -@@ -1462,6 +1464,8 @@ - - static SLJIT_INLINE CHECK_RETURN_TYPE check_sljit_emit_const(struct sljit_compiler *compiler, sljit_si dst, sljit_sw dstw, sljit_sw init_value) - { -+ SLJIT_UNUSED_ARG(init_value); -+ - #if (defined SLJIT_ARGUMENT_CHECKS && SLJIT_ARGUMENT_CHECKS) - FUNCTION_CHECK_DST(dst, dstw); - #endif -Index: sljit/sljitNativeSPARC_common.c -=================================================================== ---- sljit/sljitNativeSPARC_common.c (revision 1554) -+++ sljit/sljitNativeSPARC_common.c (working copy) -@@ -777,20 +777,25 @@ - #else - #error "Implementation required" - #endif -- case SLJIT_LUDIV: -- case SLJIT_LSDIV: -+ case SLJIT_UDIVMOD: -+ case SLJIT_SDIVMOD: -+ case SLJIT_UDIVI: -+ case SLJIT_SDIVI: -+ SLJIT_COMPILE_ASSERT((SLJIT_UDIVMOD & 0x2) == 0 && SLJIT_UDIVI - 0x2 == SLJIT_UDIVMOD, bad_div_opcode_assignments); - #if (defined SLJIT_CONFIG_SPARC_32 && SLJIT_CONFIG_SPARC_32) -- if (op == SLJIT_LUDIV) -+ if ((op | 0x2) == SLJIT_UDIVI) - FAIL_IF(push_inst(compiler, WRY | S1(0), MOVABLE_INS)); - else { - FAIL_IF(push_inst(compiler, SRA | D(TMP_REG1) | S1(SLJIT_R0) | IMM(31), DR(TMP_REG1))); - FAIL_IF(push_inst(compiler, WRY | S1(TMP_REG1), MOVABLE_INS)); - } -- FAIL_IF(push_inst(compiler, OR | D(TMP_REG2) | S1(0) | S2(SLJIT_R0), DR(TMP_REG2))); -- FAIL_IF(push_inst(compiler, (op == SLJIT_LUDIV ? UDIV : SDIV) | D(SLJIT_R0) | S1(SLJIT_R0) | S2(SLJIT_R1), DR(SLJIT_R0))); -+ if (op <= SLJIT_SDIVMOD) -+ FAIL_IF(push_inst(compiler, OR | D(TMP_REG2) | S1(0) | S2(SLJIT_R0), DR(TMP_REG2))); -+ FAIL_IF(push_inst(compiler, ((op | 0x2) == SLJIT_UDIVI ? UDIV : SDIV) | D(SLJIT_R0) | S1(SLJIT_R0) | S2(SLJIT_R1), DR(SLJIT_R0))); -+ if (op >= SLJIT_UDIVI) -+ return SLJIT_SUCCESS; - FAIL_IF(push_inst(compiler, SMUL | D(SLJIT_R1) | S1(SLJIT_R0) | S2(SLJIT_R1), DR(SLJIT_R1))); -- FAIL_IF(push_inst(compiler, SUB | D(SLJIT_R1) | S1(TMP_REG2) | S2(SLJIT_R1), DR(SLJIT_R1))); -- return SLJIT_SUCCESS; -+ return push_inst(compiler, SUB | D(SLJIT_R1) | S1(TMP_REG2) | S2(SLJIT_R1), DR(SLJIT_R1)); - #else - #error "Implementation required" - #endif -Index: sljit/sljitNativeMIPS_common.c -=================================================================== ---- sljit/sljitNativeMIPS_common.c (revision 1554) -+++ sljit/sljitNativeMIPS_common.c (working copy) -@@ -1053,8 +1053,11 @@ - #endif - FAIL_IF(push_inst(compiler, MFLO | D(SLJIT_R0), DR(SLJIT_R0))); - return push_inst(compiler, MFHI | D(SLJIT_R1), DR(SLJIT_R1)); -- case SLJIT_LUDIV: -- case SLJIT_LSDIV: -+ case SLJIT_UDIVMOD: -+ case SLJIT_SDIVMOD: -+ case SLJIT_UDIVI: -+ case SLJIT_SDIVI: -+ SLJIT_COMPILE_ASSERT((SLJIT_UDIVMOD & 0x2) == 0 && SLJIT_UDIVI - 0x2 == SLJIT_UDIVMOD, bad_div_opcode_assignments); - #if !(defined SLJIT_MIPS_R1 && SLJIT_MIPS_R1) - FAIL_IF(push_inst(compiler, NOP, UNMOVABLE_INS)); - FAIL_IF(push_inst(compiler, NOP, UNMOVABLE_INS)); -@@ -1062,15 +1065,15 @@ - - #if (defined SLJIT_CONFIG_MIPS_64 && SLJIT_CONFIG_MIPS_64) - if (int_op) -- FAIL_IF(push_inst(compiler, (op == SLJIT_LUDIV ? DIVU : DIV) | S(SLJIT_R0) | T(SLJIT_R1), MOVABLE_INS)); -+ FAIL_IF(push_inst(compiler, ((op | 0x2) == SLJIT_UDIVI ? DIVU : DIV) | S(SLJIT_R0) | T(SLJIT_R1), MOVABLE_INS)); - else -- FAIL_IF(push_inst(compiler, (op == SLJIT_LUDIV ? DDIVU : DDIV) | S(SLJIT_R0) | T(SLJIT_R1), MOVABLE_INS)); -+ FAIL_IF(push_inst(compiler, ((op | 0x2) == SLJIT_UDIVI ? DDIVU : DDIV) | S(SLJIT_R0) | T(SLJIT_R1), MOVABLE_INS)); - #else -- FAIL_IF(push_inst(compiler, (op == SLJIT_LUDIV ? DIVU : DIV) | S(SLJIT_R0) | T(SLJIT_R1), MOVABLE_INS)); -+ FAIL_IF(push_inst(compiler, ((op | 0x2) == SLJIT_UDIVI ? DIVU : DIV) | S(SLJIT_R0) | T(SLJIT_R1), MOVABLE_INS)); - #endif - - FAIL_IF(push_inst(compiler, MFLO | D(SLJIT_R0), DR(SLJIT_R0))); -- return push_inst(compiler, MFHI | D(SLJIT_R1), DR(SLJIT_R1)); -+ return (op >= SLJIT_UDIVI) ? SLJIT_SUCCESS : push_inst(compiler, MFHI | D(SLJIT_R1), DR(SLJIT_R1)); - } - - return SLJIT_SUCCESS; -Index: sljit/sljitNativeARM_32.c -=================================================================== ---- sljit/sljitNativeARM_32.c (revision 1554) -+++ sljit/sljitNativeARM_32.c (working copy) -@@ -1833,18 +1833,33 @@ - | (reg_map[SLJIT_R0] << 8) - | reg_map[TMP_REG1]); - #endif -- case SLJIT_LUDIV: -- case SLJIT_LSDIV: -- if (compiler->scratches >= 3) -+ case SLJIT_UDIVMOD: -+ case SLJIT_SDIVMOD: -+ case SLJIT_UDIVI: -+ case SLJIT_SDIVI: -+ SLJIT_COMPILE_ASSERT((SLJIT_UDIVMOD & 0x2) == 0 && SLJIT_UDIVI - 0x2 == SLJIT_UDIVMOD, bad_div_opcode_assignments); -+ SLJIT_COMPILE_ASSERT(reg_map[2] == 1 && reg_map[3] == 2, bad_register_mapping); -+ -+ if ((op >= SLJIT_UDIVI) && (compiler->scratches >= 3)) { - FAIL_IF(push_inst(compiler, 0xe52d2008 /* str r2, [sp, #-8]! */)); -+ FAIL_IF(push_inst(compiler, 0xe58d1004 /* str r1, [sp, #4] */)); -+ } -+ else if ((op >= SLJIT_UDIVI) || (compiler->scratches >= 3)) -+ FAIL_IF(push_inst(compiler, 0xe52d0008 | (op >= SLJIT_UDIVI ? 0x1000 : 0x2000) /* str r1/r2, [sp, #-8]! */)); -+ - #if defined(__GNUC__) - FAIL_IF(sljit_emit_ijump(compiler, SLJIT_FAST_CALL, SLJIT_IMM, -- (op == SLJIT_LUDIV ? SLJIT_FUNC_OFFSET(__aeabi_uidivmod) : SLJIT_FUNC_OFFSET(__aeabi_idivmod)))); -+ ((op | 0x2) == SLJIT_UDIVI ? SLJIT_FUNC_OFFSET(__aeabi_uidivmod) : SLJIT_FUNC_OFFSET(__aeabi_idivmod)))); - #else - #error "Software divmod functions are needed" - #endif -- if (compiler->scratches >= 3) -- return push_inst(compiler, 0xe49d2008 /* ldr r2, [sp], #8 */); -+ -+ if ((op >= SLJIT_UDIVI) && (compiler->scratches >= 3)) { -+ FAIL_IF(push_inst(compiler, 0xe59d1004 /* ldr r1, [sp, #4] */)); -+ FAIL_IF(push_inst(compiler, 0xe49d2008 /* ldr r2, [sp], #8 */)); -+ } -+ else if ((op >= SLJIT_UDIVI) || (compiler->scratches >= 3)) -+ return push_inst(compiler, 0xe49d0008 | (op >= SLJIT_UDIVI ? 0x1000 : 0x2000) /* ldr r1/r2, [sp], #8 */); - return SLJIT_SUCCESS; - } - -Index: sljit/sljitLir.h -=================================================================== ---- sljit/sljitLir.h (revision 1554) -+++ sljit/sljitLir.h (working copy) -@@ -687,7 +687,7 @@ - #define SLJIT_OP0_BASE 0 - - /* Flags: - (never set any flags) -- Note: breakpoint instruction is not supported by all architectures (namely ppc) -+ Note: breakpoint instruction is not supported by all architectures (e.g. ppc) - It falls back to SLJIT_NOP in those cases. */ - #define SLJIT_BREAKPOINT (SLJIT_OP0_BASE + 0) - /* Flags: - (never set any flags) -@@ -696,24 +696,42 @@ - #define SLJIT_NOP (SLJIT_OP0_BASE + 1) - /* Flags: - (may destroy flags) - Unsigned multiplication of SLJIT_R0 and SLJIT_R1. -- Result goes to SLJIT_R1:SLJIT_R0 (high:low) word */ -+ Result is placed into SLJIT_R1:SLJIT_R0 (high:low) word */ - #define SLJIT_LUMUL (SLJIT_OP0_BASE + 2) - /* Flags: - (may destroy flags) - Signed multiplication of SLJIT_R0 and SLJIT_R1. -- Result goes to SLJIT_R1:SLJIT_R0 (high:low) word */ -+ Result is placed into SLJIT_R1:SLJIT_R0 (high:low) word */ - #define SLJIT_LSMUL (SLJIT_OP0_BASE + 3) - /* Flags: I - (may destroy flags) - Unsigned divide of the value in SLJIT_R0 by the value in SLJIT_R1. -- The result is placed in SLJIT_R0 and the remainder goes to SLJIT_R1. -- Note: if SLJIT_R1 contains 0, the behaviour is undefined. */ --#define SLJIT_LUDIV (SLJIT_OP0_BASE + 4) --#define SLJIT_ILUDIV (SLJIT_LUDIV | SLJIT_INT_OP) -+ The result is placed into SLJIT_R0 and the remainder into SLJIT_R1. -+ Note: if SLJIT_R1 is 0, the behaviour is undefined. */ -+#define SLJIT_UDIVMOD (SLJIT_OP0_BASE + 4) -+#define SLJIT_IUDIVMOD (SLJIT_UDIVMOD | SLJIT_INT_OP) - /* Flags: I - (may destroy flags) - Signed divide of the value in SLJIT_R0 by the value in SLJIT_R1. -- The result is placed in SLJIT_R0 and the remainder goes to SLJIT_R1. -- Note: if SLJIT_R1 contains 0, the behaviour is undefined. */ --#define SLJIT_LSDIV (SLJIT_OP0_BASE + 5) --#define SLJIT_ILSDIV (SLJIT_LSDIV | SLJIT_INT_OP) -+ The result is placed into SLJIT_R0 and the remainder into SLJIT_R1. -+ Note: if SLJIT_R1 is 0, the behaviour is undefined. -+ Note: if SLJIT_R1 is -1 and SLJIT_R0 is integer min (0x800..00), -+ the behaviour is undefined. */ -+#define SLJIT_SDIVMOD (SLJIT_OP0_BASE + 5) -+#define SLJIT_ISDIVMOD (SLJIT_SDIVMOD | SLJIT_INT_OP) -+/* Flags: I - (may destroy flags) -+ Unsigned divide of the value in SLJIT_R0 by the value in SLJIT_R1. -+ The result is placed into SLJIT_R0. SLJIT_R1 preserves its value. -+ Note: if SLJIT_R1 is 0, the behaviour is undefined. -+ Note: SLJIT_SDIV is single precision divide. */ -+#define SLJIT_UDIVI (SLJIT_OP0_BASE + 6) -+#define SLJIT_IUDIVI (SLJIT_UDIVI | SLJIT_INT_OP) -+/* Flags: I - (may destroy flags) -+ Signed divide of the value in SLJIT_R0 by the value in SLJIT_R1. -+ The result is placed into SLJIT_R0. SLJIT_R1 preserves its value. -+ Note: if SLJIT_R1 is 0, the behaviour is undefined. -+ Note: if SLJIT_R1 is -1 and SLJIT_R0 is integer min (0x800..00), -+ the behaviour is undefined. -+ Note: SLJIT_SDIV is single precision divide. */ -+#define SLJIT_SDIVI (SLJIT_OP0_BASE + 7) -+#define SLJIT_ISDIVI (SLJIT_SDIVI | SLJIT_INT_OP) - - SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_op0(struct sljit_compiler *compiler, sljit_si op); - -@@ -851,34 +869,6 @@ - sljit_si src1, sljit_sw src1w, - sljit_si src2, sljit_sw src2w); - --/* The following function is a helper function for sljit_emit_op_custom. -- It returns with the real machine register index ( >=0 ) of any SLJIT_R, -- SLJIT_S and SLJIT_SP registers. -- -- Note: it returns with -1 for virtual registers (only on x86-32). */ -- --SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_get_register_index(sljit_si reg); -- --/* The following function is a helper function for sljit_emit_op_custom. -- It returns with the real machine register index of any SLJIT_FLOAT register. -- -- Note: the index is always an even number on ARM (except ARM-64), MIPS, and SPARC. */ -- --SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_get_float_register_index(sljit_si reg); -- --/* Any instruction can be inserted into the instruction stream by -- sljit_emit_op_custom. It has a similar purpose as inline assembly. -- The size parameter must match to the instruction size of the target -- architecture: -- -- x86: 0 < size <= 15. The instruction argument can be byte aligned. -- Thumb2: if size == 2, the instruction argument must be 2 byte aligned. -- if size == 4, the instruction argument must be 4 byte aligned. -- Otherwise: size must be 4 and instruction argument must be 4 byte aligned. */ -- --SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_op_custom(struct sljit_compiler *compiler, -- void *instruction, sljit_si size); -- - /* Returns with non-zero if fpu is available. */ - - SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_is_fpu_available(void); -@@ -1196,4 +1186,64 @@ - - #endif /* !(defined SLJIT_INDIRECT_CALL && SLJIT_INDIRECT_CALL) */ - -+/* --------------------------------------------------------------------- */ -+/* CPU specific functions */ -+/* --------------------------------------------------------------------- */ -+ -+/* The following function is a helper function for sljit_emit_op_custom. -+ It returns with the real machine register index ( >=0 ) of any SLJIT_R, -+ SLJIT_S and SLJIT_SP registers. -+ -+ Note: it returns with -1 for virtual registers (only on x86-32). */ -+ -+SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_get_register_index(sljit_si reg); -+ -+/* The following function is a helper function for sljit_emit_op_custom. -+ It returns with the real machine register index of any SLJIT_FLOAT register. -+ -+ Note: the index is always an even number on ARM (except ARM-64), MIPS, and SPARC. */ -+ -+SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_get_float_register_index(sljit_si reg); -+ -+/* Any instruction can be inserted into the instruction stream by -+ sljit_emit_op_custom. It has a similar purpose as inline assembly. -+ The size parameter must match to the instruction size of the target -+ architecture: -+ -+ x86: 0 < size <= 15. The instruction argument can be byte aligned. -+ Thumb2: if size == 2, the instruction argument must be 2 byte aligned. -+ if size == 4, the instruction argument must be 4 byte aligned. -+ Otherwise: size must be 4 and instruction argument must be 4 byte aligned. */ -+ -+SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_op_custom(struct sljit_compiler *compiler, -+ void *instruction, sljit_si size); -+ -+#if (defined SLJIT_CONFIG_X86 && SLJIT_CONFIG_X86) -+ -+/* Returns with non-zero if sse2 is available. */ -+ -+SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_x86_is_sse2_available(void); -+ -+/* Returns with non-zero if cmov instruction is available. */ -+ -+SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_x86_is_cmov_available(void); -+ -+/* Emit a conditional mov instruction on x86 CPUs. This instruction -+ moves src to destination, if the condition is satisfied. Unlike -+ other arithmetic instructions, destination must be a register. -+ Before such instructions are emitted, cmov support should be -+ checked by sljit_x86_is_cmov_available function. -+ type must be between SLJIT_EQUAL and SLJIT_S_ORDERED -+ dst_reg must be a valid register and it can be combined -+ with SLJIT_INT_OP to perform 32 bit arithmetic -+ Flags: I - (never set any flags) -+ */ -+ -+SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_x86_emit_cmov(struct sljit_compiler *compiler, -+ sljit_si type, -+ sljit_si dst_reg, -+ sljit_si src, sljit_sw srcw); -+ -+#endif -+ - #endif /* _SLJIT_LIR_H_ */ -Index: sljit/sljitNativeARM_64.c -=================================================================== ---- sljit/sljitNativeARM_64.c (revision 1554) -+++ sljit/sljitNativeARM_64.c (working copy) -@@ -1087,7 +1087,8 @@ - saved_regs_size += sizeof(sljit_sw); - } - local_size -= saved_regs_size + SLJIT_LOCALS_OFFSET; -- FAIL_IF(push_inst(compiler, SUBI | RD(TMP_SP) | RN(TMP_SP) | (saved_regs_size << 10))); -+ if (saved_regs_size > 0) -+ FAIL_IF(push_inst(compiler, SUBI | RD(TMP_SP) | RN(TMP_SP) | (saved_regs_size << 10))); - } - - tmp = saveds < SLJIT_NUMBER_OF_SAVED_REGISTERS ? (SLJIT_S0 + 1 - saveds) : SLJIT_FIRST_SAVED_REG; -@@ -1094,7 +1095,12 @@ - prev = -1; - for (i = SLJIT_S0; i >= tmp; i--) { - if (prev == -1) { -- prev = i; -+ if (!(offs & (1 << 15))) { -+ prev = i; -+ continue; -+ } -+ FAIL_IF(push_inst(compiler, STRI | RT(i) | RN(TMP_SP) | (offs >> 5))); -+ offs += 1 << 15; - continue; - } - FAIL_IF(push_inst(compiler, STP | RT(prev) | RT2(i) | RN(TMP_SP) | offs)); -@@ -1104,7 +1110,12 @@ - - for (i = scratches; i >= SLJIT_FIRST_SAVED_REG; i--) { - if (prev == -1) { -- prev = i; -+ if (!(offs & (1 << 15))) { -+ prev = i; -+ continue; -+ } -+ FAIL_IF(push_inst(compiler, STRI | RT(i) | RN(TMP_SP) | (offs >> 5))); -+ offs += 1 << 15; - continue; - } - FAIL_IF(push_inst(compiler, STP | RT(prev) | RT2(i) | RN(TMP_SP) | offs)); -@@ -1112,8 +1123,7 @@ - prev = -1; - } - -- if (prev != -1) -- FAIL_IF(push_inst(compiler, STRI | RT(prev) | RN(TMP_SP) | (offs >> 5))); -+ SLJIT_ASSERT(prev == -1); - - if (compiler->local_size > (63 * sizeof(sljit_sw))) { - /* The local_size is already adjusted by the saved registers. */ -@@ -1188,7 +1198,12 @@ - prev = -1; - for (i = SLJIT_S0; i >= tmp; i--) { - if (prev == -1) { -- prev = i; -+ if (!(offs & (1 << 15))) { -+ prev = i; -+ continue; -+ } -+ FAIL_IF(push_inst(compiler, LDRI | RT(i) | RN(TMP_SP) | (offs >> 5))); -+ offs += 1 << 15; - continue; - } - FAIL_IF(push_inst(compiler, LDP | RT(prev) | RT2(i) | RN(TMP_SP) | offs)); -@@ -1198,7 +1213,12 @@ - - for (i = compiler->scratches; i >= SLJIT_FIRST_SAVED_REG; i--) { - if (prev == -1) { -- prev = i; -+ if (!(offs & (1 << 15))) { -+ prev = i; -+ continue; -+ } -+ FAIL_IF(push_inst(compiler, LDRI | RT(i) | RN(TMP_SP) | (offs >> 5))); -+ offs += 1 << 15; - continue; - } - FAIL_IF(push_inst(compiler, LDP | RT(prev) | RT2(i) | RN(TMP_SP) | offs)); -@@ -1206,13 +1226,12 @@ - prev = -1; - } - -- if (prev != -1) -- FAIL_IF(push_inst(compiler, LDRI | RT(prev) | RN(TMP_SP) | (offs >> 5))); -+ SLJIT_ASSERT(prev == -1); - - if (compiler->local_size <= (63 * sizeof(sljit_sw))) { - FAIL_IF(push_inst(compiler, LDP_PST | 29 | RT2(TMP_LR) - | RN(TMP_SP) | (((local_size >> 3) & 0x7f) << 15))); -- } else { -+ } else if (saved_regs_size > 0) { - FAIL_IF(push_inst(compiler, ADDI | RD(TMP_SP) | RN(TMP_SP) | (saved_regs_size << 10))); - } - -@@ -1242,12 +1261,15 @@ - FAIL_IF(push_inst(compiler, ORR | RD(TMP_REG1) | RN(TMP_ZERO) | RM(SLJIT_R0))); - FAIL_IF(push_inst(compiler, MADD | RD(SLJIT_R0) | RN(SLJIT_R0) | RM(SLJIT_R1) | RT2(TMP_ZERO))); - return push_inst(compiler, (op == SLJIT_LUMUL ? UMULH : SMULH) | RD(SLJIT_R1) | RN(TMP_REG1) | RM(SLJIT_R1)); -- case SLJIT_LUDIV: -- case SLJIT_LSDIV: -+ case SLJIT_UDIVMOD: -+ case SLJIT_SDIVMOD: - FAIL_IF(push_inst(compiler, (ORR ^ inv_bits) | RD(TMP_REG1) | RN(TMP_ZERO) | RM(SLJIT_R0))); -- FAIL_IF(push_inst(compiler, ((op == SLJIT_LUDIV ? UDIV : SDIV) ^ inv_bits) | RD(SLJIT_R0) | RN(SLJIT_R0) | RM(SLJIT_R1))); -+ FAIL_IF(push_inst(compiler, ((op == SLJIT_UDIVMOD ? UDIV : SDIV) ^ inv_bits) | RD(SLJIT_R0) | RN(SLJIT_R0) | RM(SLJIT_R1))); - FAIL_IF(push_inst(compiler, (MADD ^ inv_bits) | RD(SLJIT_R1) | RN(SLJIT_R0) | RM(SLJIT_R1) | RT2(TMP_ZERO))); - return push_inst(compiler, (SUB ^ inv_bits) | RD(SLJIT_R1) | RN(TMP_REG1) | RM(SLJIT_R1)); -+ case SLJIT_UDIVI: -+ case SLJIT_SDIVI: -+ return push_inst(compiler, ((op == SLJIT_UDIVI ? UDIV : SDIV) ^ inv_bits) | RD(SLJIT_R0) | RN(SLJIT_R0) | RM(SLJIT_R1)); - } - - return SLJIT_SUCCESS; -Index: sljit/sljitNativeARM_T2_32.c -=================================================================== ---- sljit/sljitNativeARM_T2_32.c (revision 1554) -+++ sljit/sljitNativeARM_T2_32.c (working copy) -@@ -1239,6 +1239,9 @@ - - SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_op0(struct sljit_compiler *compiler, sljit_si op) - { -+ sljit_sw saved_reg_list[3]; -+ sljit_sw saved_reg_count; -+ - CHECK_ERROR(); - CHECK(check_sljit_emit_op0(compiler, op)); - -@@ -1255,24 +1258,53 @@ - | (reg_map[SLJIT_R0] << 12) - | (reg_map[SLJIT_R0] << 16) - | reg_map[SLJIT_R1]); -- case SLJIT_LUDIV: -- case SLJIT_LSDIV: -- if (compiler->scratches >= 4) { -- FAIL_IF(push_inst32(compiler, 0xf84d2d04 /* str r2, [sp, #-4]! */)); -- FAIL_IF(push_inst32(compiler, 0xf84dcd04 /* str ip, [sp, #-4]! */)); -- } else if (compiler->scratches >= 3) -- FAIL_IF(push_inst32(compiler, 0xf84d2d08 /* str r2, [sp, #-8]! */)); -+ case SLJIT_UDIVMOD: -+ case SLJIT_SDIVMOD: -+ case SLJIT_UDIVI: -+ case SLJIT_SDIVI: -+ SLJIT_COMPILE_ASSERT((SLJIT_UDIVMOD & 0x2) == 0 && SLJIT_UDIVI - 0x2 == SLJIT_UDIVMOD, bad_div_opcode_assignments); -+ SLJIT_COMPILE_ASSERT(reg_map[2] == 1 && reg_map[3] == 2 && reg_map[4] == 12, bad_register_mapping); -+ -+ saved_reg_count = 0; -+ if (compiler->scratches >= 4) -+ saved_reg_list[saved_reg_count++] = 12; -+ if (compiler->scratches >= 3) -+ saved_reg_list[saved_reg_count++] = 2; -+ if (op >= SLJIT_UDIVI) -+ saved_reg_list[saved_reg_count++] = 1; -+ -+ if (saved_reg_count > 0) { -+ FAIL_IF(push_inst32(compiler, 0xf84d0d00 | (saved_reg_count >= 3 ? 16 : 8) -+ | (saved_reg_list[0] << 12) /* str rX, [sp, #-8/-16]! */)); -+ if (saved_reg_count >= 2) { -+ SLJIT_ASSERT(saved_reg_list[1] < 8); -+ FAIL_IF(push_inst16(compiler, 0x9001 | (saved_reg_list[1] << 8) /* str rX, [sp, #4] */)); -+ } -+ if (saved_reg_count >= 3) { -+ SLJIT_ASSERT(saved_reg_list[2] < 8); -+ FAIL_IF(push_inst16(compiler, 0x9002 | (saved_reg_list[2] << 8) /* str rX, [sp, #8] */)); -+ } -+ } -+ - #if defined(__GNUC__) - FAIL_IF(sljit_emit_ijump(compiler, SLJIT_FAST_CALL, SLJIT_IMM, -- (op == SLJIT_LUDIV ? SLJIT_FUNC_OFFSET(__aeabi_uidivmod) : SLJIT_FUNC_OFFSET(__aeabi_idivmod)))); -+ ((op | 0x2) == SLJIT_UDIVI ? SLJIT_FUNC_OFFSET(__aeabi_uidivmod) : SLJIT_FUNC_OFFSET(__aeabi_idivmod)))); - #else - #error "Software divmod functions are needed" - #endif -- if (compiler->scratches >= 4) { -- FAIL_IF(push_inst32(compiler, 0xf85dcb04 /* ldr ip, [sp], #4 */)); -- return push_inst32(compiler, 0xf85d2b04 /* ldr r2, [sp], #4 */); -- } else if (compiler->scratches >= 3) -- return push_inst32(compiler, 0xf85d2b08 /* ldr r2, [sp], #8 */); -+ -+ if (saved_reg_count > 0) { -+ if (saved_reg_count >= 3) { -+ SLJIT_ASSERT(saved_reg_list[2] < 8); -+ FAIL_IF(push_inst16(compiler, 0x9802 | (saved_reg_list[2] << 8) /* ldr rX, [sp, #8] */)); -+ } -+ if (saved_reg_count >= 2) { -+ SLJIT_ASSERT(saved_reg_list[1] < 8); -+ FAIL_IF(push_inst16(compiler, 0x9801 | (saved_reg_list[1] << 8) /* ldr rX, [sp, #4] */)); -+ } -+ return push_inst32(compiler, 0xf85d0b00 | (saved_reg_count >= 3 ? 16 : 8) -+ | (saved_reg_list[0] << 12) /* ldr rX, [sp], #8/16 */); -+ } - return SLJIT_SUCCESS; - } - -Index: sljit/sljitNativePPC_common.c -=================================================================== ---- sljit/sljitNativePPC_common.c (revision 1554) -+++ sljit/sljitNativePPC_common.c (working copy) -@@ -1267,22 +1267,23 @@ - FAIL_IF(push_inst(compiler, MULLW | D(SLJIT_R0) | A(TMP_REG1) | B(SLJIT_R1))); - return push_inst(compiler, (op == SLJIT_LUMUL ? MULHWU : MULHW) | D(SLJIT_R1) | A(TMP_REG1) | B(SLJIT_R1)); - #endif -- case SLJIT_LUDIV: -- case SLJIT_LSDIV: -+ case SLJIT_UDIVMOD: -+ case SLJIT_SDIVMOD: - FAIL_IF(push_inst(compiler, OR | S(SLJIT_R0) | A(TMP_REG1) | B(SLJIT_R0))); - #if (defined SLJIT_CONFIG_PPC_64 && SLJIT_CONFIG_PPC_64) -- if (int_op) { -- FAIL_IF(push_inst(compiler, (op == SLJIT_LUDIV ? DIVWU : DIVW) | D(SLJIT_R0) | A(TMP_REG1) | B(SLJIT_R1))); -- FAIL_IF(push_inst(compiler, MULLW | D(SLJIT_R1) | A(SLJIT_R0) | B(SLJIT_R1))); -- } else { -- FAIL_IF(push_inst(compiler, (op == SLJIT_LUDIV ? DIVDU : DIVD) | D(SLJIT_R0) | A(TMP_REG1) | B(SLJIT_R1))); -- FAIL_IF(push_inst(compiler, MULLD | D(SLJIT_R1) | A(SLJIT_R0) | B(SLJIT_R1))); -- } -- return push_inst(compiler, SUBF | D(SLJIT_R1) | A(SLJIT_R1) | B(TMP_REG1)); -+ FAIL_IF(push_inst(compiler, (int_op ? (op == SLJIT_UDIVMOD ? DIVWU : DIVW) : (op == SLJIT_UDIVMOD ? DIVDU : DIVD)) | D(SLJIT_R0) | A(SLJIT_R0) | B(SLJIT_R1))); -+ FAIL_IF(push_inst(compiler, (int_op ? MULLW : MULLD) | D(SLJIT_R1) | A(SLJIT_R0) | B(SLJIT_R1))); - #else -- FAIL_IF(push_inst(compiler, (op == SLJIT_LUDIV ? DIVWU : DIVW) | D(SLJIT_R0) | A(TMP_REG1) | B(SLJIT_R1))); -+ FAIL_IF(push_inst(compiler, (op == SLJIT_UDIVMOD ? DIVWU : DIVW) | D(SLJIT_R0) | A(SLJIT_R0) | B(SLJIT_R1))); - FAIL_IF(push_inst(compiler, MULLW | D(SLJIT_R1) | A(SLJIT_R0) | B(SLJIT_R1))); -+#endif - return push_inst(compiler, SUBF | D(SLJIT_R1) | A(SLJIT_R1) | B(TMP_REG1)); -+ case SLJIT_UDIVI: -+ case SLJIT_SDIVI: -+#if (defined SLJIT_CONFIG_PPC_64 && SLJIT_CONFIG_PPC_64) -+ return push_inst(compiler, (int_op ? (op == SLJIT_UDIVI ? DIVWU : DIVW) : (op == SLJIT_UDIVI ? DIVDU : DIVD)) | D(SLJIT_R0) | A(SLJIT_R0) | B(SLJIT_R1)); -+#else -+ return push_inst(compiler, (op == SLJIT_UDIVI ? DIVWU : DIVW) | D(SLJIT_R0) | A(SLJIT_R0) | B(SLJIT_R1)); - #endif - } - -Index: sljit/sljitNativeX86_common.c -=================================================================== ---- sljit/sljitNativeX86_common.c (revision 1554) -+++ sljit/sljitNativeX86_common.c (working copy) -@@ -273,7 +273,9 @@ - #endif - static sljit_si cpu_has_cmov = -1; - --#if defined(_MSC_VER) && _MSC_VER >= 1400 -+#ifdef _WIN32_WCE -+#include <cmnintrin.h> -+#elif defined(_MSC_VER) && _MSC_VER >= 1400 - #include <intrin.h> - #endif - -@@ -742,8 +744,10 @@ - break; - case SLJIT_LUMUL: - case SLJIT_LSMUL: -- case SLJIT_LUDIV: -- case SLJIT_LSDIV: -+ case SLJIT_UDIVMOD: -+ case SLJIT_SDIVMOD: -+ case SLJIT_UDIVI: -+ case SLJIT_SDIVI: - compiler->flags_saved = 0; - #if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64) - #ifdef _WIN64 -@@ -761,9 +765,10 @@ - #endif - compiler->mode32 = op & SLJIT_INT_OP; - #endif -+ SLJIT_COMPILE_ASSERT((SLJIT_UDIVMOD & 0x2) == 0 && SLJIT_UDIVI - 0x2 == SLJIT_UDIVMOD, bad_div_opcode_assignments); - - op = GET_OPCODE(op); -- if (op == SLJIT_LUDIV) { -+ if ((op | 0x2) == SLJIT_UDIVI) { - #if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32) || defined(_WIN64) - EMIT_MOV(compiler, TMP_REG1, 0, SLJIT_R1, 0); - inst = emit_x86_instruction(compiler, 1, SLJIT_R1, 0, SLJIT_R1, 0); -@@ -774,7 +779,7 @@ - *inst = XOR_r_rm; - } - -- if (op == SLJIT_LSDIV) { -+ if ((op | 0x2) == SLJIT_SDIVI) { - #if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32) || defined(_WIN64) - EMIT_MOV(compiler, TMP_REG1, 0, SLJIT_R1, 0); - #endif -@@ -805,10 +810,10 @@ - FAIL_IF(!inst); - INC_SIZE(2); - *inst++ = GROUP_F7; -- *inst = MOD_REG | ((op >= SLJIT_LUDIV) ? reg_map[TMP_REG1] : reg_map[SLJIT_R1]); -+ *inst = MOD_REG | ((op >= SLJIT_UDIVMOD) ? reg_map[TMP_REG1] : reg_map[SLJIT_R1]); - #else - #ifdef _WIN64 -- size = (!compiler->mode32 || op >= SLJIT_LUDIV) ? 3 : 2; -+ size = (!compiler->mode32 || op >= SLJIT_UDIVMOD) ? 3 : 2; - #else - size = (!compiler->mode32) ? 3 : 2; - #endif -@@ -817,11 +822,11 @@ - INC_SIZE(size); - #ifdef _WIN64 - if (!compiler->mode32) -- *inst++ = REX_W | ((op >= SLJIT_LUDIV) ? REX_B : 0); -- else if (op >= SLJIT_LUDIV) -+ *inst++ = REX_W | ((op >= SLJIT_UDIVMOD) ? REX_B : 0); -+ else if (op >= SLJIT_UDIVMOD) - *inst++ = REX_B; - *inst++ = GROUP_F7; -- *inst = MOD_REG | ((op >= SLJIT_LUDIV) ? reg_lmap[TMP_REG1] : reg_lmap[SLJIT_R1]); -+ *inst = MOD_REG | ((op >= SLJIT_UDIVMOD) ? reg_lmap[TMP_REG1] : reg_lmap[SLJIT_R1]); - #else - if (!compiler->mode32) - *inst++ = REX_W; -@@ -836,15 +841,21 @@ - case SLJIT_LSMUL: - *inst |= IMUL; - break; -- case SLJIT_LUDIV: -+ case SLJIT_UDIVMOD: -+ case SLJIT_UDIVI: - *inst |= DIV; - break; -- case SLJIT_LSDIV: -+ case SLJIT_SDIVMOD: -+ case SLJIT_SDIVI: - *inst |= IDIV; - break; - } - #if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64) && !defined(_WIN64) -- EMIT_MOV(compiler, SLJIT_R1, 0, TMP_REG1, 0); -+ if (op <= SLJIT_SDIVMOD) -+ EMIT_MOV(compiler, SLJIT_R1, 0, TMP_REG1, 0); -+#else -+ if (op >= SLJIT_UDIVI) -+ EMIT_MOV(compiler, SLJIT_R1, 0, TMP_REG1, 0); - #endif - break; - } -@@ -1905,60 +1916,62 @@ - return SLJIT_SUCCESS; - } - -- if (FAST_IS_REG(src1)) { -+ if (!(src1 & SLJIT_IMM)) { - if (src2 & SLJIT_IMM) { - #if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64) - if (IS_HALFWORD(src2w) || compiler->mode32) { -- inst = emit_x86_instruction(compiler, 1, SLJIT_IMM, src2w, src1, 0); -+ inst = emit_x86_instruction(compiler, 1, SLJIT_IMM, src2w, src1, src1w); - FAIL_IF(!inst); - *inst = GROUP_F7; - } - else { - FAIL_IF(emit_load_imm64(compiler, TMP_REG2, src2w)); -- inst = emit_x86_instruction(compiler, 1, TMP_REG2, 0, src1, 0); -+ inst = emit_x86_instruction(compiler, 1, TMP_REG2, 0, src1, src1w); - FAIL_IF(!inst); - *inst = TEST_rm_r; - } - #else -- inst = emit_x86_instruction(compiler, 1, SLJIT_IMM, src2w, src1, 0); -+ inst = emit_x86_instruction(compiler, 1, SLJIT_IMM, src2w, src1, src1w); - FAIL_IF(!inst); - *inst = GROUP_F7; - #endif -+ return SLJIT_SUCCESS; - } -- else { -+ else if (FAST_IS_REG(src1)) { - inst = emit_x86_instruction(compiler, 1, src1, 0, src2, src2w); - FAIL_IF(!inst); - *inst = TEST_rm_r; -+ return SLJIT_SUCCESS; - } -- return SLJIT_SUCCESS; - } - -- if (FAST_IS_REG(src2)) { -+ if (!(src2 & SLJIT_IMM)) { - if (src1 & SLJIT_IMM) { - #if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64) - if (IS_HALFWORD(src1w) || compiler->mode32) { -- inst = emit_x86_instruction(compiler, 1, SLJIT_IMM, src1w, src2, 0); -+ inst = emit_x86_instruction(compiler, 1, SLJIT_IMM, src1w, src2, src2w); - FAIL_IF(!inst); - *inst = GROUP_F7; - } - else { - FAIL_IF(emit_load_imm64(compiler, TMP_REG2, src1w)); -- inst = emit_x86_instruction(compiler, 1, TMP_REG2, 0, src2, 0); -+ inst = emit_x86_instruction(compiler, 1, TMP_REG2, 0, src2, src2w); - FAIL_IF(!inst); - *inst = TEST_rm_r; - } - #else -- inst = emit_x86_instruction(compiler, 1, src1, src1w, src2, 0); -+ inst = emit_x86_instruction(compiler, 1, src1, src1w, src2, src2w); - FAIL_IF(!inst); - *inst = GROUP_F7; - #endif -+ return SLJIT_SUCCESS; - } -- else { -+ else if (FAST_IS_REG(src2)) { - inst = emit_x86_instruction(compiler, 1, src2, 0, src1, src1w); - FAIL_IF(!inst); - *inst = TEST_rm_r; -+ return SLJIT_SUCCESS; - } -- return SLJIT_SUCCESS; - } - - EMIT_MOV(compiler, TMP_REG1, 0, src1, src1w); -@@ -2923,3 +2936,69 @@ - { - *(sljit_sw*)addr = new_constant; - } -+ -+SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_x86_is_sse2_available(void) -+{ -+#if (defined SLJIT_DETECT_SSE2 && SLJIT_DETECT_SSE2) -+ if (cpu_has_sse2 == -1) -+ get_cpu_features(); -+ return cpu_has_sse2; -+#else -+ return 1; -+#endif -+} -+ -+SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_x86_is_cmov_available(void) -+{ -+ if (cpu_has_cmov == -1) -+ get_cpu_features(); -+ return cpu_has_cmov; -+} -+ -+SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_x86_emit_cmov(struct sljit_compiler *compiler, -+ sljit_si type, -+ sljit_si dst_reg, -+ sljit_si src, sljit_sw srcw) -+{ -+ sljit_ub* inst; -+ -+ CHECK_ERROR(); -+#if (defined SLJIT_ARGUMENT_CHECKS && SLJIT_ARGUMENT_CHECKS) -+ CHECK_ARGUMENT(sljit_x86_is_cmov_available()); -+ CHECK_ARGUMENT(!(type & ~(0xff | SLJIT_INT_OP))); -+ CHECK_ARGUMENT((type & 0xff) >= SLJIT_EQUAL && (type & 0xff) <= SLJIT_D_ORDERED); -+ CHECK_ARGUMENT(FUNCTION_CHECK_IS_REG(dst_reg & ~SLJIT_INT_OP)); -+ FUNCTION_CHECK_SRC(src, srcw); -+#endif -+#if (defined SLJIT_VERBOSE && SLJIT_VERBOSE) -+ if (SLJIT_UNLIKELY(!!compiler->verbose)) { -+ fprintf(compiler->verbose, " x86_cmov%s %s%s, ", -+ !(dst_reg & SLJIT_INT_OP) ? "" : ".i", -+ JUMP_PREFIX(type), jump_names[type & 0xff]); -+ sljit_verbose_reg(compiler, dst_reg & ~SLJIT_INT_OP); -+ fprintf(compiler->verbose, ", "); -+ sljit_verbose_param(compiler, src, srcw); -+ fprintf(compiler->verbose, "\n"); -+ } -+#endif -+ -+ ADJUST_LOCAL_OFFSET(src, srcw); -+ CHECK_EXTRA_REGS(src, srcw, (void)0); -+ -+#if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64) -+ compiler->mode32 = dst_reg & SLJIT_INT_OP; -+#endif -+ dst_reg &= ~SLJIT_INT_OP; -+ -+ if (SLJIT_UNLIKELY(src & SLJIT_IMM)) { -+ EMIT_MOV(compiler, TMP_REG1, 0, SLJIT_IMM, srcw); -+ src = TMP_REG1; -+ srcw = 0; -+ } -+ -+ inst = emit_x86_instruction(compiler, 2, dst_reg, 0, src, srcw); -+ FAIL_IF(!inst); -+ *inst++ = GROUP_0F; -+ *inst = get_jump_code(type & 0xff) - 0x40; -+ return SLJIT_SUCCESS; -+} -Index: sljit/sljitConfigInternal.h -=================================================================== ---- sljit/sljitConfigInternal.h (revision 1554) -+++ sljit/sljitConfigInternal.h (working copy) -@@ -468,8 +468,13 @@ - - #ifndef SLJIT_CALL - --#if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32) -+#if (defined SLJIT_USE_CDECL_CALLING_CONVENTION && SLJIT_USE_CDECL_CALLING_CONVENTION) - -+/* Force cdecl. */ -+#define SLJIT_CALL -+ -+#elif (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32) -+ - #if defined(__GNUC__) && !defined(__APPLE__) - - #define SLJIT_CALL __attribute__ ((fastcall)) -@@ -608,6 +613,12 @@ - #define SLJIT_LOCALS_OFFSET_BASE ((23 + 1) * sizeof(sljit_sw)) - #endif - -+#elif (defined SLJIT_CONFIG_TILEGX && SLJIT_CONFIG_TILEGX) -+ -+#define SLJIT_NUMBER_OF_REGISTERS 10 -+#define SLJIT_NUMBER_OF_SAVED_REGISTERS 5 -+#define SLJIT_LOCALS_OFFSET_BASE 0 -+ - #elif (defined SLJIT_CONFIG_UNSUPPORTED && SLJIT_CONFIG_UNSUPPORTED) - - #define SLJIT_NUMBER_OF_REGISTERS 0 -Index: sljit/sljitConfig.h -=================================================================== ---- sljit/sljitConfig.h (revision 1554) -+++ sljit/sljitConfig.h (working copy) -@@ -96,6 +96,15 @@ - #define SLJIT_EXECUTABLE_ALLOCATOR 1 - #endif - -+/* Force cdecl calling convention even if a better calling -+ convention (e.g. fastcall) is supported by the C compiler. -+ If this option is enabled, C functions without -+ SLJIT_CALL can also be called from JIT code. */ -+#ifndef SLJIT_USE_CDECL_CALLING_CONVENTION -+/* Disabled by default */ -+#define SLJIT_USE_CDECL_CALLING_CONVENTION 0 -+#endif -+ - /* Return with error when an invalid argument is passed. */ - #ifndef SLJIT_ARGUMENT_CHECKS - /* Disabled by default */ -Index: sljit/sljitNativeTILEGX_64.c -=================================================================== ---- sljit/sljitNativeTILEGX_64.c (revision 1554) -+++ sljit/sljitNativeTILEGX_64.c (working copy) -@@ -35,21 +35,21 @@ - #define SIMM_16BIT_MIN (-0x8000) - #define SIMM_17BIT_MAX (0xffff) - #define SIMM_17BIT_MIN (-0x10000) --#define SIMM_32BIT_MIN (-0x80000000) - #define SIMM_32BIT_MAX (0x7fffffff) --#define SIMM_48BIT_MIN (0x800000000000L) -+#define SIMM_32BIT_MIN (-0x7fffffff - 1) - #define SIMM_48BIT_MAX (0x7fffffff0000L) -+#define SIMM_48BIT_MIN (-0x800000000000L) - #define IMM16(imm) ((imm) & 0xffff) - - #define UIMM_16BIT_MAX (0xffff) - --#define TMP_REG1 (SLJIT_NO_REGISTERS + 1) --#define TMP_REG2 (SLJIT_NO_REGISTERS + 2) --#define TMP_REG3 (SLJIT_NO_REGISTERS + 3) --#define ADDR_TMP (SLJIT_NO_REGISTERS + 4) -+#define TMP_REG1 (SLJIT_NUMBER_OF_REGISTERS + 2) -+#define TMP_REG2 (SLJIT_NUMBER_OF_REGISTERS + 3) -+#define TMP_REG3 (SLJIT_NUMBER_OF_REGISTERS + 4) -+#define ADDR_TMP (SLJIT_NUMBER_OF_REGISTERS + 5) - #define PIC_ADDR_REG TMP_REG2 - --static SLJIT_CONST sljit_ub reg_map[SLJIT_NO_REGISTERS + 5] = { -+static SLJIT_CONST sljit_ub reg_map[SLJIT_NUMBER_OF_REGISTERS + 6] = { - 63, 0, 1, 2, 3, 4, 30, 31, 32, 33, 34, 54, 5, 16, 6, 7 - }; - -@@ -58,11 +58,6 @@ - #define TMP_REG2_mapped 16 - #define TMP_REG3_mapped 6 - #define ADDR_TMP_mapped 7 --#define SLJIT_SAVED_REG1_mapped 30 --#define SLJIT_SAVED_REG2_mapped 31 --#define SLJIT_SAVED_REG3_mapped 32 --#define SLJIT_SAVED_EREG1_mapped 33 --#define SLJIT_SAVED_EREG2_mapped 34 - - /* Flags are keept in volatile registers. */ - #define EQUAL_FLAG 8 -@@ -399,6 +394,9 @@ - #define SUB(dst, srca, srcb) \ - push_3_buffer(compiler, TILEGX_OPC_SUB, dst, srca, srcb, __LINE__) - -+#define MUL(dst, srca, srcb) \ -+ push_3_buffer(compiler, TILEGX_OPC_MULX, dst, srca, srcb, __LINE__) -+ - #define NOR(dst, srca, srcb) \ - push_3_buffer(compiler, TILEGX_OPC_NOR, dst, srca, srcb, __LINE__) - -@@ -547,8 +545,8 @@ - - const struct Format* match = NULL; - const struct Format *b = NULL; -- unsigned int i = 0; -- for (i; i < sizeof formats / sizeof formats[0]; i++) { -+ unsigned int i; -+ for (i = 0; i < sizeof formats / sizeof formats[0]; i++) { - b = &formats[i]; - if ((b->pipe_mask & compatible_pipes) == b->pipe_mask) { - match = b; -@@ -625,7 +623,6 @@ - - static sljit_si update_buffer(struct sljit_compiler *compiler) - { -- int count; - int i; - int orig_index = inst_buf_index; - struct jit_instr inst0 = inst_buf[0]; -@@ -738,8 +735,10 @@ - - static sljit_si flush_buffer(struct sljit_compiler *compiler) - { -- while (inst_buf_index != 0) -- update_buffer(compiler); -+ while (inst_buf_index != 0) { -+ FAIL_IF(update_buffer(compiler)); -+ } -+ return SLJIT_SUCCESS; - } - - static sljit_si push_4_buffer(struct sljit_compiler *compiler, tilegx_mnemonic opc, int op0, int op1, int op2, int op3, int line) -@@ -787,6 +786,7 @@ - case TILEGX_OPC_ADD: - case TILEGX_OPC_AND: - case TILEGX_OPC_SUB: -+ case TILEGX_OPC_MULX: - case TILEGX_OPC_OR: - case TILEGX_OPC_XOR: - case TILEGX_OPC_NOR: -@@ -905,7 +905,6 @@ - sljit_sw diff; - sljit_uw target_addr; - sljit_ins *inst; -- sljit_ins saved_inst; - - if (jump->flags & SLJIT_REWRITABLE_JUMP) - return code_ptr; -@@ -1009,7 +1008,7 @@ - struct sljit_const *const_; - - CHECK_ERROR_PTR(); -- check_sljit_generate_code(compiler); -+ CHECK_PTR(check_sljit_generate_code(compiler)); - reverse_buf(compiler); - - code = (sljit_ins *)SLJIT_MALLOC_EXEC(compiler->size * sizeof(sljit_ins)); -@@ -1178,13 +1177,13 @@ - sljit_si fscratches, sljit_si fsaveds, sljit_si local_size) - { - sljit_ins base; -- sljit_ins bundle = 0; -- -+ sljit_si i, tmp; -+ - CHECK_ERROR(); -- check_sljit_emit_enter(compiler, options, args, scratches, saveds, fscratches, fsaveds, local_size); -+ CHECK(check_sljit_emit_enter(compiler, options, args, scratches, saveds, fscratches, fsaveds, local_size)); - set_emit_enter(compiler, options, args, scratches, saveds, fscratches, fsaveds, local_size); - -- local_size += (saveds + 1) * sizeof(sljit_sw); -+ local_size += GET_SAVED_REGISTERS_SIZE(scratches, saveds, 1); - local_size = (local_size + 7) & ~7; - compiler->local_size = local_size; - -@@ -1200,46 +1199,41 @@ - local_size = 0; - } - -+ /* Save the return address. */ - FAIL_IF(ADDLI(ADDR_TMP_mapped, base, local_size - 8)); - FAIL_IF(ST_ADD(ADDR_TMP_mapped, RA, -8)); - -- if (saveds >= 1) -- FAIL_IF(ST_ADD(ADDR_TMP_mapped, SLJIT_SAVED_REG1_mapped, -8)); -+ /* Save the S registers. */ -+ tmp = saveds < SLJIT_NUMBER_OF_SAVED_REGISTERS ? (SLJIT_S0 + 1 - saveds) : SLJIT_FIRST_SAVED_REG; -+ for (i = SLJIT_S0; i >= tmp; i--) { -+ FAIL_IF(ST_ADD(ADDR_TMP_mapped, reg_map[i], -8)); -+ } - -- if (saveds >= 2) -- FAIL_IF(ST_ADD(ADDR_TMP_mapped, SLJIT_SAVED_REG2_mapped, -8)); -+ /* Save the R registers that need to be reserved. */ -+ for (i = scratches; i >= SLJIT_FIRST_SAVED_REG; i--) { -+ FAIL_IF(ST_ADD(ADDR_TMP_mapped, reg_map[i], -8)); -+ } - -- if (saveds >= 3) -- FAIL_IF(ST_ADD(ADDR_TMP_mapped, SLJIT_SAVED_REG3_mapped, -8)); -+ /* Move the arguments to S registers. */ -+ for (i = 0; i < args; i++) { -+ FAIL_IF(ADD(reg_map[SLJIT_S0 - i], i, ZERO)); -+ } - -- if (saveds >= 4) -- FAIL_IF(ST_ADD(ADDR_TMP_mapped, SLJIT_SAVED_EREG1_mapped, -8)); -- -- if (saveds >= 5) -- FAIL_IF(ST_ADD(ADDR_TMP_mapped, SLJIT_SAVED_EREG2_mapped, -8)); -- -- if (args >= 1) -- FAIL_IF(ADD(SLJIT_SAVED_REG1_mapped, 0, ZERO)); -- -- if (args >= 2) -- FAIL_IF(ADD(SLJIT_SAVED_REG2_mapped, 1, ZERO)); -- -- if (args >= 3) -- FAIL_IF(ADD(SLJIT_SAVED_REG3_mapped, 2, ZERO)); -- - return SLJIT_SUCCESS; - } - --SLJIT_API_FUNC_ATTRIBUTE void sljit_set_context(struct sljit_compiler *compiler, -+SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_set_context(struct sljit_compiler *compiler, - sljit_si options, sljit_si args, sljit_si scratches, sljit_si saveds, - sljit_si fscratches, sljit_si fsaveds, sljit_si local_size) - { -- CHECK_ERROR_VOID(); -- check_sljit_set_context(compiler, options, args, scratches, saveds, fscratches, fsaveds, local_size); -+ CHECK_ERROR(); -+ CHECK(check_sljit_set_context(compiler, options, args, scratches, saveds, fscratches, fsaveds, local_size)); - set_set_context(compiler, options, args, scratches, saveds, fscratches, fsaveds, local_size); - -- local_size += (saveds + 1) * sizeof(sljit_sw); -+ local_size += GET_SAVED_REGISTERS_SIZE(scratches, saveds, 1); - compiler->local_size = (local_size + 7) & ~7; -+ -+ return SLJIT_SUCCESS; - } - - SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_return(struct sljit_compiler *compiler, sljit_si op, sljit_si src, sljit_sw srcw) -@@ -1246,10 +1240,11 @@ - { - sljit_si local_size; - sljit_ins base; -- int addr_initialized = 0; -+ sljit_si i, tmp; -+ sljit_si saveds; - - CHECK_ERROR(); -- check_sljit_emit_return(compiler, op, src, srcw); -+ CHECK(check_sljit_emit_return(compiler, op, src, srcw)); - - FAIL_IF(emit_mov_before_return(compiler, op, src, srcw)); - -@@ -1263,52 +1258,22 @@ - local_size = 0; - } - -+ /* Restore the return address. */ - FAIL_IF(ADDLI(ADDR_TMP_mapped, base, local_size - 8)); -- FAIL_IF(LD(RA, ADDR_TMP_mapped)); -+ FAIL_IF(LD_ADD(RA, ADDR_TMP_mapped, -8)); - -- if (compiler->saveds >= 5) { -- FAIL_IF(ADDLI(ADDR_TMP_mapped, base, local_size - 48)); -- addr_initialized = 1; -- -- FAIL_IF(LD_ADD(SLJIT_SAVED_EREG2_mapped, ADDR_TMP_mapped, 8)); -+ /* Restore the S registers. */ -+ saveds = compiler->saveds; -+ tmp = saveds < SLJIT_NUMBER_OF_SAVED_REGISTERS ? (SLJIT_S0 + 1 - saveds) : SLJIT_FIRST_SAVED_REG; -+ for (i = SLJIT_S0; i >= tmp; i--) { -+ FAIL_IF(LD_ADD(reg_map[i], ADDR_TMP_mapped, -8)); - } - -- if (compiler->saveds >= 4) { -- if (addr_initialized == 0) { -- FAIL_IF(ADDLI(ADDR_TMP_mapped, base, local_size - 40)); -- addr_initialized = 1; -- } -- -- FAIL_IF(LD_ADD(SLJIT_SAVED_EREG1_mapped, ADDR_TMP_mapped, 8)); -+ /* Restore the R registers that need to be reserved. */ -+ for (i = compiler->scratches; i >= SLJIT_FIRST_SAVED_REG; i--) { -+ FAIL_IF(LD_ADD(reg_map[i], ADDR_TMP_mapped, -8)); - } - -- if (compiler->saveds >= 3) { -- if (addr_initialized == 0) { -- FAIL_IF(ADDLI(ADDR_TMP_mapped, base, local_size - 32)); -- addr_initialized = 1; -- } -- -- FAIL_IF(LD_ADD(SLJIT_SAVED_REG3_mapped, ADDR_TMP_mapped, 8)); -- } -- -- if (compiler->saveds >= 2) { -- if (addr_initialized == 0) { -- FAIL_IF(ADDLI(ADDR_TMP_mapped, base, local_size - 24)); -- addr_initialized = 1; -- } -- -- FAIL_IF(LD_ADD(SLJIT_SAVED_REG2_mapped, ADDR_TMP_mapped, 8)); -- } -- -- if (compiler->saveds >= 1) { -- if (addr_initialized == 0) { -- FAIL_IF(ADDLI(ADDR_TMP_mapped, base, local_size - 16)); -- /* addr_initialized = 1; no need to initialize as it's the last one. */ -- } -- -- FAIL_IF(LD_ADD(SLJIT_SAVED_REG1_mapped, ADDR_TMP_mapped, 8)); -- } -- - if (compiler->local_size <= SIMM_16BIT_MAX) - FAIL_IF(ADDLI(SLJIT_LOCALS_REG_mapped, SLJIT_LOCALS_REG_mapped, compiler->local_size)); - else -@@ -1585,7 +1550,7 @@ - SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_fast_enter(struct sljit_compiler *compiler, sljit_si dst, sljit_sw dstw) - { - CHECK_ERROR(); -- check_sljit_emit_fast_enter(compiler, dst, dstw); -+ CHECK(check_sljit_emit_fast_enter(compiler, dst, dstw)); - ADJUST_LOCAL_OFFSET(dst, dstw); - - /* For UNUSED dst. Uncommon, but possible. */ -@@ -1602,7 +1567,7 @@ - SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_fast_return(struct sljit_compiler *compiler, sljit_si src, sljit_sw srcw) - { - CHECK_ERROR(); -- check_sljit_emit_fast_return(compiler, src, srcw); -+ CHECK(check_sljit_emit_fast_return(compiler, src, srcw)); - ADJUST_LOCAL_OFFSET(src, srcw); - - if (FAST_IS_REG(src)) -@@ -1636,9 +1601,11 @@ - if (op == SLJIT_MOV_SI) - return BFEXTS(reg_map[dst], reg_map[src2], 0, 31); - -- return BFEXTU(reg_map[dst], reg_map[src2], 0, 31); -- } else if (dst != src2) -- SLJIT_ASSERT_STOP(); -+ return BFEXTU(reg_map[dst], reg_map[src2], 0, 31); -+ } else if (dst != src2) { -+ SLJIT_ASSERT(src2 == 0); -+ return ADD(reg_map[dst], reg_map[src2], ZERO); -+ } - - return SLJIT_SUCCESS; - -@@ -1650,8 +1617,10 @@ - return BFEXTS(reg_map[dst], reg_map[src2], 0, 7); - - return BFEXTU(reg_map[dst], reg_map[src2], 0, 7); -- } else if (dst != src2) -- SLJIT_ASSERT_STOP(); -+ } else if (dst != src2) { -+ SLJIT_ASSERT(src2 == 0); -+ return ADD(reg_map[dst], reg_map[src2], ZERO); -+ } - - return SLJIT_SUCCESS; - -@@ -1663,8 +1632,10 @@ - return BFEXTS(reg_map[dst], reg_map[src2], 0, 15); - - return BFEXTU(reg_map[dst], reg_map[src2], 0, 15); -- } else if (dst != src2) -- SLJIT_ASSERT_STOP(); -+ } else if (dst != src2) { -+ SLJIT_ASSERT(src2 == 0); -+ return ADD(reg_map[dst], reg_map[src2], ZERO); -+ } - - return SLJIT_SUCCESS; - -@@ -1811,7 +1782,6 @@ - else { - /* Rare ocasion. */ - FAIL_IF(ADD(TMP_EREG2, reg_map[src1], ZERO)); -- - overflow_ra = TMP_EREG2; - } - } -@@ -1903,6 +1873,17 @@ - - return SLJIT_SUCCESS; - -+ case SLJIT_MUL: -+ if (flags & SRC2_IMM) { -+ FAIL_IF(load_immediate(compiler, TMP_REG2_mapped, src2)); -+ src2 = TMP_REG2; -+ flags &= ~SRC2_IMM; -+ } -+ -+ FAIL_IF(MUL(reg_map[dst], reg_map[src1], reg_map[src2])); -+ -+ return SLJIT_SUCCESS; -+ - #define EMIT_LOGICAL(op_imm, op_norm) \ - if (flags & SRC2_IMM) { \ - FAIL_IF(load_immediate(compiler, ADDR_TMP_mapped, src2)); \ -@@ -1950,8 +1931,8 @@ - } else { \ - if (op & SLJIT_SET_E) \ - FAIL_IF(push_3_buffer( \ -- compiler, op_imm, reg_map[dst], reg_map[src1], \ -- src2 & 0x3F, __LINE__)); \ -+ compiler, op_norm, EQUAL_FLAG, reg_map[src1], \ -+ reg_map[src2], __LINE__)); \ - if (CHECK_FLAGS(SLJIT_SET_E)) \ - FAIL_IF(push_3_buffer( \ - compiler, op_norm, reg_map[dst], reg_map[src1], \ -@@ -2105,9 +2086,10 @@ - { - sljit_si sugg_dst_ar, dst_ar; - sljit_si flags = GET_ALL_FLAGS(op); -+ sljit_si mem_type = (op & SLJIT_INT_OP) ? (INT_DATA | SIGNED_DATA) : WORD_DATA; - - CHECK_ERROR(); -- check_sljit_emit_op_flags(compiler, op, dst, dstw, src, srcw, type); -+ CHECK(check_sljit_emit_op_flags(compiler, op, dst, dstw, src, srcw, type)); - ADJUST_LOCAL_OFFSET(dst, dstw); - - if (dst == SLJIT_UNUSED) -@@ -2114,6 +2096,8 @@ - return SLJIT_SUCCESS; - - op = GET_OPCODE(op); -+ if (op == SLJIT_MOV_SI || op == SLJIT_MOV_UI) -+ mem_type = INT_DATA | SIGNED_DATA; - sugg_dst_ar = reg_map[(op < SLJIT_ADD && FAST_IS_REG(dst)) ? dst : TMP_REG2]; - - compiler->cache_arg = 0; -@@ -2120,51 +2104,43 @@ - compiler->cache_argw = 0; - if (op >= SLJIT_ADD && (src & SLJIT_MEM)) { - ADJUST_LOCAL_OFFSET(src, srcw); -- FAIL_IF(emit_op_mem2(compiler, WORD_DATA | LOAD_DATA, TMP_REG1_mapped, src, srcw, dst, dstw)); -+ FAIL_IF(emit_op_mem2(compiler, mem_type | LOAD_DATA, TMP_REG1_mapped, src, srcw, dst, dstw)); - src = TMP_REG1; - srcw = 0; - } - -- switch (type) { -- case SLJIT_C_EQUAL: -- case SLJIT_C_NOT_EQUAL: -+ switch (type & 0xff) { -+ case SLJIT_EQUAL: -+ case SLJIT_NOT_EQUAL: - FAIL_IF(CMPLTUI(sugg_dst_ar, EQUAL_FLAG, 1)); - dst_ar = sugg_dst_ar; - break; -- case SLJIT_C_LESS: -- case SLJIT_C_GREATER_EQUAL: -- case SLJIT_C_FLOAT_LESS: -- case SLJIT_C_FLOAT_GREATER_EQUAL: -+ case SLJIT_LESS: -+ case SLJIT_GREATER_EQUAL: - dst_ar = ULESS_FLAG; - break; -- case SLJIT_C_GREATER: -- case SLJIT_C_LESS_EQUAL: -- case SLJIT_C_FLOAT_GREATER: -- case SLJIT_C_FLOAT_LESS_EQUAL: -+ case SLJIT_GREATER: -+ case SLJIT_LESS_EQUAL: - dst_ar = UGREATER_FLAG; - break; -- case SLJIT_C_SIG_LESS: -- case SLJIT_C_SIG_GREATER_EQUAL: -+ case SLJIT_SIG_LESS: -+ case SLJIT_SIG_GREATER_EQUAL: - dst_ar = LESS_FLAG; - break; -- case SLJIT_C_SIG_GREATER: -- case SLJIT_C_SIG_LESS_EQUAL: -+ case SLJIT_SIG_GREATER: -+ case SLJIT_SIG_LESS_EQUAL: - dst_ar = GREATER_FLAG; - break; -- case SLJIT_C_OVERFLOW: -- case SLJIT_C_NOT_OVERFLOW: -+ case SLJIT_OVERFLOW: -+ case SLJIT_NOT_OVERFLOW: - dst_ar = OVERFLOW_FLAG; - break; -- case SLJIT_C_MUL_OVERFLOW: -- case SLJIT_C_MUL_NOT_OVERFLOW: -+ case SLJIT_MUL_OVERFLOW: -+ case SLJIT_MUL_NOT_OVERFLOW: - FAIL_IF(CMPLTUI(sugg_dst_ar, OVERFLOW_FLAG, 1)); - dst_ar = sugg_dst_ar; - type ^= 0x1; /* Flip type bit for the XORI below. */ - break; -- case SLJIT_C_FLOAT_EQUAL: -- case SLJIT_C_FLOAT_NOT_EQUAL: -- dst_ar = EQUAL_FLAG; -- break; - - default: - SLJIT_ASSERT_STOP(); -@@ -2180,11 +2156,11 @@ - if (op >= SLJIT_ADD) { - if (TMP_REG2_mapped != dst_ar) - FAIL_IF(ADD(TMP_REG2_mapped, dst_ar, ZERO)); -- return emit_op(compiler, op | flags, CUMULATIVE_OP | LOGICAL_OP | IMM_OP | ALT_KEEP_CACHE, dst, dstw, src, srcw, TMP_REG2, 0); -+ return emit_op(compiler, op | flags, mem_type | CUMULATIVE_OP | LOGICAL_OP | IMM_OP | ALT_KEEP_CACHE, dst, dstw, src, srcw, TMP_REG2, 0); - } - - if (dst & SLJIT_MEM) -- return emit_op_mem(compiler, WORD_DATA, dst_ar, dst, dstw); -+ return emit_op_mem(compiler, mem_type, dst_ar, dst, dstw); - - if (sugg_dst_ar != dst_ar) - return ADD(sugg_dst_ar, dst_ar, ZERO); -@@ -2194,7 +2170,7 @@ - - SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_op0(struct sljit_compiler *compiler, sljit_si op) { - CHECK_ERROR(); -- check_sljit_emit_op0(compiler, op); -+ CHECK(check_sljit_emit_op0(compiler, op)); - - op = GET_OPCODE(op); - switch (op) { -@@ -2204,10 +2180,10 @@ - case SLJIT_BREAKPOINT: - return PI(BPT); - -- case SLJIT_UMUL: -- case SLJIT_SMUL: -- case SLJIT_UDIV: -- case SLJIT_SDIV: -+ case SLJIT_LUMUL: -+ case SLJIT_LSMUL: -+ case SLJIT_UDIVI: -+ case SLJIT_SDIVI: - SLJIT_ASSERT_STOP(); - } - -@@ -2217,7 +2193,7 @@ - SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_op1(struct sljit_compiler *compiler, sljit_si op, sljit_si dst, sljit_sw dstw, sljit_si src, sljit_sw srcw) - { - CHECK_ERROR(); -- check_sljit_emit_op1(compiler, op, dst, dstw, src, srcw); -+ CHECK(check_sljit_emit_op1(compiler, op, dst, dstw, src, srcw)); - ADJUST_LOCAL_OFFSET(dst, dstw); - ADJUST_LOCAL_OFFSET(src, srcw); - -@@ -2273,7 +2249,7 @@ - return emit_op(compiler, SLJIT_SUB | GET_ALL_FLAGS(op), IMM_OP, dst, dstw, SLJIT_IMM, 0, src, srcw); - - case SLJIT_CLZ: -- return emit_op(compiler, op, 0, dst, dstw, TMP_REG1, 0, src, srcw); -+ return emit_op(compiler, op, (op & SLJIT_INT_OP) ? INT_DATA : WORD_DATA, dst, dstw, TMP_REG1, 0, src, srcw); - } - - return SLJIT_SUCCESS; -@@ -2282,7 +2258,7 @@ - SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_op2(struct sljit_compiler *compiler, sljit_si op, sljit_si dst, sljit_sw dstw, sljit_si src1, sljit_sw src1w, sljit_si src2, sljit_sw src2w) - { - CHECK_ERROR(); -- check_sljit_emit_op2(compiler, op, dst, dstw, src1, src1w, src2, src2w); -+ CHECK(check_sljit_emit_op2(compiler, op, dst, dstw, src1, src1w, src2, src2w)); - ADJUST_LOCAL_OFFSET(dst, dstw); - ADJUST_LOCAL_OFFSET(src1, src1w); - ADJUST_LOCAL_OFFSET(src2, src2w); -@@ -2325,7 +2301,7 @@ - flush_buffer(compiler); - - CHECK_ERROR_PTR(); -- check_sljit_emit_label(compiler); -+ CHECK_PTR(check_sljit_emit_label(compiler)); - - if (compiler->last_label && compiler->last_label->size == compiler->size) - return compiler->last_label; -@@ -2344,7 +2320,7 @@ - flush_buffer(compiler); - - CHECK_ERROR(); -- check_sljit_emit_ijump(compiler, type, src, srcw); -+ CHECK(check_sljit_emit_ijump(compiler, type, src, srcw)); - ADJUST_LOCAL_OFFSET(src, srcw); - - if (FAST_IS_REG(src)) { -@@ -2404,8 +2380,10 @@ - - return SLJIT_SUCCESS; - -- } else if (src & SLJIT_MEM) -+ } else if (src & SLJIT_MEM) { - FAIL_IF(emit_op(compiler, SLJIT_MOV, WORD_DATA, TMP_REG2, 0, TMP_REG1, 0, src, srcw)); -+ flush_buffer(compiler); -+ } - - FAIL_IF(JR_SOLO(reg_map[src_r])); - -@@ -2432,7 +2410,7 @@ - flush_buffer(compiler); - - CHECK_ERROR_PTR(); -- check_sljit_emit_jump(compiler, type); -+ CHECK_PTR(check_sljit_emit_jump(compiler, type)); - - jump = (struct sljit_jump *)ensure_abuf(compiler, sizeof(struct sljit_jump)); - PTR_FAIL_IF(!jump); -@@ -2440,48 +2418,42 @@ - type &= 0xff; - - switch (type) { -- case SLJIT_C_EQUAL: -- case SLJIT_C_FLOAT_NOT_EQUAL: -+ case SLJIT_EQUAL: - BR_NZ(EQUAL_FLAG); - break; -- case SLJIT_C_NOT_EQUAL: -- case SLJIT_C_FLOAT_EQUAL: -+ case SLJIT_NOT_EQUAL: - BR_Z(EQUAL_FLAG); - break; -- case SLJIT_C_LESS: -- case SLJIT_C_FLOAT_LESS: -+ case SLJIT_LESS: - BR_Z(ULESS_FLAG); - break; -- case SLJIT_C_GREATER_EQUAL: -- case SLJIT_C_FLOAT_GREATER_EQUAL: -+ case SLJIT_GREATER_EQUAL: - BR_NZ(ULESS_FLAG); - break; -- case SLJIT_C_GREATER: -- case SLJIT_C_FLOAT_GREATER: -+ case SLJIT_GREATER: - BR_Z(UGREATER_FLAG); - break; -- case SLJIT_C_LESS_EQUAL: -- case SLJIT_C_FLOAT_LESS_EQUAL: -+ case SLJIT_LESS_EQUAL: - BR_NZ(UGREATER_FLAG); - break; -- case SLJIT_C_SIG_LESS: -+ case SLJIT_SIG_LESS: - BR_Z(LESS_FLAG); - break; -- case SLJIT_C_SIG_GREATER_EQUAL: -+ case SLJIT_SIG_GREATER_EQUAL: - BR_NZ(LESS_FLAG); - break; -- case SLJIT_C_SIG_GREATER: -+ case SLJIT_SIG_GREATER: - BR_Z(GREATER_FLAG); - break; -- case SLJIT_C_SIG_LESS_EQUAL: -+ case SLJIT_SIG_LESS_EQUAL: - BR_NZ(GREATER_FLAG); - break; -- case SLJIT_C_OVERFLOW: -- case SLJIT_C_MUL_OVERFLOW: -+ case SLJIT_OVERFLOW: -+ case SLJIT_MUL_OVERFLOW: - BR_Z(OVERFLOW_FLAG); - break; -- case SLJIT_C_NOT_OVERFLOW: -- case SLJIT_C_MUL_NOT_OVERFLOW: -+ case SLJIT_NOT_OVERFLOW: -+ case SLJIT_MUL_NOT_OVERFLOW: - BR_NZ(OVERFLOW_FLAG); - break; - default: -@@ -2536,7 +2508,7 @@ - flush_buffer(compiler); - - CHECK_ERROR_PTR(); -- check_sljit_emit_const(compiler, dst, dstw, init_value); -+ CHECK_PTR(check_sljit_emit_const(compiler, dst, dstw, init_value)); - ADJUST_LOCAL_OFFSET(dst, dstw); - - const_ = (struct sljit_const *)ensure_abuf(compiler, sizeof(struct sljit_const)); -@@ -2572,3 +2544,18 @@ - inst[3] = (inst[3] & ~(0xFFFFL << 43)) | ((new_constant & 0xFFFFL) << 43); - SLJIT_CACHE_FLUSH(inst, inst + 4); - } -+ -+SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_get_register_index(sljit_si reg) -+{ -+ CHECK_REG_INDEX(check_sljit_get_register_index(reg)); -+ return reg_map[reg]; -+} -+ -+SLJIT_API_FUNC_ATTRIBUTE sljit_si sljit_emit_op_custom(struct sljit_compiler *compiler, -+ void *instruction, sljit_si size) -+{ -+ CHECK_ERROR(); -+ CHECK(check_sljit_emit_op_custom(compiler, instruction, size)); -+ return SLJIT_ERR_UNSUPPORTED; -+} -+ -Index: pcregrep.c -=================================================================== ---- pcregrep.c (revision 1554) -+++ pcregrep.c (working copy) -@@ -1692,9 +1692,13 @@ - - if (filenames == FN_NOMATCH_ONLY) return 1; - -+ /* If all we want is a yes/no answer, stop now. */ -+ -+ if (quiet) return 0; -+ - /* Just count if just counting is wanted. */ - -- if (count_only) count++; -+ else if (count_only) count++; - - /* When handling a binary file and binary-files==binary, the "binary" - variable will be set true (it's false in all other cases). In this -@@ -1715,10 +1719,6 @@ - return 0; - } - -- /* Likewise, if all we want is a yes/no answer. */ -- -- else if (quiet) return 0; -- - /* The --only-matching option prints just the substring that matched, - and/or one or more captured portions of it, as long as these strings are - not empty. The --file-offsets and --line-offsets options output offsets for -@@ -2089,7 +2089,7 @@ - - /* Print the match count if wanted */ - --if (count_only) -+if (count_only && !quiet) - { - if (count > 0 || !omit_zero_count) - { -Index: pcre_study.c -=================================================================== ---- pcre_study.c (revision 1554) -+++ pcre_study.c (working copy) -@@ -71,6 +71,7 @@ - startcode pointer to start of the whole pattern's code - options the compiling options - recurses chain of recurse_check to catch mutual recursion -+ countptr pointer to call count (to catch over complexity) - - Returns: the minimum length - -1 if \C in UTF-8 mode or (*ACCEPT) was encountered -@@ -80,7 +81,8 @@ - - static int - find_minlength(const REAL_PCRE *re, const pcre_uchar *code, -- const pcre_uchar *startcode, int options, recurse_check *recurses) -+ const pcre_uchar *startcode, int options, recurse_check *recurses, -+ int *countptr) - { - int length = -1; - /* PCRE_UTF16 has the same value as PCRE_UTF8. */ -@@ -90,6 +92,8 @@ - register int branchlength = 0; - register pcre_uchar *cc = (pcre_uchar *)code + 1 + LINK_SIZE; - -+if ((*countptr)++ > 1000) return -1; /* too complex */ -+ - if (*code == OP_CBRA || *code == OP_SCBRA || - *code == OP_CBRAPOS || *code == OP_SCBRAPOS) cc += IMM2_SIZE; - -@@ -131,7 +135,7 @@ - case OP_SBRAPOS: - case OP_ONCE: - case OP_ONCE_NC: -- d = find_minlength(re, cc, startcode, options, recurses); -+ d = find_minlength(re, cc, startcode, options, recurses, countptr); - if (d < 0) return d; - branchlength += d; - do cc += GET(cc, 1); while (*cc == OP_ALT); -@@ -415,7 +419,8 @@ - int dd; - this_recurse.prev = recurses; - this_recurse.group = cs; -- dd = find_minlength(re, cs, startcode, options, &this_recurse); -+ dd = find_minlength(re, cs, startcode, options, &this_recurse, -+ countptr); - if (dd < d) d = dd; - } - } -@@ -451,7 +456,8 @@ - { - this_recurse.prev = recurses; - this_recurse.group = cs; -- d = find_minlength(re, cs, startcode, options, &this_recurse); -+ d = find_minlength(re, cs, startcode, options, &this_recurse, -+ countptr); - } - } - } -@@ -514,7 +520,7 @@ - this_recurse.prev = recurses; - this_recurse.group = cs; - branchlength += find_minlength(re, cs, startcode, options, -- &this_recurse); -+ &this_recurse, countptr); - } - } - cc += 1 + LINK_SIZE; -@@ -1453,6 +1459,7 @@ - #endif - { - int min; -+int count = 0; - BOOL bits_set = FALSE; - pcre_uint8 start_bits[32]; - PUBL(extra) *extra = NULL; -@@ -1539,7 +1546,7 @@ - - /* Find the minimum length of subject string. */ - --switch(min = find_minlength(re, code, code, re->options, NULL)) -+switch(min = find_minlength(re, code, code, re->options, NULL, &count)) - { - case -2: *errorptr = "internal error: missing capturing bracket"; return NULL; - case -3: *errorptr = "internal error: opcode not recognized"; return NULL; -Index: pcre_internal.h -=================================================================== ---- pcre_internal.h (revision 1554) -+++ pcre_internal.h (working copy) -@@ -984,7 +984,7 @@ - #ifndef EBCDIC - - #define HSPACE_LIST \ -- CHAR_HT, CHAR_SPACE, 0xa0, \ -+ CHAR_HT, CHAR_SPACE, CHAR_NBSP, \ - 0x1680, 0x180e, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, \ - 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202f, 0x205f, 0x3000, \ - NOTACHAR -@@ -1010,7 +1010,7 @@ - #define HSPACE_BYTE_CASES \ - case CHAR_HT: \ - case CHAR_SPACE: \ -- case 0xa0 /* NBSP */ -+ case CHAR_NBSP - - #define HSPACE_CASES \ - HSPACE_BYTE_CASES: \ -@@ -1037,11 +1037,12 @@ - /* ------ EBCDIC environments ------ */ - - #else --#define HSPACE_LIST CHAR_HT, CHAR_SPACE -+#define HSPACE_LIST CHAR_HT, CHAR_SPACE, CHAR_NBSP, NOTACHAR - - #define HSPACE_BYTE_CASES \ - case CHAR_HT: \ -- case CHAR_SPACE -+ case CHAR_SPACE: \ -+ case CHAR_NBSP - - #define HSPACE_CASES HSPACE_BYTE_CASES - -@@ -1215,6 +1216,7 @@ - - #define CHAR_ESC '\047' - #define CHAR_DEL '\007' -+#define CHAR_NBSP '\x41' - #define STR_ESC "\047" - #define STR_DEL "\007" - -@@ -1229,6 +1231,7 @@ - #define CHAR_NEL ((unsigned char)'\x85') - #define CHAR_ESC '\033' - #define CHAR_DEL '\177' -+#define CHAR_NBSP ((unsigned char)'\xa0') - - #define STR_LF "\n" - #define STR_NL STR_LF -@@ -1606,6 +1609,7 @@ - #define CHAR_VERTICAL_LINE '\174' - #define CHAR_RIGHT_CURLY_BRACKET '\175' - #define CHAR_TILDE '\176' -+#define CHAR_NBSP ((unsigned char)'\xa0') - - #define STR_HT "\011" - #define STR_VT "\013" -@@ -1762,6 +1766,10 @@ - - /* Escape items that are just an encoding of a particular data value. */ - -+#ifndef ESC_a -+#define ESC_a CHAR_BEL -+#endif -+ - #ifndef ESC_e - #define ESC_e CHAR_ESC - #endif -@@ -2446,6 +2454,7 @@ - BOOL had_pruneorskip; /* (*PRUNE) or (*SKIP) encountered */ - BOOL check_lookbehind; /* Lookbehinds need later checking */ - BOOL dupnames; /* Duplicate names exist */ -+ BOOL dupgroups; /* Duplicate groups exist: (?| found */ - BOOL iscondassert; /* Next assert is a condition */ - int nltype; /* Newline type */ - int nllen; /* Newline string length */ -Index: pcre_exec.c -=================================================================== ---- pcre_exec.c (revision 1554) -+++ pcre_exec.c (working copy) -@@ -6685,7 +6685,8 @@ - register int *iend = iptr - re->top_bracket; - if (iend < md->offset_vector + 2) iend = md->offset_vector + 2; - while (--iptr >= iend) *iptr = -1; -- md->offset_vector[0] = md->offset_vector[1] = -1; -+ if (offsetcount > 0) md->offset_vector[0] = -1; -+ if (offsetcount > 1) md->offset_vector[1] = -1; - } - - /* Set up the first character to match, if available. The first_char value is -Index: pcre_jit_test.c -=================================================================== ---- pcre_jit_test.c (revision 1554) -+++ pcre_jit_test.c (working copy) -@@ -182,6 +182,7 @@ - { CMUAP, 0, "\xf0\x90\x90\x80{2}", "\xf0\x90\x90\x80#\xf0\x90\x90\xa8\xf0\x90\x90\x80" }, - { CMUAP, 0, "\xf0\x90\x90\xa8{2}", "\xf0\x90\x90\x80#\xf0\x90\x90\xa8\xf0\x90\x90\x80" }, - { CMUAP, 0, "\xe1\xbd\xb8\xe1\xbf\xb8", "\xe1\xbf\xb8\xe1\xbd\xb8" }, -+ { MA, 0, "[3-57-9]", "5" }, - - /* Assertions. */ - { MUA, 0, "\\b[^A]", "A_B#" }, -Index: configure.ac -=================================================================== ---- configure.ac (revision 1554) -+++ configure.ac (working copy) -@@ -9,9 +9,9 @@ - dnl be defined as -RC2, for example. For real releases, it should be empty. - - m4_define(pcre_major, [8]) --m4_define(pcre_minor, [37]) --m4_define(pcre_prerelease, []) --m4_define(pcre_date, [2015-04-28]) -+m4_define(pcre_minor, [38]) -+m4_define(pcre_prerelease, [-RC1]) -+m4_define(pcre_date, [2015-05-03]) - - # NOTE: The CMakeLists.txt file searches for the above variables in the first - # 50 lines of this file. Please update that if the variables above are moved. -Index: doc/pcrepattern.3 -=================================================================== ---- doc/pcrepattern.3 (revision 1554) -+++ doc/pcrepattern.3 (working copy) -@@ -1,4 +1,4 @@ --.TH PCREPATTERN 3 "08 January 2014" "PCRE 8.35" -+.TH PCREPATTERN 3 "14 June 2015" "PCRE 8.38" - .SH NAME - PCRE - Perl-compatible regular expressions - .SH "PCRE REGULAR EXPRESSION DETAILS" -@@ -308,7 +308,8 @@ - in patterns in a visible manner. There is no restriction on the appearance of - non-printing characters, apart from the binary zero that terminates a pattern, - but when a pattern is being prepared by text editing, it is often easier to use --one of the following escape sequences than the binary character it represents: -+one of the following escape sequences than the binary character it represents. -+In an ASCII or Unicode environment, these escapes are as follows: - .sp - \ea alarm, that is, the BEL character (hex 07) - \ecx "control-x", where x is any ASCII character -@@ -330,19 +331,31 @@ - but \ec{ becomes hex 3B ({ is 7B), and \ec; becomes hex 7B (; is 3B). If the - data item (byte or 16-bit value) following \ec has a value greater than 127, a - compile-time error occurs. This locks out non-ASCII characters in all modes. -+.P -+When PCRE is compiled in EBCDIC mode, \ea, \ee, \ef, \en, \er, and \et -+generate the appropriate EBCDIC code values. The \ec escape is processed -+as specified for Perl in the \fBperlebcdic\fP document. The only characters -+that are allowed after \ec are A-Z, a-z, or one of @, [, \e, ], ^, _, or ?. Any -+other character provokes a compile-time error. The sequence \e@ encodes -+character code 0; the letters (in either case) encode characters 1-26 (hex 01 -+to hex 1A); [, \e, ], ^, and _ encode characters 27-31 (hex 1B to hex 1F), and -+\e? becomes either 255 (hex FF) or 95 (hex 5F). - .P --The \ec facility was designed for use with ASCII characters, but with the --extension to Unicode it is even less useful than it once was. It is, however, --recognized when PCRE is compiled in EBCDIC mode, where data items are always --bytes. In this mode, all values are valid after \ec. If the next character is a --lower case letter, it is converted to upper case. Then the 0xc0 bits of the --byte are inverted. Thus \ecA becomes hex 01, as in ASCII (A is C1), but because --the EBCDIC letters are disjoint, \ecZ becomes hex 29 (Z is E9), and other --characters also generate different values. -+Thus, apart from \e?, these escapes generate the same character code values as -+they do in an ASCII environment, though the meanings of the values mostly -+differ. For example, \eG always generates code value 7, which is BEL in ASCII -+but DEL in EBCDIC. - .P -+The sequence \e? generates DEL (127, hex 7F) in an ASCII environment, but -+because 127 is not a control character in EBCDIC, Perl makes it generate the -+APC character. Unfortunately, there are several variants of EBCDIC. In most of -+them the APC character has the value 255 (hex FF), but in the one Perl calls -+POSIX-BC its value is 95 (hex 5F). If certain other characters have POSIX-BC -+values, PCRE makes \e? generate 95; otherwise it generates 255. -+.P - After \e0 up to two further octal digits are read. If there are fewer than two --digits, just those that are present are used. Thus the sequence \e0\ex\e07 --specifies two binary zeros followed by a BEL character (code value 7). Make -+digits, just those that are present are used. Thus the sequence \e0\ex\e015 -+specifies two binary zeros followed by a CR character (code value 13). Make - sure you supply two digits after the initial zero if the pattern character that - follows is itself an octal digit. - .P -@@ -3283,6 +3296,6 @@ - .rs - .sp - .nf --Last updated: 08 January 2014 --Copyright (c) 1997-2014 University of Cambridge. -+Last updated: 14 June 2015 -+Copyright (c) 1997-2015 University of Cambridge. - .fi -Index: testdata/testoutput11-32 -=================================================================== ---- testdata/testoutput11-32 (revision 1554) -+++ testdata/testoutput11-32 (working copy) -@@ -231,7 +231,7 @@ - ------------------------------------------------------------------ - - /(?P<a>a)...(?P=a)bbb(?P>a)d/BM --Memory allocation (code space): 125 -+Memory allocation (code space): 157 - ------------------------------------------------------------------ - 0 24 Bra - 2 5 CBra 1 -@@ -748,4 +748,21 @@ - 22 End - ------------------------------------------------------------------ - -+/.((?2)(?R)\1)()/B -+------------------------------------------------------------------ -+ 0 23 Bra -+ 2 Any -+ 3 13 Once -+ 5 9 CBra 1 -+ 8 18 Recurse -+ 10 0 Recurse -+ 12 \1 -+ 14 9 Ket -+ 16 13 Ket -+ 18 3 CBra 2 -+ 21 3 Ket -+ 23 23 Ket -+ 25 End -+------------------------------------------------------------------ -+ - /-- End of testinput11 --/ -Index: testdata/testinputEBC -=================================================================== ---- testdata/testinputEBC (revision 1554) -+++ testdata/testinputEBC (working copy) -@@ -29,13 +29,16 @@ - - /^A\ˆ/ - A B -+ A\x41B - - /-- Test \H --/ - - /^A\È/ - AB -+ A\x42B - ** Fail - A B -+ A\x41B - - /-- Test \R --/ - -Index: testdata/testoutput1 -=================================================================== ---- testdata/testoutput1 (revision 1554) -+++ testdata/testoutput1 (working copy) -@@ -9429,4 +9429,9 @@ - 0: aaaaaaaaa - 1: a - -+"(?|(\k'Pm')|(?'Pm'))" -+ abcd -+ 0: -+ 1: -+ - /-- End of testinput1 --/ -Index: testdata/testoutput2 -=================================================================== ---- testdata/testoutput2 (revision 1554) -+++ testdata/testoutput2 (working copy) -@@ -5614,9 +5614,9 @@ - 123456\P - No match - --//KF>/dev/null --Compiled pattern written to /dev/null --Study data written to /dev/null -+//KF>testsavedregex -+Compiled pattern written to testsavedregex -+Study data written to testsavedregex - - /abc/IS>testsavedregex - Capturing subpattern count = 0 -@@ -9135,10 +9135,10 @@ - Failed: subpattern name expected at offset 3 - - /\k/ --Failed: \k is not followed by a braced, angle-bracketed, or quoted name at offset 2 -+Failed: \k is not followed by a braced, angle-bracketed, or quoted name at offset 1 - - /\kabc/ --Failed: \k is not followed by a braced, angle-bracketed, or quoted name at offset 5 -+Failed: \k is not followed by a braced, angle-bracketed, or quoted name at offset 1 - - /(?P=)/ - Failed: subpattern name expected at offset 4 -@@ -9186,7 +9186,7 @@ - Failed: unknown POSIX class name at offset 3 - - /(^(a|b\g<-1'c))/ --Failed: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number at offset 15 -+Failed: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number at offset 8 - - /^(?+1)(?<a>x|y){0}z/ - xzxx -@@ -14098,10 +14098,10 @@ - Failed: group name must start with a non-digit at offset 4 - - /\g'3gh'/ --Failed: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number at offset 7 -+Failed: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number at offset 2 - - /\g<5fg>/ --Failed: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number at offset 7 -+Failed: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number at offset 2 - - /(?(<4gh>)abc)/ - Failed: group name must start with a non-digit at offset 4 -@@ -14423,4 +14423,146 @@ - - /((?2){73}(?2))((?1))/ - -+/.((?2)(?R)\1)()/BZ -+------------------------------------------------------------------ -+ Bra -+ Any -+ Once -+ CBra 1 -+ Recurse -+ Recurse -+ \1 -+ Ket -+ Ket -+ CBra 2 -+ Ket -+ Ket -+ End -+------------------------------------------------------------------ -+ -+/(?1)()((((((\1++))\x85)+)|))/ -+ -+/(\9*+(?2);\3++()2|)++{/ -+Failed: reference to non-existent subpattern at offset 22 -+ -+/\V\x85\9*+((?2)\3++()2)*:2/ -+Failed: reference to non-existent subpattern at offset 26 -+ -+/(((?(R)){0,2}) (?''((?'R')((?'R')))))/J -+ -+/(((?(X)){0,2}) (?''((?'X')((?'X')))))/J -+ -+/(((?(R)){0,2}) (?''((?'X')((?'R')))))/ -+ -+"(?J)(?'d'(?'d'\g{d}))" -+ -+".*?\h.+.\.+\R*?\xd(?i)(?=!(?=b`b`b`\`b\xa9b!)`\a`bbbbbbbbbbbbb`bbbbbbbbbbbb*R\x85bbbbbbb\C?{((?2)(?))(( -+\H){8(?<=(?1){29}\xa8bbbb\x16\xd\xc6^($(?<! )(\xa9H4){4}h}1)B))\x15')" -+ -+"(?J:(?|(?'R')(\k'R')|((?'R'))))" -+ -+/(?<=|(\,\$(?73591620449005828816)\xa8.{7}){6}\x09)/ -+Failed: number is too big at offset 32 -+ -+// -+\O1 -+Matched, but too many substrings -+ -+/^(?:(?(1)x|)+)+$()/BZ -+------------------------------------------------------------------ -+ Bra -+ ^ -+ SBra -+ SCond -+ 1 Cond ref -+ x -+ Alt -+ KetRmax -+ KetRmax -+ $ -+ CBra 1 -+ Ket -+ Ket -+ End -+------------------------------------------------------------------ -+ -+/(?=di(?<=(?1))|(?=(.))))/ -+Failed: unmatched parentheses at offset 23 -+ -+/(?(R))*+/BZ -+------------------------------------------------------------------ -+ Bra -+ Braposzero -+ SBraPos -+ SCond -+ Cond recurse any -+ Ket -+ KetRpos -+ Ket -+ End -+------------------------------------------------------------------ -+ -+/[[:\\](?'abc')[a:]/ -+ -+"[[[.\xe8Nq\xffq\xff\xe0\x2|||::Nq\xffq\xff\xe0\x6\x2|||::[[[:[::::::[[[[[::::::::[:[[[:[:::[[[[[[[[[[[[:::::::::::::::::[[.\xe8Nq\xffq\xff\xe0\x2|||::Nq\xffq\xff\xe0\x6\x2|||::[[[:[::::::[[[[[::::::::[:[[[:[:::[[[[[[[[[[[[[[:::E[[[:[:[[:[:::[[:::E[[[:[:[[:'[:::::E[[[:[::::::[[[:[[[[[[[::E[[[:[::::::[[[:[[[[[[[[:[[::[::::[[:::::::[[:[[[[[[[:[[::[:[[:[~" -+Failed: missing terminating ] for character class at offset 353 -+ -+/()(?(R)0)*+/BZ -+------------------------------------------------------------------ -+ Bra -+ CBra 1 -+ Ket -+ Braposzero -+ SBraPos -+ SCond -+ Cond recurse any -+ 0 -+ Ket -+ KetRpos -+ Ket -+ End -+------------------------------------------------------------------ -+ -+/(?R-:(?</ -+Failed: (?R or (?[+-]digits must be followed by ) at offset 3 -+ -+/(?1){3918}(((((0(\k'R'))))(?J)(?'R'(?'R'\3){99})))/I -+Capturing subpattern count = 8 -+Max back reference = 8 -+Named capturing subpatterns: -+ R 7 -+ R 8 -+No options -+Duplicate name status changes -+No first char -+Need char = '0' -+ -+/(?J:(?|(:(?|(?'R')(\k'R')|((?'R')))H'Rk'Rf)|s(?'R')))/ -+ -+/0(?0)|(1)(*THEN)(*SKIP:0)(*FAIL)/ -+ 01 -+No match -+ -+/((?(R8000000000)))/ -+Failed: number is too big at offset 16 -+ -+/(?(8000000000/ -+Failed: number is too big at offset 13 -+ -+/(?:ab)?(?:ab)(?:ab)/ -+ abab -+ 0: abab -+ ababab -+ 0: ababab -+ aba -+No match -+ -+/((*MARK:A))++a(*SKIP:B)b/ -+ aacb -+No match -+ -+/(?J:(?|(:(?|(?'R')(\z(?|(?'R')(\k'R')|((?'R')))k'R')|((?'R')))H'Ak'Rf)|s(?'R')))/ -+ -+/(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?<a>1)/ -+ - /-- End of testinput2 --/ -Index: testdata/testoutput11-16 -=================================================================== ---- testdata/testoutput11-16 (revision 1554) -+++ testdata/testoutput11-16 (working copy) -@@ -231,7 +231,7 @@ - ------------------------------------------------------------------ - - /(?P<a>a)...(?P=a)bbb(?P>a)d/BM --Memory allocation (code space): 61 -+Memory allocation (code space): 77 - ------------------------------------------------------------------ - 0 24 Bra - 2 5 CBra 1 -@@ -748,4 +748,21 @@ - 22 End - ------------------------------------------------------------------ - -+/.((?2)(?R)\1)()/B -+------------------------------------------------------------------ -+ 0 23 Bra -+ 2 Any -+ 3 13 Once -+ 5 9 CBra 1 -+ 8 18 Recurse -+ 10 0 Recurse -+ 12 \1 -+ 14 9 Ket -+ 16 13 Ket -+ 18 3 CBra 2 -+ 21 3 Ket -+ 23 23 Ket -+ 25 End -+------------------------------------------------------------------ -+ - /-- End of testinput11 --/ -Index: testdata/testoutput6 -=================================================================== ---- testdata/testoutput6 (revision 1554) -+++ testdata/testoutput6 (working copy) -@@ -2469,4 +2469,8 @@ - Ó…\x0aT - No match - -+/[\pS#moq]/ -+ = -+ 0: = -+ - /-- End of testinput6 --/ -Index: testdata/testinput11 -=================================================================== ---- testdata/testinput11 (revision 1554) -+++ testdata/testinput11 (working copy) -@@ -136,4 +136,6 @@ - - /((?+1)(\1))/B - -+/.((?2)(?R)\1)()/B -+ - /-- End of testinput11 --/ -Index: testdata/testinput12 -=================================================================== ---- testdata/testinput12 (revision 1554) -+++ testdata/testinput12 (working copy) -@@ -8,6 +8,8 @@ - - /(?(?C1)(?=a)a)/S!+I - -+/b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*/S+I -+ - /abc/S+I>testsavedregex - - <testsavedregex -@@ -95,4 +97,11 @@ - - /(a(?:a|b|c|d|e)b){8,16}/S++ - -+/(?:|a|){100}x/S++ -+ -+/(x(?1)){4}/S++ -+ -+/(.|.)*?bx/ -+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabax -+ - /-- End of testinput12 --/ -Index: testdata/testoutput12 -=================================================================== ---- testdata/testoutput12 (revision 1554) -+++ testdata/testoutput12 (working copy) -@@ -30,6 +30,15 @@ - No starting char list - JIT study was not successful - -+/b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*/S+I -+Capturing subpattern count = 0 -+May match empty string -+No options -+No first char -+No need char -+Study returned NULL -+JIT study was not successful -+ - /abc/S+I>testsavedregex - Capturing subpattern count = 0 - No options -@@ -184,4 +193,12 @@ - - /(a(?:a|b|c|d|e)b){8,16}/S++ - -+/(?:|a|){100}x/S++ -+ -+/(x(?1)){4}/S++ -+ -+/(.|.)*?bx/ -+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabax -+Error -8 (match limit exceeded) -+ - /-- End of testinput12 --/ -Index: testdata/testoutput11-8 -=================================================================== ---- testdata/testoutput11-8 (revision 1554) -+++ testdata/testoutput11-8 (working copy) -@@ -231,7 +231,7 @@ - ------------------------------------------------------------------ - - /(?P<a>a)...(?P=a)bbb(?P>a)d/BM --Memory allocation (code space): 38 -+Memory allocation (code space): 50 - ------------------------------------------------------------------ - 0 30 Bra - 3 7 CBra 1 -@@ -748,4 +748,21 @@ - 34 End - ------------------------------------------------------------------ - -+/.((?2)(?R)\1)()/B -+------------------------------------------------------------------ -+ 0 35 Bra -+ 3 Any -+ 4 20 Once -+ 7 14 CBra 1 -+ 12 27 Recurse -+ 15 0 Recurse -+ 18 \1 -+ 21 14 Ket -+ 24 20 Ket -+ 27 5 CBra 2 -+ 32 5 Ket -+ 35 35 Ket -+ 38 End -+------------------------------------------------------------------ -+ - /-- End of testinput11 --/ -Index: testdata/testoutputEBC -=================================================================== ---- testdata/testoutputEBC (revision 1554) -+++ testdata/testoutputEBC (working copy) -@@ -41,6 +41,8 @@ - /^A\ˆ/ - A B - 0: A\x20 -+ A\x41B -+ 0: AA - - /-- Test \H --/ - -@@ -47,10 +49,14 @@ - /^A\È/ - AB - 0: AB -+ A\x42B -+ 0: AB - ** Fail - No match - A B - No match -+ A\x41B -+No match - - /-- Test \R --/ - -Index: testdata/grepoutput -=================================================================== ---- testdata/grepoutput (revision 1554) -+++ testdata/grepoutput (working copy) -@@ -751,3 +751,7 @@ - 2:3,1 - 2:4,1 - RC=0 -+---------------------------- Test 108 ------------------------------ -+RC=0 -+---------------------------- Test 109 ----------------------------- -+RC=0 -Index: testdata/testinput1 -=================================================================== ---- testdata/testinput1 (revision 1554) -+++ testdata/testinput1 (working copy) -@@ -5730,4 +5730,7 @@ - "(?1)(?#?'){8}(a)" - baaaaaaaaac - -+"(?|(\k'Pm')|(?'Pm'))" -+ abcd -+ - /-- End of testinput1 --/ -Index: testdata/testinput2 -=================================================================== ---- testdata/testinput2 (revision 1554) -+++ testdata/testinput2 (working copy) -@@ -1380,7 +1380,7 @@ - 1X - 123456\P - --//KF>/dev/null -+//KF>testsavedregex - - /abc/IS>testsavedregex - <testsavedregex -@@ -4152,4 +4152,67 @@ - - /((?2){73}(?2))((?1))/ - -+/.((?2)(?R)\1)()/BZ -+ -+/(?1)()((((((\1++))\x85)+)|))/ -+ -+/(\9*+(?2);\3++()2|)++{/ -+ -+/\V\x85\9*+((?2)\3++()2)*:2/ -+ -+/(((?(R)){0,2}) (?''((?'R')((?'R')))))/J -+ -+/(((?(X)){0,2}) (?''((?'X')((?'X')))))/J -+ -+/(((?(R)){0,2}) (?''((?'X')((?'R')))))/ -+ -+"(?J)(?'d'(?'d'\g{d}))" -+ -+".*?\h.+.\.+\R*?\xd(?i)(?=!(?=b`b`b`\`b\xa9b!)`\a`bbbbbbbbbbbbb`bbbbbbbbbbbb*R\x85bbbbbbb\C?{((?2)(?))(( -+\H){8(?<=(?1){29}\xa8bbbb\x16\xd\xc6^($(?<! )(\xa9H4){4}h}1)B))\x15')" -+ -+"(?J:(?|(?'R')(\k'R')|((?'R'))))" -+ -+/(?<=|(\,\$(?73591620449005828816)\xa8.{7}){6}\x09)/ -+ -+// -+\O1 -+ -+/^(?:(?(1)x|)+)+$()/BZ -+ -+/(?=di(?<=(?1))|(?=(.))))/ -+ -+/(?(R))*+/BZ -+ -+/[[:\\](?'abc')[a:]/ -+ -+"[[[.\xe8Nq\xffq\xff\xe0\x2|||::Nq\xffq\xff\xe0\x6\x2|||::[[[:[::::::[[[[[::::::::[:[[[:[:::[[[[[[[[[[[[:::::::::::::::::[[.\xe8Nq\xffq\xff\xe0\x2|||::Nq\xffq\xff\xe0\x6\x2|||::[[[:[::::::[[[[[::::::::[:[[[:[:::[[[[[[[[[[[[[[:::E[[[:[:[[:[:::[[:::E[[[:[:[[:'[:::::E[[[:[::::::[[[:[[[[[[[::E[[[:[::::::[[[:[[[[[[[[:[[::[::::[[:::::::[[:[[[[[[[:[[::[:[[:[~" -+ -+/()(?(R)0)*+/BZ -+ -+/(?R-:(?</ -+ -+/(?1){3918}(((((0(\k'R'))))(?J)(?'R'(?'R'\3){99})))/I -+ -+/(?J:(?|(:(?|(?'R')(\k'R')|((?'R')))H'Rk'Rf)|s(?'R')))/ -+ -+/0(?0)|(1)(*THEN)(*SKIP:0)(*FAIL)/ -+ 01 -+ -+/((?(R8000000000)))/ -+ -+/(?(8000000000/ -+ -+/(?:ab)?(?:ab)(?:ab)/ -+ abab -+ ababab -+ aba -+ -+/((*MARK:A))++a(*SKIP:B)b/ -+ aacb -+ -+/(?J:(?|(:(?|(?'R')(\z(?|(?'R')(\k'R')|((?'R')))k'R')|((?'R')))H'Ak'Rf)|s(?'R')))/ -+ -+/(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?&a)(?<a>1)/ -+ - /-- End of testinput2 --/ -Index: testdata/testinput6 -=================================================================== ---- testdata/testinput6 (revision 1554) -+++ testdata/testinput6 (working copy) -@@ -1502,4 +1502,7 @@ - /\C\X*QT/8 - Ó…\x0aT - -+/[\pS#moq]/ -+ = -+ - /-- End of testinput6 --/ -Index: NON-AUTOTOOLS-BUILD -=================================================================== ---- NON-AUTOTOOLS-BUILD (revision 1554) -+++ NON-AUTOTOOLS-BUILD (working copy) -@@ -764,9 +764,9 @@ - - http://www.zaconsultants.net - --There is also a mirror here: -+You may download PCRE from WWW.CBTTAPE.ORG, file 882.  Everything, source and -+executable, is in EBCDIC and native z/OS file formats and this is the -+recommended download site. - -- http://www.vsoft-software.com/downloads.html -- - ========================== --Last Updated: 10 February 2015 -+Last Updated: 25 June 2015 diff --git a/pkgs/development/libraries/pixman/default.nix b/pkgs/development/libraries/pixman/default.nix index ce027a0a2690b..30cceb59c00a9 100644 --- a/pkgs/development/libraries/pixman/default.nix +++ b/pkgs/development/libraries/pixman/default.nix @@ -1,26 +1,28 @@ -{ fetchurl, stdenv, pkgconfig, perl, libpng, glib /*just passthru*/ }: +{ fetchurl, stdenv, pkgconfig, libpng, glib /*just passthru*/ }: stdenv.mkDerivation rec { - name = "pixman-0.32.6"; + name = "pixman-0.32.8"; src = fetchurl { - url = "http://cairographics.org/releases/${name}.tar.gz"; - sha256 = "0129g4zdrw5hif5783li7rzcr4vpbc2cfia91azxmsk0h0xx3zix"; + url = "mirror://xorg/individual/lib/${name}.tar.bz2"; + sha1 = "5c57045622265b877c9bf02d531973eadf942140"; }; - nativeBuildInputs = [ pkgconfig perl ]; + patches = stdenv.lib.optional stdenv.isDarwin ./fix-clang36.patch; - buildInputs = [ libpng ]; # NOT in closure anyway + nativeBuildInputs = [ pkgconfig ]; + buildInputs = stdenv.lib.optional doCheck libpng; - postInstall = glib.flattenInclude; + configureFlags = stdenv.lib.optional stdenv.isArm "--disable-arm-iwmmxt"; - patches = stdenv.lib.optional stdenv.isDarwin ./fix-clang36.patch; + doCheck = true; - configureFlags = if stdenv.isArm then ["--disable-arm-iwmmxt"] else null; + postInstall = glib.flattenInclude; - meta = { + meta = with stdenv.lib; { homepage = http://pixman.org; description = "A low-level library for pixel manipulation"; - license = stdenv.lib.licenses.mit; + license = licenses.mit; + platforms = platforms.all; }; } diff --git a/pkgs/development/libraries/v8/3.16.14.nix b/pkgs/development/libraries/v8/3.16.14.nix index ba3aae5cf70af..c79357cd90749 100644 --- a/pkgs/development/libraries/v8/3.16.14.nix +++ b/pkgs/development/libraries/v8/3.16.14.nix @@ -16,6 +16,10 @@ stdenv.mkDerivation rec { sha256 = "1gpf2xvhxfs5ll3m2jlslsx9jfjbmrbz55iq362plflrvf8mbxhj"; }; + postPatch = '' + sed -i 's/-Werror//' build/standalone.gypi build/common.gypi + ''; + configurePhase = stdenv.lib.optionalString stdenv.isDarwin '' ln -s /usr/bin/xcodebuild $TMPDIR export PATH=$TMPDIR:$PATH diff --git a/pkgs/development/libraries/wayland/default.nix b/pkgs/development/libraries/wayland/default.nix index 9736d65140478..0510fde811c69 100644 --- a/pkgs/development/libraries/wayland/default.nix +++ b/pkgs/development/libraries/wayland/default.nix @@ -8,11 +8,11 @@ assert expat != null; stdenv.mkDerivation rec { name = "wayland-${version}"; - version = "1.8.1"; + version = "1.9.0"; src = fetchurl { url = "http://wayland.freedesktop.org/releases/${name}.tar.xz"; - sha256 = "1j3gfzn8i0xhk3j34mwb2srrscjxfyi279jhyq80mz943j6r6z7i"; + sha256 = "1yhy62vkbq8j8c9zaa6yzvn75cd99kfa8n2zfdwl80x019r711ww"; }; configureFlags = "--with-scanner --disable-documentation"; diff --git a/pkgs/development/libraries/webkitgtk/default.nix b/pkgs/development/libraries/webkitgtk/default.nix index 0e67f5d3d1ada..d60fbca61414d 100644 --- a/pkgs/development/libraries/webkitgtk/default.nix +++ b/pkgs/development/libraries/webkitgtk/default.nix @@ -1,5 +1,5 @@ { stdenv, fetchurl, perl, python, ruby, bison, gperf, cmake -, pkgconfig, gettext, gobjectIntrospection +, pkgconfig, gettext, gobjectIntrospection, libnotify , gtk2, gtk3, wayland, libwebp, enchant , libxml2, libsoup, libsecret, libxslt, harfbuzz, libpthreadstubs , enableGeoLocation ? true, geoclue2, sqlite @@ -11,7 +11,7 @@ assert enableGeoLocation -> geoclue2 != null; with stdenv.lib; stdenv.mkDerivation rec { name = "webkitgtk-${version}"; - version = "2.8.5"; + version = "2.10.0"; meta = { description = "Web content rendering engine, GTK+ port"; @@ -25,12 +25,12 @@ stdenv.mkDerivation rec { src = fetchurl { url = "http://webkitgtk.org/releases/${name}.tar.xz"; - sha256 = "082dw0d8jxvsapx30ypmy5h2srzfzi42c3zr9pbkzx1m959hq7rx"; + sha256 = "0vb8ca6dd9hxb5ycp54bdyykp10blbq5b6qkbak4yf9mxwi5ccj2"; }; patches = [ ./finding-harfbuzz-icu.patch ]; - cmakeFlags = [ "-DPORT=GTK" ]; + cmakeFlags = [ "-DPORT=GTK" "-DUSE_LIBHYPHEN=0" ]; # XXX: WebKit2 missing include path for gst-plugins-base. # Filled: https://bugs.webkit.org/show_bug.cgi?id=148894 @@ -42,7 +42,7 @@ stdenv.mkDerivation rec { ]; buildInputs = [ - gtk2 wayland libwebp enchant + gtk2 wayland libwebp enchant libnotify libxml2 libsecret libxslt harfbuzz libpthreadstubs gst-plugins-base ] ++ optional enableGeoLocation geoclue2; @@ -51,5 +51,5 @@ stdenv.mkDerivation rec { libsoup gtk3 ]; - enableParallelBuilding = true; # build problems on Hydra + enableParallelBuilding = true; } diff --git a/pkgs/development/tools/documentation/doxygen/default.nix b/pkgs/development/tools/documentation/doxygen/default.nix index 50f2037b271c5..78669dfdce7a4 100644 --- a/pkgs/development/tools/documentation/doxygen/default.nix +++ b/pkgs/development/tools/documentation/doxygen/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, perl, python, flex, bison, qt4 }: +{ stdenv, fetchurl, perl, python, flex, bison, qt4, CoreServices, libiconv }: let name = "doxygen-1.8.6"; @@ -11,11 +11,16 @@ stdenv.mkDerivation { sha256 = "0pskjlkbj76m9ka7zi66yj8ffjcv821izv3qxqyyphf0y0jqcwba"; }; + prePatch = '' + substituteInPlace configure --replace /usr/bin/install $(type -P install) + ''; + patches = [ ./tmake.patch ]; buildInputs = [ perl python flex bison ] - ++ stdenv.lib.optional (qt4 != null) qt4; + ++ stdenv.lib.optional (qt4 != null) qt4 + ++ stdenv.lib.optionals stdenv.isDarwin [ CoreServices libiconv ]; prefixKey = "--prefix "; diff --git a/pkgs/development/tools/misc/pkgconfig/default.nix b/pkgs/development/tools/misc/pkgconfig/default.nix index f1471d51e1fa5..6eea0a6d5d6bf 100644 --- a/pkgs/development/tools/misc/pkgconfig/default.nix +++ b/pkgs/development/tools/misc/pkgconfig/default.nix @@ -1,13 +1,13 @@ {stdenv, fetchurl, automake, libiconv, vanilla ? false}: stdenv.mkDerivation (rec { - name = "pkg-config-0.28"; + name = "pkg-config-0.29"; setupHook = ./setup-hook.sh; src = fetchurl { url = "http://pkgconfig.freedesktop.org/releases/${name}.tar.gz"; - sha256 = "0igqq5m204w71m11y0nipbdf5apx87hwfll6axs12hn4dqfb6vkb"; + sha256 = "0sq09a39wj4cxf8l2jvkq067g08ywfma4v6nhprnf351s82pfl68"; }; buildInputs = stdenv.lib.optional (stdenv.isCygwin || stdenv.isDarwin) libiconv; diff --git a/pkgs/development/web/nodejs/no-xcode-4.1.0.patch b/pkgs/development/web/nodejs/no-xcode-4.1.0.patch new file mode 100644 index 0000000000000..137158b01b710 --- /dev/null +++ b/pkgs/development/web/nodejs/no-xcode-4.1.0.patch @@ -0,0 +1,95 @@ +diff --git a/configure b/configure +index d199975..66d903b 100755 +--- a/configure ++++ b/configure +@@ -734,7 +734,7 @@ def configure_library(lib, output): + # libpath needs to be provided ahead libraries + if pkg_libpath: + output['libraries'] += ( +- filter(None, map(str.strip, pkg_cflags.split('-L')))) ++ pkg_libpath.split()) + + default_libs = getattr(options, shared_lib + '_libname') + default_libs = map('-l{0}'.format, default_libs.split(',')) +diff --git a/tools/gyp/pylib/gyp/xcode_emulation.py b/tools/gyp/pylib/gyp/xcode_emulation.py +index c002b11..fefb765 100644 +--- a/tools/gyp/pylib/gyp/xcode_emulation.py ++++ b/tools/gyp/pylib/gyp/xcode_emulation.py +@@ -446,10 +446,17 @@ class XcodeSettings(object): + + def _XcodeSdkPath(self, sdk_root): + if sdk_root not in XcodeSettings._sdk_path_cache: +- sdk_path = self._GetSdkVersionInfoItem(sdk_root, 'Path') +- XcodeSettings._sdk_path_cache[sdk_root] = sdk_path +- if sdk_root: +- XcodeSettings._sdk_root_cache[sdk_path] = sdk_root ++ try: ++ sdk_path = self._GetSdkVersionInfoItem(sdk_root, 'Path') ++ XcodeSettings._sdk_path_cache[sdk_root] = sdk_path ++ if sdk_root: ++ XcodeSettings._sdk_root_cache[sdk_path] = sdk_root ++ except: ++ # if this fails it's because xcodebuild failed, which means ++ # the user is probably on a CLT-only system, where there ++ # is no valid SDK root ++ XcodeSettings._sdk_path_cache[sdk_root] = None ++ + return XcodeSettings._sdk_path_cache[sdk_root] + + def _AppendPlatformVersionMinFlags(self, lst): +@@ -572,10 +579,12 @@ class XcodeSettings(object): + framework_root = sdk_root + else: + framework_root = '' +- config = self.spec['configurations'][self.configname] +- framework_dirs = config.get('mac_framework_dirs', []) +- for directory in framework_dirs: +- cflags.append('-F' + directory.replace('$(SDKROOT)', framework_root)) ++ ++ if 'SDKROOT' in self._Settings(): ++ config = self.spec['configurations'][self.configname] ++ framework_dirs = config.get('mac_framework_dirs', []) ++ for directory in framework_dirs: ++ cflags.append('-F' + directory.replace('$(SDKROOT)', framework_root)) + + self.configname = None + return cflags +@@ -826,10 +835,12 @@ class XcodeSettings(object): + sdk_root = self._SdkPath() + if not sdk_root: + sdk_root = '' +- config = self.spec['configurations'][self.configname] +- framework_dirs = config.get('mac_framework_dirs', []) +- for directory in framework_dirs: +- ldflags.append('-F' + directory.replace('$(SDKROOT)', sdk_root)) ++ ++ if 'SDKROOT' in self._Settings(): ++ config = self.spec['configurations'][self.configname] ++ framework_dirs = config.get('mac_framework_dirs', []) ++ for directory in framework_dirs: ++ ldflags.append('-F' + directory.replace('$(SDKROOT)', sdk_root)) + + is_extension = self._IsIosAppExtension() or self._IsIosWatchKitExtension() + if sdk_root and is_extension: +@@ -1032,7 +1043,11 @@ class XcodeSettings(object): + sdk_root = self._SdkPath(config_name) + if not sdk_root: + sdk_root = '' +- return l.replace('$(SDKROOT)', sdk_root) ++ ++ if self._SdkPath(): ++ return l.replace('$(SDKROOT)', sdk_root) ++ else: ++ return l + + def AdjustLibraries(self, libraries, config_name=None): + """Transforms entries like 'Cocoa.framework' in libraries into entries like +@@ -1248,7 +1263,7 @@ def XcodeVersion(): + if version: + version = re.match(r'(\d\.\d\.?\d*)', version).groups()[0] + else: +- raise GypError("No Xcode or CLT version detected!") ++ version = "7.0.0" + # The CLT has no build information, so we return an empty string. + version_list = [version, ''] + version = version_list[0] diff --git a/pkgs/development/web/nodejs/v0_10.nix b/pkgs/development/web/nodejs/v0_10.nix index eaa3c6386cb5d..bf19ba646fd7a 100644 --- a/pkgs/development/web/nodejs/v0_10.nix +++ b/pkgs/development/web/nodejs/v0_10.nix @@ -54,6 +54,8 @@ in stdenv.mkDerivation { propagatedBuildInputs = optionals stdenv.isDarwin [ Carbon ]; setupHook = ./setup-hook.sh; + enableParallelBuilding = true; + passthru.interpreterName = "nodejs-0.10"; meta = { diff --git a/pkgs/development/web/nodejs/v4_1_0.nix b/pkgs/development/web/nodejs/v4_1_0.nix new file mode 100644 index 0000000000000..de8fa5f6bd3e5 --- /dev/null +++ b/pkgs/development/web/nodejs/v4_1_0.nix @@ -0,0 +1,53 @@ +{ stdenv, fetchurl, openssl, python, zlib, libuv, v8, utillinux, http-parser +, pkgconfig, runCommand, which, libtool +}: + +let + version = "4.1.0"; + + deps = { + inherit openssl zlib libuv; + + # disabled system v8 because v8 3.14 no longer receives security fixes + # we fall back to nodejs' internal v8 copy which receives backports for now + # inherit v8 + } // (stdenv.lib.optionalAttrs (!stdenv.isDarwin) { + inherit http-parser; + }); + + inherit (stdenv.lib) concatMap optional optionals maintainers licenses platforms; +in stdenv.mkDerivation { + name = "nodejs-${version}"; + + src = fetchurl { + url = "http://nodejs.org/dist/v${version}/node-v${version}.tar.gz"; + sha256 = "025lqmhvl7xpx1ip97jwkz21a97sw9zb4zi3y7fgfag59vv0ac25"; + }; + + configureFlags = map (name: "--shared-${name}") (builtins.attrNames deps) ++ [ "--without-dtrace" ]; + + dontDisableStatic = true; + + prePatch = '' + patchShebangs . + ''; + + patches = stdenv.lib.optional stdenv.isDarwin ./no-xcode-4.1.0.patch; + + buildInputs = [ python which ] ++ (builtins.attrValues deps) + ++ optional stdenv.isLinux utillinux + ++ optionals stdenv.isDarwin [ openssl libtool ]; + setupHook = ./setup-hook.sh; + + enableParallelBuilding = true; + + passthru.interpreterName = "nodejs"; + + meta = { + description = "Event-driven I/O framework for the V8 JavaScript engine"; + homepage = http://nodejs.org; + license = licenses.mit; + maintainers = [ maintainers.goibhniu maintainers.havvy ]; + platforms = platforms.linux ++ platforms.darwin; + }; +} diff --git a/pkgs/os-specific/linux/kernel/common-config.nix b/pkgs/os-specific/linux/kernel/common-config.nix index ef35757fdb249..218532a695e0a 100644 --- a/pkgs/os-specific/linux/kernel/common-config.nix +++ b/pkgs/os-specific/linux/kernel/common-config.nix @@ -478,8 +478,6 @@ with stdenv.lib; ''} ZRAM m - ${optionalString (versionAtLeast version "3.17") "NFC? n"} - # Enable firmware loading via udev (legacy). ${optionalString (versionAtLeast version "3.17") '' FW_LOADER_USER_HELPER_FALLBACK y diff --git a/pkgs/os-specific/linux/libcap-ng/default.nix b/pkgs/os-specific/linux/libcap-ng/default.nix index 3670f06e5439d..ea54f1a39fd1e 100644 --- a/pkgs/os-specific/linux/libcap-ng/default.nix +++ b/pkgs/os-specific/linux/libcap-ng/default.nix @@ -1,22 +1,40 @@ -{ stdenv, fetchurl, python }: +{ stdenv, fetchurl, swig ? null, python2 ? null, python3 ? null }: -assert stdenv.isLinux; +assert python2 != null || python3 != null -> swig != null; stdenv.mkDerivation rec { name = "libcap-ng-${version}"; - version = "0.7.3"; + # When updating make sure to test that the version with + # all of the python bindings still works + version = "0.7.7"; src = fetchurl { url = "${meta.homepage}/${name}.tar.gz"; - sha256 = "1cavlcrpqi4imkmagjhw65br8rv2fsbhf68mm3lczr51sg44392w"; + sha256 = "0syhyrixk7fqvwis3k7iddn75g0qxysc1q5fifvzccxk7774jmb1"; }; - buildInputs = [ python ]; # ToDo? optional swig for python bindings + nativeBuildInputs = [ swig ]; + buildInputs = [ python2 python3 ]; - meta = { + postPatch = '' + function get_header() { + echo -e "#include <$1>" | gcc -M -xc - | tr ' ' '\n' | grep "$1" | head -n 1 + } + + # Fix some hardcoding of header paths + sed -i "s,/usr/include/linux/capability.h,$(get_header linux/capability.h),g" bindings/python{,3}/Makefile.in + ''; + + configureFlags = [ + (if python2 != null then "--with-python" else "--without-python") + (if python3 != null then "--with-python3" else "--without-python3") + ]; + + meta = let inherit (stdenv.lib) platforms licenses maintainers; in { description = "Library for working with POSIX capabilities"; homepage = http://people.redhat.com/sgrubb/libcap-ng/; - platforms = stdenv.lib.platforms.linux; - license = stdenv.lib.licenses.lgpl21; + platforms = platforms.linux; + license = licenses.lgpl21; + maintainers = with maintainers; [ wkennington ]; }; } diff --git a/pkgs/servers/neard/default.nix b/pkgs/servers/neard/default.nix index a76f10a262db1..995ffc41c60e4 100644 --- a/pkgs/servers/neard/default.nix +++ b/pkgs/servers/neard/default.nix @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { buildInputs = [ autoreconfHook pkgconfig systemd glib dbus libnl pythonPackages.python pythonPackages.wrapPython ]; pythonPath = [ pythonPackages.pygobject pythonPackages.dbus pythonPackages.pygtk ]; - configureFlags = [ "--disable-debug" "--enable-tools" "--with-systemdsystemunitdir=$out/lib/systemd/system" ]; + configureFlags = [ "--disable-debug" "--enable-tools" "--enable-ese" "--with-systemdsystemunitdir=$out/lib/systemd/system" ]; postInstall = '' install -m 0755 tools/snep-send $out/bin/ @@ -19,6 +19,7 @@ stdenv.mkDerivation rec { install -D -m644 src/neard.service $out/lib/systemd/system/neard.service install -D -m644 src/main.conf $out/etc/neard/main.conf + # INFO: the config option "--enable-test" would copy the apps to $out/lib/neard/test/ instead install -d $out/lib/neard install -m 0755 test/* $out/lib/neard/ wrapPythonProgramsIn $out/lib/neard "$out $pythonPath" diff --git a/pkgs/servers/search/elasticsearch/default.nix b/pkgs/servers/search/elasticsearch/default.nix index 859f1501bb3c8..16f0103029026 100644 --- a/pkgs/servers/search/elasticsearch/default.nix +++ b/pkgs/servers/search/elasticsearch/default.nix @@ -3,11 +3,11 @@ with stdenv.lib; stdenv.mkDerivation rec { - name = "elasticsearch-1.5.2"; + name = "elasticsearch-1.7.2"; src = fetchurl { url = "https://download.elastic.co/elasticsearch/elasticsearch/${name}.tar.gz"; - sha256 = "054s0k0y0g1x6wzbd6gmvrp5n89fqwqssbyhay0gmhvs6sbpibpg"; + sha256 = "1lix4asvx1lbc227gzsrws3xqbcbqaal7v10w60kch0c4xg970bg"; }; patches = [ ./es-home.patch ]; diff --git a/pkgs/servers/search/elasticsearch/es-home.patch b/pkgs/servers/search/elasticsearch/es-home.patch index 2f7a7fe791983..2f2018fd69fa3 100644 --- a/pkgs/servers/search/elasticsearch/es-home.patch +++ b/pkgs/servers/search/elasticsearch/es-home.patch @@ -28,9 +28,10 @@ diff -rupN a/bin/plugin b/bin/plugin # make ELASTICSEARCH_HOME absolute ES_HOME=`cd "$ES_HOME"; pwd` -@@ -45,4 +48,4 @@ while [ $# -gt 0 ]; do - shift - done - --exec "$JAVA" $JAVA_OPTS $ES_JAVA_OPTS -Xmx64m -Xms16m -Delasticsearch -Des.path.home="$ES_HOME" $properties -cp "$ES_HOME/lib/*" org.elasticsearch.plugins.PluginManager $args -+exec "$JAVA" $JAVA_OPTS $ES_JAVA_OPTS -Xmx64m -Xms16m -Delasticsearch -Des.path.home="$ES_HOME" $properties -cp "$ES_CLASSPATH/lib/*" org.elasticsearch.plugins.PluginManager $args +@@ -105,4 +105,4 @@ + + export HOSTNAME=`hostname -s` + +-eval "$JAVA" $JAVA_OPTS $ES_JAVA_OPTS -Xmx64m -Xms16m -Delasticsearch -Des.path.home=\""$ES_HOME"\" $properties -cp \""$ES_HOME/lib/*"\" org.elasticsearch.plugins.PluginManager $args +\ No newline at end of file ++eval "$JAVA" $JAVA_OPTS $ES_JAVA_OPTS -Xmx64m -Xms16m -Delasticsearch -Des.path.home="$ES_HOME" $properties -cp "$ES_CLASSPATH/lib/*" org.elasticsearch.plugins.PluginManager $args diff --git a/pkgs/servers/x11/quartz-wm/default.nix b/pkgs/servers/x11/quartz-wm/default.nix index 8f5885a485650..de30fc2a58402 100644 --- a/pkgs/servers/x11/quartz-wm/default.nix +++ b/pkgs/servers/x11/quartz-wm/default.nix @@ -20,6 +20,9 @@ in stdenv.mkDerivation { pixman pkgconfig ]; + NIX_CFLAGS_COMPILE = "-F/System/Library/Frameworks -I/usr/include"; + NIX_LDFLAGS = stdenv.lib.optional stdenv.isDarwin + "/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation"; meta = with lib; { license = licenses.apsl20; platforms = platforms.darwin; diff --git a/pkgs/servers/x11/xorg/overrides.nix b/pkgs/servers/x11/xorg/overrides.nix index a7e5b43689a00..a3b786c014ed4 100644 --- a/pkgs/servers/x11/xorg/overrides.nix +++ b/pkgs/servers/x11/xorg/overrides.nix @@ -324,7 +324,9 @@ in ''; passthru.version = version; # needed by virtualbox guest additions } else { - buildInputs = commonBuildInputs ++ [ args.bootstrap_cmds args.automake args.autoconf ]; + buildInputs = commonBuildInputs ++ [ + args.bootstrap_cmds args.automake args.autoconf + ]; propagatedBuildInputs = commonPropagatedBuildInputs ++ [ libAppleWM applewmproto ]; @@ -351,6 +353,9 @@ in "--with-bundle-id-prefix=org.nixos.xquartz" "--with-sha1=CommonCrypto" ]; + __impureHostDeps = ["/System/Library" "/usr"]; + NIX_CFLAGS_COMPILE = "-F/System/Library/Frameworks -I/usr/include"; + NIX_CFLAGS_LINK = "-L/usr/lib"; preConfigure = '' ensureDir $out/Applications export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -Wno-error" diff --git a/pkgs/servers/x11/xquartz/default.nix b/pkgs/servers/x11/xquartz/default.nix index 3e9e7cb779ee1..178e7a59d8310 100644 --- a/pkgs/servers/x11/xquartz/default.nix +++ b/pkgs/servers/x11/xquartz/default.nix @@ -109,8 +109,7 @@ in stdenv.mkDerivation { cp ${installer} $out/bin/xquartz-install - rm -r $out/LaunchAgents - rm -r $out/LaunchDaemons + rm -rf $out/LaunchAgents $out/LaunchDaemons fontsConfPath=$out/etc/X11/fonts.conf cp ${fontsConf} $fontsConfPath @@ -147,13 +146,6 @@ in stdenv.mkDerivation { --replace "@STARTX@" "$defaultStartX" \ --replace "@FONTCONFIG_FILE@" "$fontsConfPath" - rm $out/lib/X11/xinit/privileged_startx.d/* - cp ${./privileged} $out/lib/X11/xinit/privileged_startx.d/privileged - substituteInPlace $out/lib/X11/xinit/privileged_startx.d/privileged \ - --replace "@PATH@" "$out/bin:${env}" \ - --replace "@FONTCONFIG_FILE@" "$fontsConfPath" \ - --replace "@FONT_CACHE@" "$out/bin/font_cache" - cp ${./font_cache} $out/bin/font_cache substituteInPlace $out/bin/font_cache \ --replace "@PATH@" "$out/bin:${env}" \ diff --git a/pkgs/stdenv/darwin/default.nix b/pkgs/stdenv/darwin/default.nix index 9ad2c8504d1aa..c56349845329c 100644 --- a/pkgs/stdenv/darwin/default.nix +++ b/pkgs/stdenv/darwin/default.nix @@ -58,6 +58,8 @@ rec { export NIX_CFLAGS_COMPILE+=" --sysroot=/var/empty -idirafter $SDKROOT/usr/include -F$SDKROOT/System/Library/Frameworks -Wno-multichar -Wno-deprecated-declarations" export NIX_LDFLAGS_AFTER+=" -L$SDKROOT/usr/lib" export CMAKE_OSX_ARCHITECTURES=x86_64 + # Workaround for https://openradar.appspot.com/22671534 on 10.11. + export gl_cv_func_getcwd_abort_bug=no ''; # A stdenv that wraps the Apple command-line tools and our other trivial symlinked bootstrap tools diff --git a/pkgs/tools/backup/httrack/default.nix b/pkgs/tools/backup/httrack/default.nix index 573c4b58d60dd..8860fbc5dbcdf 100644 --- a/pkgs/tools/backup/httrack/default.nix +++ b/pkgs/tools/backup/httrack/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, zlib, openssl }: +{ stdenv, fetchurl, zlib, openssl, libiconv }: stdenv.mkDerivation rec { version = "3.48.21"; @@ -9,7 +9,7 @@ stdenv.mkDerivation rec { sha256 = "10p4gf8y9h7mxkqlbs3hqgvmvbgvcbax8jp1whbw4yidwahn06w7"; }; - buildInputs = [ zlib openssl ]; + buildInputs = [ zlib openssl ] ++ stdenv.lib.optional stdenv.isDarwin libiconv; meta = { homepage = "http://www.httrack.com"; diff --git a/pkgs/tools/misc/file/default.nix b/pkgs/tools/misc/file/default.nix index 7d991a415568a..749bf59fde96b 100644 --- a/pkgs/tools/misc/file/default.nix +++ b/pkgs/tools/misc/file/default.nix @@ -1,7 +1,7 @@ { stdenv, fetchurl, zlib }: stdenv.mkDerivation rec { - name = "file-5.24"; + name = "file-5.25"; buildInputs = [ zlib ]; @@ -10,7 +10,7 @@ stdenv.mkDerivation rec { "ftp://ftp.astron.com/pub/file/${name}.tar.gz" "http://distfiles.macports.org/file/${name}.tar.gz" ]; - sha256 = "1kjhqwmi1sjw8jcf6li725c59wm00zajrdfwgkwqxs295vgb6b40"; + sha256 = "1jhfi5mivdnqvry5la5q919l503ahwdwbf3hjhiv97znccakhd9p"; }; meta = { diff --git a/pkgs/tools/networking/aria2/default.nix b/pkgs/tools/networking/aria2/default.nix index 69b9dc4063862..07671ffe81f1b 100644 --- a/pkgs/tools/networking/aria2/default.nix +++ b/pkgs/tools/networking/aria2/default.nix @@ -1,5 +1,6 @@ { stdenv, fetchurl, pkgconfig, autoreconfHook , openssl, c-ares, libxml2, sqlite, zlib, libssh2 +, Security }: stdenv.mkDerivation rec { @@ -12,7 +13,8 @@ stdenv.mkDerivation rec { }; nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ openssl c-ares libxml2 sqlite zlib libssh2 ]; + buildInputs = [ openssl c-ares libxml2 sqlite zlib libssh2 ] ++ + stdenv.lib.optional stdenv.isDarwin Security; configureFlags = [ "--with-ca-bundle=/etc/ssl/certs/ca-certificates.crt" ]; diff --git a/pkgs/tools/security/mpw/default.nix b/pkgs/tools/security/mpw/default.nix new file mode 100644 index 0000000000000..15937a6792e69 --- /dev/null +++ b/pkgs/tools/security/mpw/default.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchurl, autoconf, automake, openssl, libxml2 }: + +let + scrypt_src = fetchurl { + url = "http://masterpasswordapp.com/libscrypt-b12b554.tar.gz"; + sha256 = "02vz4i66v1acd15xjgki4ilmmp28m6a5603gi4hf8id3d3ndl9n7"; + }; + +in stdenv.mkDerivation { + name = "mpw-2.1-cli4"; + + srcs = [ + (fetchurl { + url = "https://ssl.masterpasswordapp.com/mpw-2.1-cli4-0-gf6b2287.tar.gz"; + sha256 = "141bzb3nj18rbnbpdvsri8cdwwwxz4d6akyhfa834542xf96b9vf"; + }) + scrypt_src + ]; + + sourceRoot = "."; + + postUnpack = '' + cp -R libscrypt-b12b554/* lib/scrypt + ''; + + prePatch = '' + patchShebangs . + ''; + + NIX_CFLAGS_COMPILE = "-I${libxml2}/include/libxml2"; + + buildInputs = [ autoconf automake openssl libxml2 ]; + + buildPhase = '' + targets="mpw mpw-tests" ./build + ''; + + installPhase = '' + mkdir -p $out/bin + mv mpw $out/bin/mpw + ''; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0433fd8dbc52f..bb53ffe6bbdf6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -628,7 +628,9 @@ let inherit (androidenv) androidsdk_4_4 androidndk; - aria2 = callPackage ../tools/networking/aria2 { }; + aria2 = callPackage ../tools/networking/aria2 { + inherit (darwin.apple_sdk.frameworks) Security; + }; aria = aria2; at = callPackage ../tools/system/at { }; @@ -2017,10 +2019,12 @@ let ninka = callPackage ../development/tools/misc/ninka { }; nodejs-4_1 = callPackage ../development/web/nodejs { + libtool = darwin.cctools; openssl = openssl_1_0_2; }; nodejs-0_10 = callPackage ../development/web/nodejs/v0_10.nix { + libtool = darwin.cctools; inherit (darwin.apple_sdk.frameworks) CoreServices ApplicationServices Carbon Foundation; }; @@ -2029,7 +2033,7 @@ let else nodejs-4_1; - nodePackages_4_1 = callPackage ./node-packages.nix { self = nodePackages_4_1; nodejs = nodejs-4_1; }; + nodePackages_4_1 = recurseIntoAttrs (callPackage ./node-packages.nix { self = nodePackages_4_1; nodejs = nodejs-4_1; }); nodePackages_0_10 = callPackage ./node-packages.nix { self = nodePackages_0_10; nodejs = nodejs-0_10; }; @@ -2244,6 +2248,8 @@ let mpage = callPackage ../tools/text/mpage { }; + mpw = callPackage ../tools/security/mpw { }; + mr = callPackage ../applications/version-management/mr { }; mrtg = callPackage ../tools/misc/mrtg { }; @@ -5091,23 +5097,13 @@ let bundlerEnv = callPackage ../development/interpreters/ruby/bundler-env { }; ruby_1_8_7 = callPackage ../development/interpreters/ruby/ruby-1.8.7.nix { }; - ruby_1_9_3 = callPackage ../development/interpreters/ruby/ruby-1.9.3.nix { - inherit (darwin) libobjc; - }; - ruby_2_0_0 = callPackage ../development/interpreters/ruby/ruby-2.0.0.nix { }; - ruby_2_1_0 = callPackage ../development/interpreters/ruby/ruby-2.1.0.nix { }; - ruby_2_1_1 = callPackage ../development/interpreters/ruby/ruby-2.1.1.nix { }; - ruby_2_1_2 = callPackage ../development/interpreters/ruby/ruby-2.1.2.nix { }; - ruby_2_1_3 = callPackage ../development/interpreters/ruby/ruby-2.1.3.nix { }; - ruby_2_1_6 = callPackage ../development/interpreters/ruby/ruby-2.1.6.nix { - inherit (darwin) libobjc libunwind; - }; - ruby_2_2_0 = callPackage ../development/interpreters/ruby/ruby-2.2.0.nix { - inherit (darwin) libobjc libunwind; - }; - ruby_2_2_2 = callPackage ../development/interpreters/ruby/ruby-2.2.2.nix { - inherit (darwin) libobjc libunwind; - }; + inherit (callPackage ../development/interpreters/ruby {}) + # TODO: uncomment when ruby_1_8_7 doesn't need autoconf + # ruby_1_8_7 + ruby_1_9_3 + ruby_2_0_0 + ruby_2_1_0 ruby_2_1_1 ruby_2_1_2 ruby_2_1_3 ruby_2_1_6 + ruby_2_2_0 ruby_2_2_2; # Ruby aliases ruby = ruby_2_2; @@ -5469,6 +5465,7 @@ let doxygen = callPackage ../development/tools/documentation/doxygen { qt4 = null; + inherit (darwin.apple_sdk.frameworks) CoreServices; }; doxygen_gui = lowPrio (doxygen.override { inherit qt4; }); @@ -6004,6 +6001,10 @@ let cogl = cogl_1_20; }; + clutter_1_24 = callPackage ../development/libraries/clutter/1.24.nix { + cogl = cogl_1_22; + }; + clutter-gst = callPackage ../development/libraries/clutter-gst { }; clutter-gst_3_0 = callPackage ../development/libraries/clutter-gst/3.0.nix { @@ -6022,6 +6023,8 @@ let cogl_1_20 = callPackage ../development/libraries/cogl/1.20.nix { }; + cogl_1_22 = callPackage ../development/libraries/cogl/1.22.nix { }; + coin3d = callPackage ../development/libraries/coin3d { }; CoinMP = callPackage ../development/libraries/CoinMP { }; @@ -7132,7 +7135,7 @@ let libjpeg_original = callPackage ../development/libraries/libjpeg { }; libjpeg_turbo = callPackage ../development/libraries/libjpeg-turbo { }; - libjpeg = if (stdenv.isLinux) then libjpeg_turbo else libjpeg_original; # some problems, both on FreeBSD and Darwin + libjpeg = if stdenv.isLinux then libjpeg_turbo else libjpeg_original; # some problems, both on FreeBSD and Darwin libjpeg62 = callPackage ../development/libraries/libjpeg/62.nix { libtool = libtool_1_5; @@ -8348,7 +8351,6 @@ let v8_3_16_14 = callPackage ../development/libraries/v8/3.16.14.nix { inherit (pythonPackages) gyp; - stdenv = overrideCC stdenv gcc48; }; v8_3_24_10 = callPackage ../development/libraries/v8/3.24.10.nix { @@ -9346,14 +9348,16 @@ let zookeeper_mt = callPackage ../development/libraries/zookeeper_mt { }; xquartz = callPackage ../servers/x11/xquartz { }; - quartz-wm = callPackage ../servers/x11/quartz-wm { stdenv = clangStdenv; }; + quartz-wm = callPackage ../servers/x11/quartz-wm { + stdenv = clangStdenv; + }; xorg = recurseIntoAttrs (lib.callPackagesWith pkgs ../servers/x11/xorg/default.nix { inherit clangStdenv fetchurl fetchgit fetchpatch stdenv pkgconfig intltool freetype fontconfig libxslt expat libpng zlib perl mesa_drivers spice_protocol dbus libuuid openssl gperf m4 libevdev tradcpp libinput mcpp makeWrapper autoreconfHook autoconf automake libtool xmlto asciidoc flex bison python mtdev pixman; - inherit (darwin) apple_sdk; + inherit (darwin) apple_sdk libobjc CF; bootstrap_cmds = if stdenv.isDarwin then darwin.bootstrap_cmds else null; mesa = mesa_noglu; udev = if stdenv.isLinux then udev else null; @@ -9995,7 +9999,11 @@ let libcap_manpages = callPackage ../os-specific/linux/libcap/man.nix { }; - libcap_ng = callPackage ../os-specific/linux/libcap-ng { }; + libcap_ng = callPackage ../os-specific/linux/libcap-ng { + swig = null; # Currently not using the python2/3 bindings + python2 = null; # Currently not using the python2 bindings + python3 = null; # Currently not using the python3 bindings + }; libnscd = callPackage ../os-specific/linux/libnscd { }; @@ -11287,6 +11295,7 @@ let external = { inherit (haskellPackages) ghc-mod structured-haskell-mode Agda; + inherit (pythonPackages) elpy; }; }; @@ -13910,6 +13919,8 @@ let gnome3_16 = recurseIntoAttrs (callPackage ../desktops/gnome-3/3.16 { }); + gnome3_18 = recurseIntoAttrs (callPackage ../desktops/gnome-3/3.18 { }); + gnome3 = gnome3_16; gnome = recurseIntoAttrs gnome2; diff --git a/pkgs/top-level/emacs-packages.nix b/pkgs/top-level/emacs-packages.nix index 2600fe1b82a68..d331850b504b3 100644 --- a/pkgs/top-level/emacs-packages.nix +++ b/pkgs/top-level/emacs-packages.nix @@ -440,6 +440,44 @@ let self = _self // overrides; }; }; + elpy = melpaBuild rec { + pname = "elpy"; + version = external.elpy.version; + src = fetchFromGitHub { + owner = "jorgenschaefer"; + repo = pname; + rev = "39ea47c73f040ce8dcc1c2d2639ebc0eb57ab8c8"; + sha256 = "0q3av1qv4m6aj4bil608f688hjpr5px8zqnnrdqx784nz98rpjrs"; + }; + + patchPhase = '' + for file in elpy.el elpy-pkg.el; do + substituteInPlace $file \ + --replace "company \"0.8.2\"" "company \"${company.version}\"" \ + --replace "find-file-in-project \"3.3\"" "find-file-in-project \"${find-file-in-project.version}\"" \ + --replace "highlight-indentation \"0.5.0\"" "highlight-indentation \"${highlight-indentation.version}\"" \ + --replace "pyvenv \"1.3\"" "pyvenv \"${pyvenv.version}\"" \ + --replace "yasnippet \"0.8.0\"" "yasnippet \"${yasnippet.version}\"" + done + ''; + + packageRequires = [ + company find-file-in-project highlight-indentation pyvenv yasnippet + ]; + + propagatedUserEnvPkgs = [ external.elpy ] ++ packageRequires; + + meta = { + description = "Emacs Python Development Environment"; + longDescription = '' + Elpy is an Emacs package to bring powerful Python editing to Emacs. + It combines a number of other packages, both written in Emacs Lisp as + well as Python. + ''; + license = gpl3Plus; + }; + }; + engine-mode = melpaBuild rec { pname = "engine-mode"; version = "1.0.0"; @@ -571,6 +609,26 @@ let self = _self // overrides; }; }; + find-file-in-project = melpaBuild rec { + pname = "find-file-in-project"; + version = "3.5"; + src = fetchFromGitHub { + owner = "technomancy"; + repo = pname; + rev = "53a8d8174f915d9dcf5ac6954b1c0cae61266177"; + sha256 = "0wky8vqg08iw34prbz04bqmhfhj82y93swb8zkz6la2vf9da0gmd"; + }; + meta = { + description = "Quick access to project files in Emacs"; + longDescription = '' + Find files in a project quickly. + This program provides a couple methods for quickly finding any file in a + given project. It depends on GNU find. + ''; + license = gpl3Plus; + }; + }; + flim = melpaBuild rec { pname = "flim"; version = "1.14.9"; # 20141216 @@ -832,6 +890,30 @@ let self = _self // overrides; meta = { license = gpl3Plus; }; }; + highlight-indentation = melpaBuild rec { + pname = "highlight-indentation"; + version = "0.7.0"; + src = fetchFromGitHub { + owner = "antonj"; + repo = "Highlight-Indentation-for-Emacs"; + rev = "v${version}"; + sha256 = "00l54k75qk24a0znzl4ij3s3nrnr2wy9ha3za8apphzlm98m907k"; + }; + meta = { + description = "Minor modes to highlight indentation guides in emacs"; + longDescription = '' + Provides two minor modes highlight-indentation-mode and + highlight-indentation-current-column-mode + + - highlight-indentation-mode displays guidelines indentation + (space indentation only). + - highlight-indentation-current-column-mode displays guidelines for the + current-point indentation (space indentation only). + ''; + license = gpl2Plus; + }; + }; + ibuffer-vc = melpaBuild rec { pname = "ibuffer-vc"; version = "0.10"; @@ -1189,6 +1271,25 @@ let self = _self // overrides; meta = { license = gpl3Plus; }; }; + pyvenv = melpaBuild rec { + pname = "pyvenv"; + version = "1.7"; + src = fetchFromGitHub { + owner = "jorgenschaefer"; + repo = pname; + rev = "e4f2fa7a32cf480f34d628d8eb5b9b60374d0e8e"; + sha256 = "1669id1p69kpq8zzldxj1p6iyz68701snn462g22k2acfzc2bfha"; + }; + meta = { + description = "Python virtual environment interface for Emacs"; + longDescription = '' + This is a simple global minor mode which will replicate the changes done + by virtualenv activation inside Emacs. + ''; + license = gpl2Plus; + }; + }; + rainbow-delimiters = melpaBuild rec { pname = "rainbow-delimiters"; version = "2.1.1"; @@ -1506,6 +1607,29 @@ let self = _self // overrides; meta = { license = gpl3Plus; }; }; + yasnippet = melpaBuild rec { + pname = "yasnippet"; + version = "0.8.1"; + src = fetchFromGitHub { + owner = "capitaomorte"; + repo = pname; + rev = "01139a2deb9eda272b9b771fbbe15d096061efa4"; + sha256 = "1b0bxzkmw7yd1yf6326zf52aq63n283vy57pysj8cc34d9bk6nnk"; + }; + meta = { + description = "A template system for Emacs"; + longDescription = '' + YASnippet is a template system for Emacs. + It allows you to type an abbreviation and automatically expand it into + function templates. Bundled language templates include: C, C++, C#, + Perl, Python, Ruby, SQL, LaTeX, HTML, CSS and more. + The snippet syntax is inspired from TextMate's syntax, you can even import + most TextMate templates to YASnippet. + ''; + license = gpl2Plus; + }; + }; + zenburn-theme = melpaBuild rec { pname = "zenburn-theme"; version = "2.2"; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index f472aec99c0b4..41f5d59258938 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -3015,6 +3015,40 @@ let }; }; + deskcon = self.buildPythonPackage rec { + name = "deskcon-0.3"; + disabled = !isPy27; + + src = pkgs.fetchFromGitHub { + owner= "screenfreeze"; + repo = "deskcon-desktop"; + rev = "267804122188fa79c37f2b21f54fe05c898610e6"; + sha256 ="0i1dd85ls6n14m9q7lkympms1w3x0pqyaxvalq82s4xnjdv585j3"; + }; + + phases = [ "unpackPhase" "installPhase" ]; + + pythonPath = [ self.pyopenssl pkgs.gtk3 ]; + + installPhase = '' + substituteInPlace server/deskcon-server --replace "python2" "python" + + mkdir -p $out/bin + mkdir -p $out/lib/${python.libPrefix}/site-packages + cp -r server/* $out/lib/${python.libPrefix}/site-packages + mv $out/lib/${python.libPrefix}/site-packages/deskcon-server $out/bin/deskcon-server + + wrapPythonProgramsIn $out/bin "$out $pythonPath" + ''; + + meta = { + description = "integrates an Android device into a desktop"; + homepage = https://github.com/screenfreeze/deskcon-desktop; + license = licenses.gpl3; + }; + }; + + dill = buildPythonPackage rec { name = "dill-${version}"; version = "0.2.4"; @@ -5820,12 +5854,14 @@ let elpy = buildPythonPackage rec { - name = "elpy-1.0.1"; + name = "elpy-${version}"; + version = "1.9.0"; src = pkgs.fetchurl { - url = "http://pypi.python.org/packages/source/e/elpy/elpy-1.0.1.tar.gz"; - md5 = "5453f085f7871ed8fc11d51f0b68c785"; + url = "https://pypi.python.org/packages/source/e/elpy/${name}.tar.gz"; + md5 = "651f6f46767b7132e5c0f83d5ac3b1f7"; }; - propagatedBuildInputs = with self; [ flake8 ]; + python2Deps = if isPy3k then [ ] else [ self.rope ]; + propagatedBuildInputs = with self; [ flake8 autopep8 jedi importmagic ] ++ python2Deps; doCheck = false; # there are no tests @@ -18470,4 +18506,24 @@ let }; }; + importmagic = buildPythonPackage rec { + simpleName = "importmagic"; + name = "${simpleName}-${version}"; + version = "0.1.3"; + doCheck = false; # missing json file from tarball + + src = pkgs.fetchurl { + url = "https://pypi.python.org/packages/source/i/${simpleName}/${name}.tar.gz"; + sha256 = "194bl8l8sc2ibwi6g5kz6xydkbngdqpaj6r2gcsaw1fc73iswwrj"; + }; + + propagatedBuildInputs = with self; [ six ]; + + meta = { + description = "Python Import Magic - automagically add, remove and manage imports"; + homepage = http://github.com/alecthomas/importmagic; + license = "bsd"; + }; + }; + }; in pythonPackages |