Architecture specific change in rpms/kitty.git
by githook-noreply@fedoraproject.org
The package rpms/kitty.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/kitty.git/commit/?id=4ecce33e52d2....
Change:
+ExcludeArch: s390x
Thanks.
Full change:
============
commit 4ecce33e52d2923809cead1b4111e6b5a1eb1c19
Author: Artem Polishchuk <ego.cordatus(a)gmail.com>
Date: Tue Mar 24 19:08:27 2020 +0200
Drop sedding build flags. Not needed anymore.
Fix build step as upstream recommended
Do not exclude ppc64le arch anymore
diff --git a/kitty.spec b/kitty.spec
index 0775721..42b651d 100644
--- a/kitty.spec
+++ b/kitty.spec
@@ -4,12 +4,9 @@
Name: kitty
Version: 0.17.1
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Cross-platform, fast, feature full, GPU based terminal emulator
-
-# 0.17.1 won't compile on ppc64le arch
-# * https://github.com/kovidgoyal/kitty/issues/2471
-ExcludeArch: s390x ppc64le
+ExcludeArch: s390x
# BSD: docs/_templates/searchbox.html
# zlib: glfw/
@@ -87,6 +84,7 @@ Suggests: ImageMagick%{?_isa}
- Has multiple copy/paste buffers, like vim.
+# terminfo package
%package terminfo
Summary: The terminfo file for Kitty Terminal
BuildArch: noarch
@@ -99,6 +97,7 @@ Cross-platform, fast, feature full, GPU based terminal emulator.
The terminfo file for Kitty Terminal.
+# doc package
%package doc
Summary: Documentation for %{name}
@@ -122,21 +121,9 @@ sed -e "s/f.endswith('\.so')/f.endswith('\.so') or f.endswith('\.py')/g" -i setu
# script-without-shebang '__init__.py'
find -type f -name "*.py*" -exec chmod -x "{}" \;
-# Disable native optimizations
-sed -i 's|native_optimizations=True|native_optimizations=False|' setup.py
-
-# Use default for Fedora -O2 optimizations
-sed -i 's|-O3|-O2|g' setup.py
-
-
-%build
-%set_build_flags
-
-# Project using custom build scripts :(
-%{__python3} setup.py build
-
%install
+%set_build_flags
%{__python3} setup.py linux-package \
--libdir-name=%{_lib} \
--prefix=%{buildroot}%{_prefix} \
@@ -179,6 +166,11 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/*.desktop
%changelog
+* Tue Mar 24 2020 Artem Polishchuk <ego.cordatus(a)gmail.com> - 0.17.1-2
+- Drop sedding build flags. Not needed anymore.
+- Fix build step as upstream recommended
+- Do not exclude ppc64le arch anymore
+
* Tue Mar 24 2020 Artem Polishchuk <ego.cordatus(a)gmail.com> - 0.17.1-1
- Update to 0.17.1
4 years, 1 month
Architecture specific change in rpms/gap-pkg-profiling.git
by githook-noreply@fedoraproject.org
The package rpms/gap-pkg-profiling.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/gap-pkg-profiling.git/commit/?id=...
https://src.fedoraproject.org/cgit/rpms/gap-pkg-profiling.git/commit/?id=....
Change:
-%ifnarch aarch64
+%ifnarch aarch64
Thanks.
Full change:
============
commit 54b7456a341b75d9f46a60bfd3597bc52c4a8d6c
Author: Jerry James <loganjerry(a)gmail.com>
Date: Mon Mar 23 20:45:00 2020 -0600
Drop aarch64 workaround.
diff --git a/gap-pkg-profiling.spec b/gap-pkg-profiling.spec
index 31bf1ba..46b1761 100644
--- a/gap-pkg-profiling.spec
+++ b/gap-pkg-profiling.spec
@@ -8,7 +8,7 @@
Name: gap-pkg-%{pkgname}
Version: 2.2.1
-Release: 4.%{gitdate}.%{shortcommit}%{?dist}
+Release: 5.%{gitdate}.%{shortcommit}%{?dist}
Summary: Line by line profiling and code coverage for GAP
# src/md5.{cc,h} is Public Domain.
@@ -93,12 +93,9 @@ cp -a bin data doc gap tst VERSION *.g \
%{buildroot}%{_gap_dir}/pkg/%{pkgname}-%{version}
rm -f %{buildroot}%{_gap_dir}/pkg/%{pkgname}-%{version}/doc/*.{aux,bbl,blg,idx,ilg,ind,log,out,pnr,tex}
-# Work around a possible aarch64-specific gcc bug
-%ifnarch aarch64
%check
export LC_ALL=C.UTF-8
gap -l "%{buildroot}%{_gap_dir};%{_gap_dir}" < tst/testall.g
-%endif
%files
%doc AUTHORS HISTORY.md README
@@ -111,6 +108,9 @@ gap -l "%{buildroot}%{_gap_dir};%{_gap_dir}" < tst/testall.g
%{_gap_dir}/pkg/%{pkgname}-%{version}/doc/
%changelog
+* Mon Mar 23 2020 Jerry James <loganjerry(a)gmail.com> - 2.2.1-5.20190319.7a582bd
+- Drop aarch64 workaround
+
* Wed Mar 11 2020 Jerry James <loganjerry(a)gmail.com> - 2.2.1-4.20190319.7a582bd
- Rebuild for gap 4.11.0
commit 9d7b0943792113a16e477ec4f60341106843ca79
Author: Jerry James <loganjerry(a)gmail.com>
Date: Sat Mar 21 10:33:34 2020 -0600
Disable tests on aarch64 until possible gcc bug can be diagnosed.
diff --git a/gap-pkg-profiling.spec b/gap-pkg-profiling.spec
index d307496..31bf1ba 100644
--- a/gap-pkg-profiling.spec
+++ b/gap-pkg-profiling.spec
@@ -93,9 +93,12 @@ cp -a bin data doc gap tst VERSION *.g \
%{buildroot}%{_gap_dir}/pkg/%{pkgname}-%{version}
rm -f %{buildroot}%{_gap_dir}/pkg/%{pkgname}-%{version}/doc/*.{aux,bbl,blg,idx,ilg,ind,log,out,pnr,tex}
+# Work around a possible aarch64-specific gcc bug
+%ifnarch aarch64
%check
export LC_ALL=C.UTF-8
gap -l "%{buildroot}%{_gap_dir};%{_gap_dir}" < tst/testall.g
+%endif
%files
%doc AUTHORS HISTORY.md README
commit 23b2edce874b528cecf45deb545c492328a102d9
Author: Jerry James <loganjerry(a)gmail.com>
Date: Sat Mar 21 10:23:33 2020 -0600
Rebuild for gap 4.11.0.
diff --git a/gap-pkg-profiling.spec b/gap-pkg-profiling.spec
index 8013227..d307496 100644
--- a/gap-pkg-profiling.spec
+++ b/gap-pkg-profiling.spec
@@ -8,7 +8,7 @@
Name: gap-pkg-%{pkgname}
Version: 2.2.1
-Release: 3.%{gitdate}.%{shortcommit}%{?dist}
+Release: 4.%{gitdate}.%{shortcommit}%{?dist}
Summary: Line by line profiling and code coverage for GAP
# src/md5.{cc,h} is Public Domain.
@@ -25,7 +25,7 @@ BuildRequires: gap-devel
BuildRequires: gap-pkg-autodoc
BuildRequires: gap-pkg-io
BuildRequires: libtool
-BuildRequires: rapidjson-devel
+BuildRequires: pkgconfig(RapidJSON)
Requires: flamegraph
Requires: gap-pkg-io%{?_isa}
@@ -74,6 +74,7 @@ fixtimestamp gap/profiling.gi
./autogen.sh
%build
+export LC_ALL=C.UTF-8
%configure --with-gaproot=%{_gap_dir} --disable-silent-rules
# Get rid of undesirable hardcoded rpaths
@@ -93,6 +94,7 @@ cp -a bin data doc gap tst VERSION *.g \
rm -f %{buildroot}%{_gap_dir}/pkg/%{pkgname}-%{version}/doc/*.{aux,bbl,blg,idx,ilg,ind,log,out,pnr,tex}
%check
+export LC_ALL=C.UTF-8
gap -l "%{buildroot}%{_gap_dir};%{_gap_dir}" < tst/testall.g
%files
@@ -106,6 +108,9 @@ gap -l "%{buildroot}%{_gap_dir};%{_gap_dir}" < tst/testall.g
%{_gap_dir}/pkg/%{pkgname}-%{version}/doc/
%changelog
+* Wed Mar 11 2020 Jerry James <loganjerry(a)gmail.com> - 2.2.1-4.20190319.7a582bd
+- Rebuild for gap 4.11.0
+
* Tue Jan 28 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.2.1-3.20190319.7a582bd
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
4 years, 1 month
Architecture specific change in rpms/kf5-kcalendarcore.git
by githook-noreply@fedoraproject.org
The package rpms/kf5-kcalendarcore.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/kf5-kcalendarcore.git/commit/?id=....
Change:
+ExclusiveArch: x86_64 ppc64le %{arm}
Thanks.
Full change:
============
commit b6f1fb2dd1f14cf778825ece12b6eb3404d25032
Author: Rex Dieter <rdieter(a)gmail.com>
Date: Thu Mar 19 21:58:27 2020 -0500
5.68.0
diff --git a/.gitignore b/.gitignore
index 5d5a24b..f85c0a4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,3 +16,4 @@
/kcalendarcore-5.64.0.tar.xz
/kcalendarcore-5.66.0.tar.xz
/kcalendarcore-5.67.0.tar.xz
+/kcalendarcore-5.68.0.tar.xz
diff --git a/kf5-kcalendarcore.spec b/kf5-kcalendarcore.spec
index 3274a4d..b239a86 100644
--- a/kf5-kcalendarcore.spec
+++ b/kf5-kcalendarcore.spec
@@ -9,7 +9,7 @@
Name: kf5-kcalendarcore
Epoch: 1
-Version: 5.67.0
+Version: 5.68.0
Release: 1%{?dist}
Summary: KDE Frameworks 5 Tier 1 KCalendarCore Library
@@ -105,6 +105,9 @@ make test ARGS="--output-on-failure --timeout 20" -C %{_target_platform} ||:
%changelog
+* Fri Mar 20 2020 Rex Dieter <rdieter(a)fedoraproject.org> - 1:5.68.0-1
+- 5.68.0
+
* Sun Feb 02 2020 Rex Dieter <rdieter(a)fedoraproject.org> - 1:5.67.0-1
- 5.67.0
diff --git a/sources b/sources
index 151c110..87d91b1 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (kcalendarcore-5.67.0.tar.xz) = 6c5b10f80b3e2895719617d3de463fbe671ae7dd84640616a13d7c04e45d53792c5629862fe784c949bf04b0e6cf5c93a7bb87651afa4c22d488cfdbd3462f46
+SHA512 (kcalendarcore-5.68.0.tar.xz) = 256bcd4bbc0c3f2d53d05503955de505d937011fcc88006e1c52aaec9b8780e52ec18d229a4ce751df41c7ca2ddac07ba56cb5b743807a034fe7fb3f62dd7d0e
commit 023133f3d77f402ec12554e9a8b5d4670af14916
Author: Rex Dieter <rdieter(a)gmail.com>
Date: Sun Feb 2 17:52:52 2020 -0600
5.67.0
diff --git a/.gitignore b/.gitignore
index f439fc8..5d5a24b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,3 +15,4 @@
/kcalcore-19.08.3.tar.xz
/kcalendarcore-5.64.0.tar.xz
/kcalendarcore-5.66.0.tar.xz
+/kcalendarcore-5.67.0.tar.xz
diff --git a/kf5-kcalendarcore.spec b/kf5-kcalendarcore.spec
index 7c9f2aa..3274a4d 100644
--- a/kf5-kcalendarcore.spec
+++ b/kf5-kcalendarcore.spec
@@ -9,8 +9,8 @@
Name: kf5-kcalendarcore
Epoch: 1
-Version: 5.66.0
-Release: 2%{?dist}
+Version: 5.67.0
+Release: 1%{?dist}
Summary: KDE Frameworks 5 Tier 1 KCalendarCore Library
License: LGPLv2+ and GPLv3+
@@ -105,6 +105,9 @@ make test ARGS="--output-on-failure --timeout 20" -C %{_target_platform} ||:
%changelog
+* Sun Feb 02 2020 Rex Dieter <rdieter(a)fedoraproject.org> - 1:5.67.0-1
+- 5.67.0
+
* Wed Jan 29 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 1:5.66.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
diff --git a/sources b/sources
index 3513fe6..151c110 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (kcalendarcore-5.66.0.tar.xz) = 155b229c9903f8f72fc54950810e6efbd3fc81a9e546b747170ef9125115617db248a4936206671b4e7aa2337a95791f43f8532762e761f6ad22d4e2e73d45e2
+SHA512 (kcalendarcore-5.67.0.tar.xz) = 6c5b10f80b3e2895719617d3de463fbe671ae7dd84640616a13d7c04e45d53792c5629862fe784c949bf04b0e6cf5c93a7bb87651afa4c22d488cfdbd3462f46
commit f3ff7b68fcaf3e48115b03b47135d927cdb2eb2b
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Wed Jan 29 07:06:53 2020 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/kf5-kcalendarcore.spec b/kf5-kcalendarcore.spec
index 3d2c938..7c9f2aa 100644
--- a/kf5-kcalendarcore.spec
+++ b/kf5-kcalendarcore.spec
@@ -10,7 +10,7 @@
Name: kf5-kcalendarcore
Epoch: 1
Version: 5.66.0
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: KDE Frameworks 5 Tier 1 KCalendarCore Library
License: LGPLv2+ and GPLv3+
@@ -105,6 +105,9 @@ make test ARGS="--output-on-failure --timeout 20" -C %{_target_platform} ||:
%changelog
+* Wed Jan 29 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 1:5.66.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
* Sat Jan 18 2020 Rex Dieter <rdieter(a)fedoraproject.org> - 1:5.66.0-1
- 5.66.0
commit 4b28820dc78e1bb14d7cdb3d560fc8bb904dad89
Author: Troy Dawson <tdawson(a)redhat.com>
Date: Mon Jan 27 09:41:47 2020 -0800
libical (and thus kcalendarcore) not on all arches for RHEL8.
diff --git a/kf5-kcalendarcore.spec b/kf5-kcalendarcore.spec
index e460174..3d2c938 100644
--- a/kf5-kcalendarcore.spec
+++ b/kf5-kcalendarcore.spec
@@ -25,6 +25,7 @@ URL: https://cgit.kde.org/%{framework}.git
%endif
Source0: http://download.kde.org/%{stable}/frameworks/%{majmin}/%{framework}-%{ver...
+# libical (and thus kcalendarcore) not on all arches for RHEL8.
%if 0%{?rhel} == 8
ExclusiveArch: x86_64 ppc64le %{arm}
%endif
commit 6fc0975877c7e982adc43520f887a690770d5c66
Author: Troy Dawson <tdawson(a)redhat.com>
Date: Fri Jan 24 14:16:26 2020 -0800
Apply ExclusiveArch for RHEL8. libical not all all arches for RHEL8. (#1787674)
diff --git a/kf5-kcalendarcore.spec b/kf5-kcalendarcore.spec
index ecfe22c..e460174 100644
--- a/kf5-kcalendarcore.spec
+++ b/kf5-kcalendarcore.spec
@@ -25,6 +25,10 @@ URL: https://cgit.kde.org/%{framework}.git
%endif
Source0: http://download.kde.org/%{stable}/frameworks/%{majmin}/%{framework}-%{ver...
+%if 0%{?rhel} == 8
+ExclusiveArch: x86_64 ppc64le %{arm}
+%endif
+
BuildRequires: extra-cmake-modules >= %{majmin}
BuildRequires: kf5-rpm-macros
commit 1fc441170e6d722ab8669b72af0652adb951dd81
Author: Rex Dieter <rdieter(a)gmail.com>
Date: Sat Jan 18 14:50:51 2020 -0600
5.66.0
diff --git a/.gitignore b/.gitignore
index 07d1a5f..f439fc8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,3 +14,4 @@
/kcalcore-19.08.2.tar.xz
/kcalcore-19.08.3.tar.xz
/kcalendarcore-5.64.0.tar.xz
+/kcalendarcore-5.66.0.tar.xz
diff --git a/kf5-kcalendarcore.spec b/kf5-kcalendarcore.spec
index d54d109..ecfe22c 100644
--- a/kf5-kcalendarcore.spec
+++ b/kf5-kcalendarcore.spec
@@ -9,8 +9,8 @@
Name: kf5-kcalendarcore
Epoch: 1
-Version: 5.64.0
-Release: 2%{?dist}
+Version: 5.66.0
+Release: 1%{?dist}
Summary: KDE Frameworks 5 Tier 1 KCalendarCore Library
License: LGPLv2+ and GPLv3+
@@ -100,6 +100,9 @@ make test ARGS="--output-on-failure --timeout 20" -C %{_target_platform} ||:
%changelog
+* Sat Jan 18 2020 Rex Dieter <rdieter(a)fedoraproject.org> - 1:5.66.0-1
+- 5.66.0
+
* Tue Nov 12 2019 Rex Dieter <rdieter(a)fedoraproject.org> - 1:5.64.0-2
- -devel: fix dep on main pkg (add epoch)
diff --git a/sources b/sources
index 56cd240..3513fe6 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (kcalendarcore-5.64.0.tar.xz) = 562f0d35170389002b9a5e5b59fc90c276f4d54f1abc3e8558a6c22aadbd3e971a7eadb90fe793ce088bc0834f2d20c1396085ce2e3c8bb64fddb77b06c24231
+SHA512 (kcalendarcore-5.66.0.tar.xz) = 155b229c9903f8f72fc54950810e6efbd3fc81a9e546b747170ef9125115617db248a4936206671b4e7aa2337a95791f43f8532762e761f6ad22d4e2e73d45e2
commit ce9c58bdd586b3d34cde326c1a624bed47af04a9
Author: Rex Dieter <rdieter(a)gmail.com>
Date: Tue Nov 12 13:42:24 2019 -0600
-devel: fix dep on main pkg (add epoch)
diff --git a/kf5-kcalendarcore.spec b/kf5-kcalendarcore.spec
index 281cc6b..d54d109 100644
--- a/kf5-kcalendarcore.spec
+++ b/kf5-kcalendarcore.spec
@@ -10,7 +10,7 @@
Name: kf5-kcalendarcore
Epoch: 1
Version: 5.64.0
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: KDE Frameworks 5 Tier 1 KCalendarCore Library
License: LGPLv2+ and GPLv3+
@@ -43,7 +43,7 @@ BuildRequires: xorg-x11-server-Xvfb
%package devel
Summary: Development files for %{name}
-Requires: %{name}%{?_isa} = %{version}-%{release}
+Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
Requires: libical-devel
%description devel
The %{name}-devel package contains libraries and header files for
@@ -100,6 +100,9 @@ make test ARGS="--output-on-failure --timeout 20" -C %{_target_platform} ||:
%changelog
+* Tue Nov 12 2019 Rex Dieter <rdieter(a)fedoraproject.org> - 1:5.64.0-2
+- -devel: fix dep on main pkg (add epoch)
+
* Mon Nov 11 2019 Rex Dieter <rdieter(a)fedoraproject.org> - 1:5.64.0-1
- move to kde frameworks
- drop Provides: kf5-kcalcore (not used anywhere)
commit f65035636c9c8781da9d8d623f1083619a02ff82
Author: Rex Dieter <rdieter(a)gmail.com>
Date: Mon Nov 11 15:35:13 2019 -0600
move to kde frameworks
drop Provides: kf5-kcalcore (not used anywhere)
diff --git a/.gitignore b/.gitignore
index dcf79f2..07d1a5f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,3 +13,4 @@
/kcalcore-19.04.3.tar.xz
/kcalcore-19.08.2.tar.xz
/kcalcore-19.08.3.tar.xz
+/kcalendarcore-5.64.0.tar.xz
diff --git a/kf5-kcalendarcore.spec b/kf5-kcalendarcore.spec
index 11e285f..281cc6b 100644
--- a/kf5-kcalendarcore.spec
+++ b/kf5-kcalendarcore.spec
@@ -1,4 +1,4 @@
-%global framework kcalcore
+%global framework kcalendarcore
# uncomment to enable bootstrap mode
#global bootstrap 1
@@ -8,23 +8,24 @@
%endif
Name: kf5-kcalendarcore
-Version: 19.08.3
-Release: 2%{?dist}
-Summary: The KCalendarCore Library
+Epoch: 1
+Version: 5.64.0
+Release: 1%{?dist}
+Summary: KDE Frameworks 5 Tier 1 KCalendarCore Library
License: LGPLv2+ and GPLv3+
URL: https://cgit.kde.org/%{framework}.git
+%global majmin %(echo %{version} | cut -d. -f1-2)
%global revision %(echo %{version} | cut -d. -f3)
%if %{revision} >= 50
%global stable unstable
%else
%global stable stable
%endif
-Source0: http://download.kde.org/%{stable}/applications/%{version}/src/%{framework...
+Source0: http://download.kde.org/%{stable}/frameworks/%{majmin}/%{framework}-%{ver...
-BuildRequires: extra-cmake-modules
-BuildRequires: kf5-kdelibs4support-devel >= 5.15
+BuildRequires: extra-cmake-modules >= %{majmin}
BuildRequires: kf5-rpm-macros
BuildRequires: bison
@@ -37,18 +38,12 @@ BuildRequires: dbus-x11
BuildRequires: xorg-x11-server-Xvfb
%endif
-Provides: kf5-%{framework} = %{version}-%{release}
-Provides: kf5-%{framework}%{?_isa} = %{version}-%{release}
-
%description
%{summary}.
%package devel
Summary: Development files for %{name}
-Provides: kf5-%{framework}-devel = %{version}-%{release}
-Provides: kf5-%{framework}-devel%{?_isa} = %{version}-%{release}
Requires: %{name}%{?_isa} = %{version}-%{release}
-Requires: kf5-kdelibs4support-devel
Requires: libical-devel
%description devel
The %{name}-devel package contains libraries and header files for
@@ -58,9 +53,6 @@ developing applications that use %{name}.
%prep
%autosetup -n %{framework}-%{version}
-# Fix PIM_VERSION
-sed -i -e 's|set(PIM_VERSION "5.12.2")|set(PIM_VERSION "5.12.3")|' CMakeLists.txt
-
%build
mkdir %{_target_platform}
@@ -75,7 +67,14 @@ popd
%install
make install/fast DESTDIR=%{buildroot} -C %{_target_platform}
-
+## TODO: poke upstream about failures seen on f30
+#The following tests FAILED:
+# 39 - testicaltimezones (Failed)
+# 472 - Compat-libical3-AppleICal_1.5.ics (Failed)
+# 473 - Compat-libical3-Evolution_2.8.2_timezone_test.ics (Failed)
+# 475 - Compat-libical3-KOrganizer_3.1a.ics (Failed)
+# 477 - Compat-libical3-MSExchange.ics (Failed)
+# 478 - Compat-libical3-Mozilla_1.0.ics (Failed)
%check
%if 0%{?tests}
export CTEST_OUTPUT_ON_FAILURE=1
@@ -101,6 +100,10 @@ make test ARGS="--output-on-failure --timeout 20" -C %{_target_platform} ||:
%changelog
+* Mon Nov 11 2019 Rex Dieter <rdieter(a)fedoraproject.org> - 1:5.64.0-1
+- move to kde frameworks
+- drop Provides: kf5-kcalcore (not used anywhere)
+
* Mon Nov 11 2019 Rex Dieter <rdieter(a)fedoraproject.org> - 19.08.3-2
- CMakeLists.txt: fix PIM_VERSION (wasn't bumped verison 19.08.2)
diff --git a/sources b/sources
index 61539d3..56cd240 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (kcalcore-19.08.3.tar.xz) = 34328e778759af89a1526ac8df54e594185db9a0bd0c471a49ef134435dbed0dbe4ec36f13a293bde08a7b0b49cb2cc89443a83662813d8e3212c9a7b6651ef3
+SHA512 (kcalendarcore-5.64.0.tar.xz) = 562f0d35170389002b9a5e5b59fc90c276f4d54f1abc3e8558a6c22aadbd3e971a7eadb90fe793ce088bc0834f2d20c1396085ce2e3c8bb64fddb77b06c24231
diff --git a/sources.basename b/sources.basename
index 33d98bc..bac74d1 100644
--- a/sources.basename
+++ b/sources.basename
@@ -1 +1 @@
-kcalcore
+kcalendarcore
commit 086542e6eac2c3f3f3ddeeae44319ab7b18fbd42
Author: Rex Dieter <rdieter(a)gmail.com>
Date: Mon Nov 11 10:06:24 2019 -0600
CMakeLists.txt: fix PIM_VERSION (wasn't bumped verison 19.08.2)
diff --git a/kf5-kcalendarcore.spec b/kf5-kcalendarcore.spec
index 231cb32..11e285f 100644
--- a/kf5-kcalendarcore.spec
+++ b/kf5-kcalendarcore.spec
@@ -9,7 +9,7 @@
Name: kf5-kcalendarcore
Version: 19.08.3
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: The KCalendarCore Library
License: LGPLv2+ and GPLv3+
@@ -58,6 +58,9 @@ developing applications that use %{name}.
%prep
%autosetup -n %{framework}-%{version}
+# Fix PIM_VERSION
+sed -i -e 's|set(PIM_VERSION "5.12.2")|set(PIM_VERSION "5.12.3")|' CMakeLists.txt
+
%build
mkdir %{_target_platform}
@@ -98,6 +101,9 @@ make test ARGS="--output-on-failure --timeout 20" -C %{_target_platform} ||:
%changelog
+* Mon Nov 11 2019 Rex Dieter <rdieter(a)fedoraproject.org> - 19.08.3-2
+- CMakeLists.txt: fix PIM_VERSION (wasn't bumped verison 19.08.2)
+
* Mon Nov 11 2019 Rex Dieter <rdieter(a)fedoraproject.org> - 19.08.3-1
- 19.08.3
commit ccf411713629d1592acc339b083a91a74c66b194
Author: Rex Dieter <rdieter(a)gmail.com>
Date: Mon Nov 11 08:16:05 2019 -0600
19.08.3
diff --git a/.gitignore b/.gitignore
index 73ef8fd..dcf79f2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,3 +12,4 @@
/kcalcore-19.04.2.tar.xz
/kcalcore-19.04.3.tar.xz
/kcalcore-19.08.2.tar.xz
+/kcalcore-19.08.3.tar.xz
diff --git a/kf5-kcalendarcore.spec b/kf5-kcalendarcore.spec
index 78f9c9a..231cb32 100644
--- a/kf5-kcalendarcore.spec
+++ b/kf5-kcalendarcore.spec
@@ -8,7 +8,7 @@
%endif
Name: kf5-kcalendarcore
-Version: 19.08.2
+Version: 19.08.3
Release: 1%{?dist}
Summary: The KCalendarCore Library
@@ -98,6 +98,9 @@ make test ARGS="--output-on-failure --timeout 20" -C %{_target_platform} ||:
%changelog
+* Mon Nov 11 2019 Rex Dieter <rdieter(a)fedoraproject.org> - 19.08.3-1
+- 19.08.3
+
* Fri Oct 18 2019 Rex Dieter <rdieter(a)fedoraproject.org> - 19.08.2-1
- 19.08.2
diff --git a/sources b/sources
index 5bcd53e..61539d3 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (kcalcore-19.08.2.tar.xz) = 7f89f986b6ef91686d95888c3aa637a7072dbdc3054cad1ecc6e0cb16c08d0be25f578b9d8779d068c1cb3cc7c2eea42cb10d5136c62398a0a5de39a7beee6d4
+SHA512 (kcalcore-19.08.3.tar.xz) = 34328e778759af89a1526ac8df54e594185db9a0bd0c471a49ef134435dbed0dbe4ec36f13a293bde08a7b0b49cb2cc89443a83662813d8e3212c9a7b6651ef3
commit b801ea608f9da392ddef3c8a9fbf21bd86d4a843
Author: Rex Dieter <rdieter(a)gmail.com>
Date: Fri Oct 18 13:20:26 2019 -0500
rediculous, sorry
diff --git a/kf5-kcalendarcore.spec b/kf5-kcalendarcore.spec
index 0505172..78f9c9a 100644
--- a/kf5-kcalendarcore.spec
+++ b/kf5-kcalendarcore.spec
@@ -90,7 +90,7 @@ make test ARGS="--output-on-failure --timeout 20" -C %{_target_platform} ||:
%{_kf5_libdir}/libKF5CalendarCore.so.*
%files devel
-%{_kf5_includedir}/kcalcore_version.h
+%{_kf5_includedir}/kcal*core_version.h
%{_kf5_includedir}/KCalendarCore/
%{_kf5_libdir}/libKF5CalendarCore.so
%{_kf5_libdir}/cmake/KF5CalendarCore/
commit 3761ba47522ae984c976ba4e83c70d7b75a30586
Author: Rex Dieter <rdieter(a)gmail.com>
Date: Fri Oct 18 13:01:33 2019 -0500
update %%files harder-er
diff --git a/kf5-kcalendarcore.spec b/kf5-kcalendarcore.spec
index 67e8c27..0505172 100644
--- a/kf5-kcalendarcore.spec
+++ b/kf5-kcalendarcore.spec
@@ -91,7 +91,7 @@ make test ARGS="--output-on-failure --timeout 20" -C %{_target_platform} ||:
%files devel
%{_kf5_includedir}/kcalcore_version.h
-%{_kf5_includedir}/KCalCore/
+%{_kf5_includedir}/KCalendarCore/
%{_kf5_libdir}/libKF5CalendarCore.so
%{_kf5_libdir}/cmake/KF5CalendarCore/
%{_kf5_archdatadir}/mkspecs/modules/qt_KCalendarCore.pri
commit 892754e4046ca59b3cf364712735810031c094c0
Author: Rex Dieter <rdieter(a)gmail.com>
Date: Fri Oct 18 12:03:14 2019 -0500
update %%files harder
diff --git a/kf5-kcalendarcore.spec b/kf5-kcalendarcore.spec
index 2d5aaab..67e8c27 100644
--- a/kf5-kcalendarcore.spec
+++ b/kf5-kcalendarcore.spec
@@ -94,7 +94,7 @@ make test ARGS="--output-on-failure --timeout 20" -C %{_target_platform} ||:
%{_kf5_includedir}/KCalCore/
%{_kf5_libdir}/libKF5CalendarCore.so
%{_kf5_libdir}/cmake/KF5CalendarCore/
-%{_kf5_archdatadir}/mkspecs/modules/qt_KCalCore.pri
+%{_kf5_archdatadir}/mkspecs/modules/qt_KCalendarCore.pri
%changelog
commit f6f7afe8dba7b885989e59910962fb6c605e62b5
Author: Rex Dieter <rdieter(a)gmail.com>
Date: Fri Oct 18 11:47:08 2019 -0500
update %%files
diff --git a/kf5-kcalendarcore.spec b/kf5-kcalendarcore.spec
index 2393daf..2d5aaab 100644
--- a/kf5-kcalendarcore.spec
+++ b/kf5-kcalendarcore.spec
@@ -86,7 +86,7 @@ make test ARGS="--output-on-failure --timeout 20" -C %{_target_platform} ||:
%files
%license COPYING
-%{_kf5_datadir}/qlogging-categories5/*%{framework}.*
+%{_kf5_datadir}/qlogging-categories5/*kcalendarcore.*
%{_kf5_libdir}/libKF5CalendarCore.so.*
%files devel
commit 494480f9dc4bcaa1e374173898409346b7063058
Author: Rex Dieter <rdieter(a)gmail.com>
Date: Fri Oct 18 11:28:57 2019 -0500
update %%files
diff --git a/kf5-kcalendarcore.spec b/kf5-kcalendarcore.spec
index dd3eff3..2393daf 100644
--- a/kf5-kcalendarcore.spec
+++ b/kf5-kcalendarcore.spec
@@ -86,7 +86,7 @@ make test ARGS="--output-on-failure --timeout 20" -C %{_target_platform} ||:
%files
%license COPYING
-%{_kf5_sysconfdir}/xdg/%{framework}.*
+%{_kf5_datadir}/qlogging-categories5/*%{framework}.*
%{_kf5_libdir}/libKF5CalendarCore.so.*
%files devel
commit 6013c3046d6f937a1c080a56f4e62b3d24cdb82e
Author: Rex Dieter <rdieter(a)gmail.com>
Date: Fri Oct 18 10:09:56 2019 -0500
19.08.2
diff --git a/.gitignore b/.gitignore
index 3891256..73ef8fd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,4 @@
/kcalcore-18.12.3.tar.xz
/kcalcore-19.04.2.tar.xz
/kcalcore-19.04.3.tar.xz
+/kcalcore-19.08.2.tar.xz
diff --git a/kf5-kcalendarcore.spec b/kf5-kcalendarcore.spec
index 96d8e47..dd3eff3 100644
--- a/kf5-kcalendarcore.spec
+++ b/kf5-kcalendarcore.spec
@@ -8,8 +8,8 @@
%endif
Name: kf5-kcalendarcore
-Version: 19.04.3
-Release: 2%{?dist}
+Version: 19.08.2
+Release: 1%{?dist}
Summary: The KCalendarCore Library
License: LGPLv2+ and GPLv3+
@@ -98,6 +98,9 @@ make test ARGS="--output-on-failure --timeout 20" -C %{_target_platform} ||:
%changelog
+* Fri Oct 18 2019 Rex Dieter <rdieter(a)fedoraproject.org> - 19.08.2-1
+- 19.08.2
+
* Thu Jul 25 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 19.04.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
diff --git a/sources b/sources
index baa0db4..5bcd53e 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (kcalcore-19.04.3.tar.xz) = 5ae825a12244d8ceac658395968aa00d0d276bc7952129db64d27c49a490123729e0b95ae8d05c8701a79703d359b373a92b4b11eace13db2c81df68e20d4b24
+SHA512 (kcalcore-19.08.2.tar.xz) = 7f89f986b6ef91686d95888c3aa637a7072dbdc3054cad1ecc6e0cb16c08d0be25f578b9d8779d068c1cb3cc7c2eea42cb10d5136c62398a0a5de39a7beee6d4
commit d84c63f50c5a1e2cbc21c84c1e12b50066e3aec3
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Thu Jul 25 11:28:45 2019 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/kf5-kcalendarcore.spec b/kf5-kcalendarcore.spec
index 247fcac..96d8e47 100644
--- a/kf5-kcalendarcore.spec
+++ b/kf5-kcalendarcore.spec
@@ -9,7 +9,7 @@
Name: kf5-kcalendarcore
Version: 19.04.3
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: The KCalendarCore Library
License: LGPLv2+ and GPLv3+
@@ -98,6 +98,9 @@ make test ARGS="--output-on-failure --timeout 20" -C %{_target_platform} ||:
%changelog
+* Thu Jul 25 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 19.04.3-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
* Fri Jul 12 2019 Rex Dieter <rdieter(a)fedoraproject.org> - 19.04.3-1
- 19.04.3
commit f7ac75af710e78a50df0fd7d51e80703647c5fdf
Author: Rex Dieter <rdieter(a)gmail.com>
Date: Fri Jul 12 12:12:34 2019 -0500
19.04.3
diff --git a/.gitignore b/.gitignore
index 7397439..3891256 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,4 @@
/kcalcore-18.12.2.tar.xz
/kcalcore-18.12.3.tar.xz
/kcalcore-19.04.2.tar.xz
+/kcalcore-19.04.3.tar.xz
diff --git a/kf5-kcalendarcore.spec b/kf5-kcalendarcore.spec
index ee037e1..247fcac 100644
--- a/kf5-kcalendarcore.spec
+++ b/kf5-kcalendarcore.spec
@@ -8,7 +8,7 @@
%endif
Name: kf5-kcalendarcore
-Version: 19.04.2
+Version: 19.04.3
Release: 1%{?dist}
Summary: The KCalendarCore Library
@@ -98,6 +98,9 @@ make test ARGS="--output-on-failure --timeout 20" -C %{_target_platform} ||:
%changelog
+* Fri Jul 12 2019 Rex Dieter <rdieter(a)fedoraproject.org> - 19.04.3-1
+- 19.04.3
+
* Wed Jun 05 2019 Rex Dieter <rdieter(a)fedoraproject.org> - 19.04.2-1
- 19.04.2
diff --git a/sources b/sources
index 74e0a54..baa0db4 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (kcalcore-19.04.2.tar.xz) = 3a222828e3ff90e03dce17a19cb7694cb5f2092c131fa1474ba70e54159df7eae5b379ed73d1eee0514f3f2d31e8777f047e9de7f5c269bbafc80db89fa5c6d3
+SHA512 (kcalcore-19.04.3.tar.xz) = 5ae825a12244d8ceac658395968aa00d0d276bc7952129db64d27c49a490123729e0b95ae8d05c8701a79703d359b373a92b4b11eace13db2c81df68e20d4b24
4 years, 1 month
Architecture specific change in rpms/perl-Parse-DMIDecode.git
by githook-noreply@fedoraproject.org
The package rpms/perl-Parse-DMIDecode.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/perl-Parse-DMIDecode.git/commit/?....
Change:
-ExclusiveArch: %{ix86} x86_64 ia64 aarch64
Thanks.
Full change:
============
commit 9eb4f47b754ba67788ff1cfab0ff229f2ab0caaf
Author: Miro Hronok <miro(a)hroncok.cz>
Date: Tue Mar 24 15:52:49 2020 +0100
Orphaned for 6+ weeks
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 6a40447..0000000
--- a/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/Parse-DMIDecode-0.03.tar.gz
diff --git a/dead.package b/dead.package
new file mode 100644
index 0000000..5204a84
--- /dev/null
+++ b/dead.package
@@ -0,0 +1 @@
+Orphaned for 6+ weeks
diff --git a/fix-pod-urls.patch b/fix-pod-urls.patch
deleted file mode 100644
index 64ccd1f..0000000
--- a/fix-pod-urls.patch
+++ /dev/null
@@ -1,45 +0,0 @@
---- a/lib/Parse/DMIDecode.pm
-+++ b/lib/Parse/DMIDecode.pm
-@@ -466,9 +466,9 @@
- L<http://perlgirl.org.uk>
-
- If you like this software, why not show your appreciation by sending the
--author something nice from her
--L<Amazon wishlist|http://www.amazon.co.uk/gp/registry/1VZXC59ESWYK0?sort=priority>?
--( http://www.amazon.co.uk/gp/registry/1VZXC59ESWYK0?sort=priority )
-+author something nice from her Amazon wishlist ?
-+
-+L<http://www.amazon.co.uk/gp/registry/1VZXC59ESWYK0?sort=priority>
-
- =head1 COPYRIGHT
-
---- a/lib/Parse/DMIDecode/Constants.pm
-+++ b/lib/Parse/DMIDecode/Constants.pm
-@@ -139,9 +139,9 @@
- L<http://perlgirl.org.uk>
-
- If you like this software, why not show your appreciation by sending the
--author something nice from her
--L<Amazon wishlist|http://www.amazon.co.uk/gp/registry/1VZXC59ESWYK0?sort=priority>?
--( http://www.amazon.co.uk/gp/registry/1VZXC59ESWYK0?sort=priority )
-+author something nice from her Amazon wishlist ?
-+
-+L<http://www.amazon.co.uk/gp/registry/1VZXC59ESWYK0?sort=priority>
-
- =head1 COPYRIGHT
-
---- a/lib/Parse/DMIDecode/Handle.pm
-+++ b/lib/Parse/DMIDecode/Handle.pm
-@@ -420,9 +420,9 @@
- L<http://perlgirl.org.uk>
-
- If you like this software, why not show your appreciation by sending the
--author something nice from her
--L<Amazon wishlist|http://www.amazon.co.uk/gp/registry/1VZXC59ESWYK0?sort=priority>?
--( http://www.amazon.co.uk/gp/registry/1VZXC59ESWYK0?sort=priority )
-+author something nice from her Amazon wishlist ?
-+
-+L<http://www.amazon.co.uk/gp/registry/1VZXC59ESWYK0?sort=priority>
-
- =head1 COPYRIGHT
-
diff --git a/perl-Parse-DMIDecode.spec b/perl-Parse-DMIDecode.spec
deleted file mode 100644
index eb5867f..0000000
--- a/perl-Parse-DMIDecode.spec
+++ /dev/null
@@ -1,123 +0,0 @@
-Name: perl-Parse-DMIDecode
-Version: 0.03
-Release: 21%{?dist}
-Summary: Interface to SMBIOS using dmidecode
-License: ASL 2.0
-URL: https://metacpan.org/release/Parse-DMIDecode
-Source0: https://cpan.metacpan.org/modules/by-module/Parse/Parse-DMIDecode-%{versi...
-# Pod fixing patch from RT 52296 -> https://rt.cpan.org/Ticket/Attachment/699959/360879/fix-pod-urls.patch
-Patch1: fix-pod-urls.patch
-# This mirrors the ExclusiveArch in the dmidecode spec file
-ExclusiveArch: %{ix86} x86_64 ia64 aarch64
-BuildRequires: dmidecode
-BuildRequires: perl-interpreter
-BuildRequires: perl-generators
-BuildRequires: perl(Carp)
-BuildRequires: perl(Data::Dumper)
-BuildRequires: perl(Exporter)
-BuildRequires: perl(ExtUtils::CBuilder)
-BuildRequires: perl(File::Which) >= 0.05
-BuildRequires: perl(lib)
-BuildRequires: perl(Module::Build)
-BuildRequires: perl(strict)
-BuildRequires: perl(Test::More)
-BuildRequires: perl(Test::Pod) >= 1.2
-BuildRequires: perl(Test::Pod::Coverage) >= 1.06
-BuildRequires: perl(vars)
-BuildRequires: perl(warnings)
-Requires: dmidecode
-Requires: perl(File::Which) >= 0.05
-Requires: perl(Data::Dumper)
-Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
-
-%description
-This module provides an OO interface to SMBIOS information through the
-dmidecode command which is known to work under a number of Linux, BSD and
-BeOS variants.
-
-%prep
-%setup -q -n Parse-DMIDecode-%{version}
-%patch1 -p1
-
-%build
-# a debug package is not required as there are no binaries in this package
-%define debug_package %{nil}
-AUTOMATED_TESTING=1 %{__perl} Build.PL installdirs=vendor
-./Build
-
-%install
-./Build install destdir=$RPM_BUILD_ROOT create_packlist=0
-
-%{_fixperms} $RPM_BUILD_ROOT/*
-
-%check
-./Build test
-
-%files
-%doc Changes LICENSE NOTICE README TODO examples
-%{perl_vendorlib}/*
-%{_mandir}/man3/*
-
-%changelog
-* Thu Jan 30 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.03-21
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
-
-* Fri Jul 26 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.03-20
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
-
-* Fri May 31 2019 Jitka Plesnikova <jplesnik(a)redhat.com> - 0.03-19
-- Perl 5.30 rebuild
-
-* Fri Feb 01 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.03-18
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
-
-* Fri Jul 13 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.03-17
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
-
-* Thu Jun 28 2018 Jitka Plesnikova <jplesnik(a)redhat.com> - 0.03-16
-- Perl 5.28 rebuild
-
-* Fri Mar 02 2018 Petr Pisar <ppisar(a)redhat.com> - 0.03-15
-- Adapt to removing GCC from a build root (bug #1547165)
-
-* Thu Feb 08 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.03-14
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
-
-* Thu Aug 03 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.03-13
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
-
-* Thu Jul 27 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.03-12
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
-
-* Sun Jun 04 2017 Jitka Plesnikova <jplesnik(a)redhat.com> - 0.03-11
-- Perl 5.26 rebuild
-
-* Sat Feb 11 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.03-10
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
-
-* Sun May 15 2016 Jitka Plesnikova <jplesnik(a)redhat.com> - 0.03-9
-- Perl 5.24 rebuild
-
-* Thu Feb 04 2016 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.03-8
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
-
-* Thu Jun 18 2015 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.03-7
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
-
-* Fri Jun 05 2015 Jitka Plesnikova <jplesnik(a)redhat.com> - 0.03-6
-- Perl 5.22 rebuild
-
-* Sat Oct 25 2014 Peter Robinson <pbrobinson(a)fedoraproject.org> 0.03-5
-- dmidecode supported on aarch64
-
-* Wed Aug 27 2014 Jitka Plesnikova <jplesnik(a)redhat.com> - 0.03-4
-- Perl 5.20 rebuild
-
-* Sun Aug 17 2014 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.03-3
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
-
-* Sat Jun 07 2014 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> - 0.03-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
-
-* Wed Apr 23 2014 David Dick <ddick(a)cpan.org> - 0.03-1
-- Initial release
diff --git a/sources b/sources
deleted file mode 100644
index 6a8f183..0000000
--- a/sources
+++ /dev/null
@@ -1 +0,0 @@
-5e709625ee53a9672ac75ed9b2fffd7b Parse-DMIDecode-0.03.tar.gz
4 years, 1 month
Architecture specific change in rpms/gap-pkg-datastructures.git
by githook-noreply@fedoraproject.org
The package rpms/gap-pkg-datastructures.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/gap-pkg-datastructures.git/commit...
https://src.fedoraproject.org/cgit/rpms/gap-pkg-datastructures.git/commit....
Change:
-%ifnarch aarch64
+%ifnarch aarch64
Thanks.
Full change:
============
commit a011aa98517602b70115c12de2fb4a66f923598f
Author: Jerry James <loganjerry(a)gmail.com>
Date: Mon Mar 23 20:59:51 2020 -0600
Drop aarch64 workaround.
diff --git a/gap-pkg-datastructures.spec b/gap-pkg-datastructures.spec
index d388798..8cf2e74 100644
--- a/gap-pkg-datastructures.spec
+++ b/gap-pkg-datastructures.spec
@@ -2,7 +2,7 @@
Name: gap-pkg-%{pkgname}
Version: 0.2.5
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Standard data structures for GAP
License: GPLv2+
@@ -63,12 +63,9 @@ cp -a doc gap tst *.g %{buildroot}%{_gap_dir}/pkg/%{pkgname}-%{version}
rm -f %{buildroot}%{_gap_dir}/pkg/%{pkgname}-%{version}/doc/clean
rm -f %{buildroot}%{_gap_dir}/pkg/%{pkgname}-%{version}/doc/*.{aux,bbl,blg,idx,ilg,ind,log,out,pnr,tex}
-# Work around a possible aarch64-specific gcc bug
-%ifnarch aarch64
%check
export LC_ALL=C.UTF-8
gap -l "%{buildroot}%{_gap_dir};%{_gap_dir}" < tst/testall.g
-%endif
%files
%doc CHANGES.md README.md
@@ -81,6 +78,9 @@ gap -l "%{buildroot}%{_gap_dir};%{_gap_dir}" < tst/testall.g
%{_gap_dir}/pkg/%{pkgname}-%{version}/doc/
%changelog
+* Mon Mar 23 2020 Jerry James <loganjerry(a)gmail.com> - 0.2.5-4
+- Drop aarch64 workaround
+
* Wed Mar 11 2020 Jerry James <loganjerry(a)gmail.com> - 0.2.5-3
- Rebuild for gap 4.11.0
commit 908eb47996380c4d46356084c95c48fc73a7f167
Author: Jerry James <loganjerry(a)gmail.com>
Date: Sat Mar 21 10:21:48 2020 -0600
Disable test suite on aarch64 until failure can be analyzed.
diff --git a/gap-pkg-datastructures.spec b/gap-pkg-datastructures.spec
index 8c51071..d388798 100644
--- a/gap-pkg-datastructures.spec
+++ b/gap-pkg-datastructures.spec
@@ -63,9 +63,12 @@ cp -a doc gap tst *.g %{buildroot}%{_gap_dir}/pkg/%{pkgname}-%{version}
rm -f %{buildroot}%{_gap_dir}/pkg/%{pkgname}-%{version}/doc/clean
rm -f %{buildroot}%{_gap_dir}/pkg/%{pkgname}-%{version}/doc/*.{aux,bbl,blg,idx,ilg,ind,log,out,pnr,tex}
+# Work around a possible aarch64-specific gcc bug
+%ifnarch aarch64
%check
export LC_ALL=C.UTF-8
gap -l "%{buildroot}%{_gap_dir};%{_gap_dir}" < tst/testall.g
+%endif
%files
%doc CHANGES.md README.md
commit 3f321935573e55a67f59ee7866dbec01db1e75b8
Author: Jerry James <loganjerry(a)gmail.com>
Date: Sat Mar 21 10:03:05 2020 -0600
Rebuild for gap 4.11.0.
diff --git a/gap-pkg-datastructures.spec b/gap-pkg-datastructures.spec
index f446f8f..8c51071 100644
--- a/gap-pkg-datastructures.spec
+++ b/gap-pkg-datastructures.spec
@@ -2,7 +2,7 @@
Name: gap-pkg-%{pkgname}
Version: 0.2.5
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Standard data structures for GAP
License: GPLv2+
@@ -11,6 +11,8 @@ Source0: https://github.com/gap-packages/%{pkgname}/releases/download/v%{
BuildRequires: gap-devel
BuildRequires: gap-pkg-autodoc
+BuildRequires: gcc
+BuildRequires: libtool
Requires: gap-core%{?_isa}
@@ -40,6 +42,8 @@ This package contains documentation for gap-pkg-%{pkgname}.
%autosetup -p0 -n %{pkgname}-%{version}
%build
+export LC_ALL=C.UTF-8
+
# This is NOT an autoconf-generated script. Do NOT use %%configure.
./configure %{_gap_dir}
%make_build
@@ -60,6 +64,7 @@ rm -f %{buildroot}%{_gap_dir}/pkg/%{pkgname}-%{version}/doc/clean
rm -f %{buildroot}%{_gap_dir}/pkg/%{pkgname}-%{version}/doc/*.{aux,bbl,blg,idx,ilg,ind,log,out,pnr,tex}
%check
+export LC_ALL=C.UTF-8
gap -l "%{buildroot}%{_gap_dir};%{_gap_dir}" < tst/testall.g
%files
@@ -73,6 +78,9 @@ gap -l "%{buildroot}%{_gap_dir};%{_gap_dir}" < tst/testall.g
%{_gap_dir}/pkg/%{pkgname}-%{version}/doc/
%changelog
+* Wed Mar 11 2020 Jerry James <loganjerry(a)gmail.com> - 0.2.5-3
+- Rebuild for gap 4.11.0
+
* Tue Jan 28 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.2.5-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
4 years, 1 month
Architecture specific change in rpms/kitty.git
by githook-noreply@fedoraproject.org
The package rpms/kitty.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/kitty.git/commit/?id=81e78947f3d2...
https://src.fedoraproject.org/cgit/rpms/kitty.git/commit/?id=4a1520081499....
Change:
+%ifarch armv7hl i686 86_64
-%ifarch armv7hl i686 86_64
Thanks.
Full change:
============
commit 109fab5ebb061dc920de0b2fdd817e978f46f368
Author: Artem Polishchuk <ego.cordatus(a)gmail.com>
Date: Tue Mar 24 16:44:42 2020 +0200
Add link to upstream bug
diff --git a/kitty.spec b/kitty.spec
index 08e1366..0775721 100644
--- a/kitty.spec
+++ b/kitty.spec
@@ -6,6 +6,9 @@ Name: kitty
Version: 0.17.1
Release: 1%{?dist}
Summary: Cross-platform, fast, feature full, GPU based terminal emulator
+
+# 0.17.1 won't compile on ppc64le arch
+# * https://github.com/kovidgoyal/kitty/issues/2471
ExcludeArch: s390x ppc64le
# BSD: docs/_templates/searchbox.html
commit 7d0c409e8455f1e3d55070ceba679f60c1c30a0b
Author: Artem Polishchuk <ego.cordatus(a)gmail.com>
Date: Tue Mar 24 16:38:23 2020 +0200
Update to 0.17.1
diff --git a/.gitignore b/.gitignore
index 6778b5f..ed63750 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@
/kitty-0.15.1.tar.gz
/kitty-0.16.0.tar.gz
/kitty-0.17.0.tar.gz
+/kitty-0.17.1.tar.gz
diff --git a/kitty-make-kitty-build-again.patch b/kitty-make-kitty-build-again.patch
deleted file mode 100644
index a26545e..0000000
--- a/kitty-make-kitty-build-again.patch
+++ /dev/null
@@ -1,1100 +0,0 @@
-From 037111715a78a946f9913bbdecb95d3d377d73b0 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 11:34:29 +0530
-Subject: [PATCH 01/11] ...
-
----
- docs/layouts.rst | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/docs/layouts.rst b/docs/layouts.rst
-index 933db11ad..c6673b724 100644
---- a/docs/layouts.rst
-+++ b/docs/layouts.rst
-@@ -24,7 +24,7 @@ other in arbitrary arrangements, based on *Layouts*, see below for examples:
-
- There are many different layouts available. They are all enabled by default,
- you can switch layouts using :sc:`next_layout`. To control which layouts
--are available use :opt:`enabled_layouts` the first listed layout becomes
-+are available use :opt:`enabled_layouts`, the first listed layout becomes
- the default. Individual layouts and how to use them are described below.
-
- .. contents::
-
-From 33a84a609ccc5f21f487214a06b73848ea009551 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 11:35:34 +0530
-Subject: [PATCH 02/11] ...
-
----
- docs/changelog.rst | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/docs/changelog.rst b/docs/changelog.rst
-index cb1283211..f89a770aa 100644
---- a/docs/changelog.rst
-+++ b/docs/changelog.rst
-@@ -7,7 +7,7 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
- 0.17.0 [2020-03-24]
- --------------------
-
--- A new :ref:`splits_layout` to arrange windows in arbitrary splits
-+- :ref:`splits_layout` to arrange windows in arbitrary splits
- (:iss:`2308`)
-
- - Add support for specifying a background image, see :opt:`background_image`
-
-From c4f7c5c1cd337af14ac4a2c49ff5eeccbaec329f Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 11:58:30 +0530
-Subject: [PATCH 03/11] More explanation for OSC 52 extension
-
----
- docs/protocol-extensions.rst | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/docs/protocol-extensions.rst b/docs/protocol-extensions.rst
-index c91bdfc68..1a9bc0ae6 100644
---- a/docs/protocol-extensions.rst
-+++ b/docs/protocol-extensions.rst
-@@ -219,6 +219,11 @@ first, for example::
- <ESC>]52;c;!<ESC>\
-
- Here ``!`` is not valid base64 encoded text, so it clears the clipboard.
-+Further, since it is invalid, it should be ignored by terminal emulators
-+that do not support this extension, thereby making it safe to use, simply
-+always send it before starting a new OSC 52 paste, even if you aren't chunking
-+up large pastes, that way kitty wont concatenate your paste, and it will have
-+no ill-effects in other terminal emulators.
-
- In case you're using software that can't be easily adapted to this
- protocol extension, it can be disabled by specifying ``no-append`` to the
-
-From 5227b1f98b5353a1a0f4e58ae19335ffa89257e3 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 15:53:13 +0530
-Subject: [PATCH 04/11] Fix :opt:`cursor_underline_thickness` not working
-
-Fixes #2465
----
- docs/changelog.rst | 7 +++++++
- kitty/fonts.c | 2 +-
- 2 files changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/docs/changelog.rst b/docs/changelog.rst
-index f89a770aa..3bd8e3579 100644
---- a/docs/changelog.rst
-+++ b/docs/changelog.rst
-@@ -4,6 +4,13 @@ Changelog
- |kitty| is a feature full, cross-platform, *fast*, GPU based terminal emulator.
- To update |kitty|, :doc:`follow the instructions <binary>`.
-
-+0.17.1 [future]
-+--------------------
-+
-+- Fix :opt:`cursor_underline_thickness` not working (:iss:`2465`)
-+
-+
-+- :ref:`splits_layout` to arrange windows in arbitrary splits
- 0.17.0 [2020-03-24]
- --------------------
-
-diff --git a/kitty/fonts.c b/kitty/fonts.c
-index 54e697665..b045587f5 100644
---- a/kitty/fonts.c
-+++ b/kitty/fonts.c
-@@ -1243,7 +1243,7 @@ send_prerendered_sprites(FontGroup *fg) {
- current_send_sprite_to_gpu((FONTS_DATA_HANDLE)fg, x, y, z, fg->canvas);
- do_increment(fg, &error);
- if (error != 0) { sprite_map_set_error(error); PyErr_Print(); fatal("Failed"); }
-- PyObject *args = PyObject_CallFunction(prerender_function, "IIIIIffdd", fg->cell_width, fg->cell_height, fg->baseline, fg->underline_position, fg->underline_thickness, OPT(cursor_beam_thickness), fg->logical_dpi_x, fg->logical_dpi_y);
-+ PyObject *args = PyObject_CallFunction(prerender_function, "IIIIIffdd", fg->cell_width, fg->cell_height, fg->baseline, fg->underline_position, fg->underline_thickness, OPT(cursor_beam_thickness), OPT(cursor_underline_thickness), fg->logical_dpi_x, fg->logical_dpi_y);
- if (args == NULL) { PyErr_Print(); fatal("Failed to pre-render cells"); }
- for (ssize_t i = 0; i < PyTuple_GET_SIZE(args) - 1; i++) {
- x = fg->sprite_tracker.x; y = fg->sprite_tracker.y; z = fg->sprite_tracker.z;
-
-From 0d87b8fac5168171493cb0d8cef85d60e564c0b0 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 16:05:02 +0530
-Subject: [PATCH 05/11] Fix a regression in 0.17 that caused tab bar background
- to be rendered after the last tab as well
-
-Fixes #2464
----
- docs/changelog.rst | 3 +++
- kitty/tab_bar.py | 5 ++++-
- 2 files changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/docs/changelog.rst b/docs/changelog.rst
-index 3bd8e3579..e5f189f2b 100644
---- a/docs/changelog.rst
-+++ b/docs/changelog.rst
-@@ -9,6 +9,9 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
-
- - Fix :opt:`cursor_underline_thickness` not working (:iss:`2465`)
-
-+- Fix a regression in 0.17 that caused tab bar background to be rendered after
-+ the last tab as well (:iss:`2464`)
-+
-
- - :ref:`splits_layout` to arrange windows in arbitrary splits
- 0.17.0 [2020-03-24]
-diff --git a/kitty/tab_bar.py b/kitty/tab_bar.py
-index 1b111eaa0..3d97741b9 100644
---- a/kitty/tab_bar.py
-+++ b/kitty/tab_bar.py
-@@ -66,6 +66,8 @@ def draw_title(draw_data: DrawData, screen: Screen, tab: TabBarData, index: int)
-
-
- def draw_tab_with_separator(draw_data: DrawData, screen: Screen, tab: TabBarData, before: int, max_title_length: int, index: int, is_last: bool) -> int:
-+ tab_bg = draw_data.active_bg if tab.is_active else draw_data.inactive_bg
-+ screen.cursor.bg = as_rgb(color_as_int(tab_bg))
- if draw_data.leading_spaces:
- screen.draw(' ' * draw_data.leading_spaces)
- draw_title(draw_data, screen, tab, index)
-@@ -138,6 +140,7 @@ def draw_tab_with_powerline(draw_data: DrawData, screen: Screen, tab: TabBarData
- screen.draw(' ')
- start_draw = 1
-
-+ screen.cursor.bg = tab_bg
- if min_title_length >= max_title_length:
- screen.draw('')
- else:
-@@ -179,7 +182,7 @@ def __init__(self, os_window_id: int, opts: Options):
- s.color_profile.update_ansi_color_table(build_ansi_color_table(opts))
- s.color_profile.set_configured_colors(
- color_as_int(opts.inactive_tab_foreground),
-- color_as_int(opts.inactive_tab_background)
-+ color_as_int(opts.background)
- )
- self.blank_rects: Tuple[Rect, ...] = ()
- sep = opts.tab_separator
-
-From b0b8222a9672bd3865d0b42f9005e797cabd570c Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 17:04:17 +0530
-Subject: [PATCH 06/11] ...
-
----
- docs/changelog.rst | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/docs/changelog.rst b/docs/changelog.rst
-index e5f189f2b..e9e137b43 100644
---- a/docs/changelog.rst
-+++ b/docs/changelog.rst
-@@ -13,7 +13,6 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
- the last tab as well (:iss:`2464`)
-
-
--- :ref:`splits_layout` to arrange windows in arbitrary splits
- 0.17.0 [2020-03-24]
- --------------------
-
-
-From 76a6bba64310024c2780ff26e5bbcd3f8b520b38 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 17:07:37 +0530
-Subject: [PATCH 07/11] Fix #2466
-
----
- glfw/glfw.py | 6 +-
- kitty/glfw-wrapper.c | 1 +
- kitty/glfw-wrapper.h | 275 ++++++++++++++++++++++---------------------
- 3 files changed, 145 insertions(+), 137 deletions(-)
-
-diff --git a/glfw/glfw.py b/glfw/glfw.py
-index 77e2dee68..41c36daaa 100755
---- a/glfw/glfw.py
-+++ b/glfw/glfw.py
-@@ -165,7 +165,7 @@ def __init__(self, declaration: str, check_fail: bool = True):
- self.args = [Arg('void v')]
-
- def declaration(self) -> str:
-- return 'typedef {restype} (*{name}_func)({args});\n{name}_func {name}_impl;\n#define {name} {name}_impl'.format(
-+ return 'typedef {restype} (*{name}_func)({args});\nGFW_EXTERN {name}_func {name}_impl;\n#define {name} {name}_impl'.format(
- restype=self.restype,
- name=self.name,
- args=', '.join(a.type for a in self.args)
-@@ -233,6 +233,9 @@ def generate_wrappers(glfw_header: str) -> None:
- #include <stdint.h>
- #include "monotonic.h"
-
-+#ifndef GFW_EXTERN
-+#define GFW_EXTERN extern
-+#endif
- {}
-
- typedef int (* GLFWcocoatextinputfilterfun)(int,int,unsigned int,unsigned long);
-@@ -251,6 +254,7 @@ def generate_wrappers(glfw_header: str) -> None:
- f.write(header)
-
- code = '''
-+#define GFW_EXTERN
- #include "data-types.h"
- #include "glfw-wrapper.h"
- #include <dlfcn.h>
-diff --git a/kitty/glfw-wrapper.c b/kitty/glfw-wrapper.c
-index 1159529bf..3833977ee 100644
---- a/kitty/glfw-wrapper.c
-+++ b/kitty/glfw-wrapper.c
-@@ -1,4 +1,5 @@
-
-+#define GFW_EXTERN
- #include "data-types.h"
- #include "glfw-wrapper.h"
- #include <dlfcn.h>
-diff --git a/kitty/glfw-wrapper.h b/kitty/glfw-wrapper.h
-index ac4629f3a..b7a816761 100644
---- a/kitty/glfw-wrapper.h
-+++ b/kitty/glfw-wrapper.h
-@@ -9,6 +9,9 @@
- #include <stdint.h>
- #include "monotonic.h"
-
-+#ifndef GFW_EXTERN
-+#define GFW_EXTERN extern
-+#endif
-
-
- /*! @name GLFW version macros
-@@ -1587,547 +1590,547 @@ typedef void (*GLFWwaylandframecallbackfunc)(unsigned long long id);
- typedef void (*GLFWDBusnotificationcreatedfun)(unsigned long long, uint32_t, void*);
- typedef void (*GLFWDBusnotificationactivatedfun)(uint32_t, const char*);
- typedef int (*glfwInit_func)(monotonic_t);
--glfwInit_func glfwInit_impl;
-+GFW_EXTERN glfwInit_func glfwInit_impl;
- #define glfwInit glfwInit_impl
-
- typedef void (*glfwRunMainLoop_func)(GLFWtickcallback, void*);
--glfwRunMainLoop_func glfwRunMainLoop_impl;
-+GFW_EXTERN glfwRunMainLoop_func glfwRunMainLoop_impl;
- #define glfwRunMainLoop glfwRunMainLoop_impl
-
- typedef void (*glfwStopMainLoop_func)(void);
--glfwStopMainLoop_func glfwStopMainLoop_impl;
-+GFW_EXTERN glfwStopMainLoop_func glfwStopMainLoop_impl;
- #define glfwStopMainLoop glfwStopMainLoop_impl
-
- typedef unsigned long long (*glfwAddTimer_func)(monotonic_t, bool, GLFWuserdatafun, void *, GLFWuserdatafun);
--glfwAddTimer_func glfwAddTimer_impl;
-+GFW_EXTERN glfwAddTimer_func glfwAddTimer_impl;
- #define glfwAddTimer glfwAddTimer_impl
-
- typedef void (*glfwUpdateTimer_func)(unsigned long long, monotonic_t, bool);
--glfwUpdateTimer_func glfwUpdateTimer_impl;
-+GFW_EXTERN glfwUpdateTimer_func glfwUpdateTimer_impl;
- #define glfwUpdateTimer glfwUpdateTimer_impl
-
- typedef void (*glfwRemoveTimer_func)(unsigned long);
--glfwRemoveTimer_func glfwRemoveTimer_impl;
-+GFW_EXTERN glfwRemoveTimer_func glfwRemoveTimer_impl;
- #define glfwRemoveTimer glfwRemoveTimer_impl
-
- typedef void (*glfwTerminate_func)(void);
--glfwTerminate_func glfwTerminate_impl;
-+GFW_EXTERN glfwTerminate_func glfwTerminate_impl;
- #define glfwTerminate glfwTerminate_impl
-
- typedef void (*glfwInitHint_func)(int, int);
--glfwInitHint_func glfwInitHint_impl;
-+GFW_EXTERN glfwInitHint_func glfwInitHint_impl;
- #define glfwInitHint glfwInitHint_impl
-
- typedef void (*glfwGetVersion_func)(int*, int*, int*);
--glfwGetVersion_func glfwGetVersion_impl;
-+GFW_EXTERN glfwGetVersion_func glfwGetVersion_impl;
- #define glfwGetVersion glfwGetVersion_impl
-
- typedef const char* (*glfwGetVersionString_func)(void);
--glfwGetVersionString_func glfwGetVersionString_impl;
-+GFW_EXTERN glfwGetVersionString_func glfwGetVersionString_impl;
- #define glfwGetVersionString glfwGetVersionString_impl
-
- typedef int (*glfwGetError_func)(const char**);
--glfwGetError_func glfwGetError_impl;
-+GFW_EXTERN glfwGetError_func glfwGetError_impl;
- #define glfwGetError glfwGetError_impl
-
- typedef GLFWerrorfun (*glfwSetErrorCallback_func)(GLFWerrorfun);
--glfwSetErrorCallback_func glfwSetErrorCallback_impl;
-+GFW_EXTERN glfwSetErrorCallback_func glfwSetErrorCallback_impl;
- #define glfwSetErrorCallback glfwSetErrorCallback_impl
-
- typedef GLFWmonitor** (*glfwGetMonitors_func)(int*);
--glfwGetMonitors_func glfwGetMonitors_impl;
-+GFW_EXTERN glfwGetMonitors_func glfwGetMonitors_impl;
- #define glfwGetMonitors glfwGetMonitors_impl
-
- typedef GLFWmonitor* (*glfwGetPrimaryMonitor_func)(void);
--glfwGetPrimaryMonitor_func glfwGetPrimaryMonitor_impl;
-+GFW_EXTERN glfwGetPrimaryMonitor_func glfwGetPrimaryMonitor_impl;
- #define glfwGetPrimaryMonitor glfwGetPrimaryMonitor_impl
-
- typedef void (*glfwGetMonitorPos_func)(GLFWmonitor*, int*, int*);
--glfwGetMonitorPos_func glfwGetMonitorPos_impl;
-+GFW_EXTERN glfwGetMonitorPos_func glfwGetMonitorPos_impl;
- #define glfwGetMonitorPos glfwGetMonitorPos_impl
-
- typedef void (*glfwGetMonitorWorkarea_func)(GLFWmonitor*, int*, int*, int*, int*);
--glfwGetMonitorWorkarea_func glfwGetMonitorWorkarea_impl;
-+GFW_EXTERN glfwGetMonitorWorkarea_func glfwGetMonitorWorkarea_impl;
- #define glfwGetMonitorWorkarea glfwGetMonitorWorkarea_impl
-
- typedef void (*glfwGetMonitorPhysicalSize_func)(GLFWmonitor*, int*, int*);
--glfwGetMonitorPhysicalSize_func glfwGetMonitorPhysicalSize_impl;
-+GFW_EXTERN glfwGetMonitorPhysicalSize_func glfwGetMonitorPhysicalSize_impl;
- #define glfwGetMonitorPhysicalSize glfwGetMonitorPhysicalSize_impl
-
- typedef void (*glfwGetMonitorContentScale_func)(GLFWmonitor*, float*, float*);
--glfwGetMonitorContentScale_func glfwGetMonitorContentScale_impl;
-+GFW_EXTERN glfwGetMonitorContentScale_func glfwGetMonitorContentScale_impl;
- #define glfwGetMonitorContentScale glfwGetMonitorContentScale_impl
-
- typedef const char* (*glfwGetMonitorName_func)(GLFWmonitor*);
--glfwGetMonitorName_func glfwGetMonitorName_impl;
-+GFW_EXTERN glfwGetMonitorName_func glfwGetMonitorName_impl;
- #define glfwGetMonitorName glfwGetMonitorName_impl
-
- typedef void (*glfwSetMonitorUserPointer_func)(GLFWmonitor*, void*);
--glfwSetMonitorUserPointer_func glfwSetMonitorUserPointer_impl;
-+GFW_EXTERN glfwSetMonitorUserPointer_func glfwSetMonitorUserPointer_impl;
- #define glfwSetMonitorUserPointer glfwSetMonitorUserPointer_impl
-
- typedef void* (*glfwGetMonitorUserPointer_func)(GLFWmonitor*);
--glfwGetMonitorUserPointer_func glfwGetMonitorUserPointer_impl;
-+GFW_EXTERN glfwGetMonitorUserPointer_func glfwGetMonitorUserPointer_impl;
- #define glfwGetMonitorUserPointer glfwGetMonitorUserPointer_impl
-
- typedef GLFWmonitorfun (*glfwSetMonitorCallback_func)(GLFWmonitorfun);
--glfwSetMonitorCallback_func glfwSetMonitorCallback_impl;
-+GFW_EXTERN glfwSetMonitorCallback_func glfwSetMonitorCallback_impl;
- #define glfwSetMonitorCallback glfwSetMonitorCallback_impl
-
- typedef const GLFWvidmode* (*glfwGetVideoModes_func)(GLFWmonitor*, int*);
--glfwGetVideoModes_func glfwGetVideoModes_impl;
-+GFW_EXTERN glfwGetVideoModes_func glfwGetVideoModes_impl;
- #define glfwGetVideoModes glfwGetVideoModes_impl
-
- typedef const GLFWvidmode* (*glfwGetVideoMode_func)(GLFWmonitor*);
--glfwGetVideoMode_func glfwGetVideoMode_impl;
-+GFW_EXTERN glfwGetVideoMode_func glfwGetVideoMode_impl;
- #define glfwGetVideoMode glfwGetVideoMode_impl
-
- typedef void (*glfwSetGamma_func)(GLFWmonitor*, float);
--glfwSetGamma_func glfwSetGamma_impl;
-+GFW_EXTERN glfwSetGamma_func glfwSetGamma_impl;
- #define glfwSetGamma glfwSetGamma_impl
-
- typedef const GLFWgammaramp* (*glfwGetGammaRamp_func)(GLFWmonitor*);
--glfwGetGammaRamp_func glfwGetGammaRamp_impl;
-+GFW_EXTERN glfwGetGammaRamp_func glfwGetGammaRamp_impl;
- #define glfwGetGammaRamp glfwGetGammaRamp_impl
-
- typedef void (*glfwSetGammaRamp_func)(GLFWmonitor*, const GLFWgammaramp*);
--glfwSetGammaRamp_func glfwSetGammaRamp_impl;
-+GFW_EXTERN glfwSetGammaRamp_func glfwSetGammaRamp_impl;
- #define glfwSetGammaRamp glfwSetGammaRamp_impl
-
- typedef void (*glfwDefaultWindowHints_func)(void);
--glfwDefaultWindowHints_func glfwDefaultWindowHints_impl;
-+GFW_EXTERN glfwDefaultWindowHints_func glfwDefaultWindowHints_impl;
- #define glfwDefaultWindowHints glfwDefaultWindowHints_impl
-
- typedef void (*glfwWindowHint_func)(int, int);
--glfwWindowHint_func glfwWindowHint_impl;
-+GFW_EXTERN glfwWindowHint_func glfwWindowHint_impl;
- #define glfwWindowHint glfwWindowHint_impl
-
- typedef void (*glfwWindowHintString_func)(int, const char*);
--glfwWindowHintString_func glfwWindowHintString_impl;
-+GFW_EXTERN glfwWindowHintString_func glfwWindowHintString_impl;
- #define glfwWindowHintString glfwWindowHintString_impl
-
- typedef GLFWwindow* (*glfwCreateWindow_func)(int, int, const char*, GLFWmonitor*, GLFWwindow*);
--glfwCreateWindow_func glfwCreateWindow_impl;
-+GFW_EXTERN glfwCreateWindow_func glfwCreateWindow_impl;
- #define glfwCreateWindow glfwCreateWindow_impl
-
- typedef bool (*glfwToggleFullscreen_func)(GLFWwindow*, unsigned int);
--glfwToggleFullscreen_func glfwToggleFullscreen_impl;
-+GFW_EXTERN glfwToggleFullscreen_func glfwToggleFullscreen_impl;
- #define glfwToggleFullscreen glfwToggleFullscreen_impl
-
- typedef void (*glfwDestroyWindow_func)(GLFWwindow*);
--glfwDestroyWindow_func glfwDestroyWindow_impl;
-+GFW_EXTERN glfwDestroyWindow_func glfwDestroyWindow_impl;
- #define glfwDestroyWindow glfwDestroyWindow_impl
-
- typedef int (*glfwWindowShouldClose_func)(GLFWwindow*);
--glfwWindowShouldClose_func glfwWindowShouldClose_impl;
-+GFW_EXTERN glfwWindowShouldClose_func glfwWindowShouldClose_impl;
- #define glfwWindowShouldClose glfwWindowShouldClose_impl
-
- typedef void (*glfwSetWindowShouldClose_func)(GLFWwindow*, int);
--glfwSetWindowShouldClose_func glfwSetWindowShouldClose_impl;
-+GFW_EXTERN glfwSetWindowShouldClose_func glfwSetWindowShouldClose_impl;
- #define glfwSetWindowShouldClose glfwSetWindowShouldClose_impl
-
- typedef void (*glfwSetWindowTitle_func)(GLFWwindow*, const char*);
--glfwSetWindowTitle_func glfwSetWindowTitle_impl;
-+GFW_EXTERN glfwSetWindowTitle_func glfwSetWindowTitle_impl;
- #define glfwSetWindowTitle glfwSetWindowTitle_impl
-
- typedef void (*glfwSetWindowIcon_func)(GLFWwindow*, int, const GLFWimage*);
--glfwSetWindowIcon_func glfwSetWindowIcon_impl;
-+GFW_EXTERN glfwSetWindowIcon_func glfwSetWindowIcon_impl;
- #define glfwSetWindowIcon glfwSetWindowIcon_impl
-
- typedef void (*glfwGetWindowPos_func)(GLFWwindow*, int*, int*);
--glfwGetWindowPos_func glfwGetWindowPos_impl;
-+GFW_EXTERN glfwGetWindowPos_func glfwGetWindowPos_impl;
- #define glfwGetWindowPos glfwGetWindowPos_impl
-
- typedef void (*glfwSetWindowPos_func)(GLFWwindow*, int, int);
--glfwSetWindowPos_func glfwSetWindowPos_impl;
-+GFW_EXTERN glfwSetWindowPos_func glfwSetWindowPos_impl;
- #define glfwSetWindowPos glfwSetWindowPos_impl
-
- typedef void (*glfwGetWindowSize_func)(GLFWwindow*, int*, int*);
--glfwGetWindowSize_func glfwGetWindowSize_impl;
-+GFW_EXTERN glfwGetWindowSize_func glfwGetWindowSize_impl;
- #define glfwGetWindowSize glfwGetWindowSize_impl
-
- typedef void (*glfwSetWindowSizeLimits_func)(GLFWwindow*, int, int, int, int);
--glfwSetWindowSizeLimits_func glfwSetWindowSizeLimits_impl;
-+GFW_EXTERN glfwSetWindowSizeLimits_func glfwSetWindowSizeLimits_impl;
- #define glfwSetWindowSizeLimits glfwSetWindowSizeLimits_impl
-
- typedef void (*glfwSetWindowSizeIncrements_func)(GLFWwindow*, int, int);
--glfwSetWindowSizeIncrements_func glfwSetWindowSizeIncrements_impl;
-+GFW_EXTERN glfwSetWindowSizeIncrements_func glfwSetWindowSizeIncrements_impl;
- #define glfwSetWindowSizeIncrements glfwSetWindowSizeIncrements_impl
-
- typedef void (*glfwSetWindowAspectRatio_func)(GLFWwindow*, int, int);
--glfwSetWindowAspectRatio_func glfwSetWindowAspectRatio_impl;
-+GFW_EXTERN glfwSetWindowAspectRatio_func glfwSetWindowAspectRatio_impl;
- #define glfwSetWindowAspectRatio glfwSetWindowAspectRatio_impl
-
- typedef void (*glfwSetWindowSize_func)(GLFWwindow*, int, int);
--glfwSetWindowSize_func glfwSetWindowSize_impl;
-+GFW_EXTERN glfwSetWindowSize_func glfwSetWindowSize_impl;
- #define glfwSetWindowSize glfwSetWindowSize_impl
-
- typedef void (*glfwGetFramebufferSize_func)(GLFWwindow*, int*, int*);
--glfwGetFramebufferSize_func glfwGetFramebufferSize_impl;
-+GFW_EXTERN glfwGetFramebufferSize_func glfwGetFramebufferSize_impl;
- #define glfwGetFramebufferSize glfwGetFramebufferSize_impl
-
- typedef void (*glfwGetWindowFrameSize_func)(GLFWwindow*, int*, int*, int*, int*);
--glfwGetWindowFrameSize_func glfwGetWindowFrameSize_impl;
-+GFW_EXTERN glfwGetWindowFrameSize_func glfwGetWindowFrameSize_impl;
- #define glfwGetWindowFrameSize glfwGetWindowFrameSize_impl
-
- typedef void (*glfwGetWindowContentScale_func)(GLFWwindow*, float*, float*);
--glfwGetWindowContentScale_func glfwGetWindowContentScale_impl;
-+GFW_EXTERN glfwGetWindowContentScale_func glfwGetWindowContentScale_impl;
- #define glfwGetWindowContentScale glfwGetWindowContentScale_impl
-
- typedef monotonic_t (*glfwGetDoubleClickInterval_func)(GLFWwindow*);
--glfwGetDoubleClickInterval_func glfwGetDoubleClickInterval_impl;
-+GFW_EXTERN glfwGetDoubleClickInterval_func glfwGetDoubleClickInterval_impl;
- #define glfwGetDoubleClickInterval glfwGetDoubleClickInterval_impl
-
- typedef float (*glfwGetWindowOpacity_func)(GLFWwindow*);
--glfwGetWindowOpacity_func glfwGetWindowOpacity_impl;
-+GFW_EXTERN glfwGetWindowOpacity_func glfwGetWindowOpacity_impl;
- #define glfwGetWindowOpacity glfwGetWindowOpacity_impl
-
- typedef void (*glfwSetWindowOpacity_func)(GLFWwindow*, float);
--glfwSetWindowOpacity_func glfwSetWindowOpacity_impl;
-+GFW_EXTERN glfwSetWindowOpacity_func glfwSetWindowOpacity_impl;
- #define glfwSetWindowOpacity glfwSetWindowOpacity_impl
-
- typedef void (*glfwIconifyWindow_func)(GLFWwindow*);
--glfwIconifyWindow_func glfwIconifyWindow_impl;
-+GFW_EXTERN glfwIconifyWindow_func glfwIconifyWindow_impl;
- #define glfwIconifyWindow glfwIconifyWindow_impl
-
- typedef void (*glfwRestoreWindow_func)(GLFWwindow*);
--glfwRestoreWindow_func glfwRestoreWindow_impl;
-+GFW_EXTERN glfwRestoreWindow_func glfwRestoreWindow_impl;
- #define glfwRestoreWindow glfwRestoreWindow_impl
-
- typedef void (*glfwMaximizeWindow_func)(GLFWwindow*);
--glfwMaximizeWindow_func glfwMaximizeWindow_impl;
-+GFW_EXTERN glfwMaximizeWindow_func glfwMaximizeWindow_impl;
- #define glfwMaximizeWindow glfwMaximizeWindow_impl
-
- typedef void (*glfwShowWindow_func)(GLFWwindow*);
--glfwShowWindow_func glfwShowWindow_impl;
-+GFW_EXTERN glfwShowWindow_func glfwShowWindow_impl;
- #define glfwShowWindow glfwShowWindow_impl
-
- typedef void (*glfwHideWindow_func)(GLFWwindow*);
--glfwHideWindow_func glfwHideWindow_impl;
-+GFW_EXTERN glfwHideWindow_func glfwHideWindow_impl;
- #define glfwHideWindow glfwHideWindow_impl
-
- typedef void (*glfwFocusWindow_func)(GLFWwindow*);
--glfwFocusWindow_func glfwFocusWindow_impl;
-+GFW_EXTERN glfwFocusWindow_func glfwFocusWindow_impl;
- #define glfwFocusWindow glfwFocusWindow_impl
-
- typedef void (*glfwRequestWindowAttention_func)(GLFWwindow*);
--glfwRequestWindowAttention_func glfwRequestWindowAttention_impl;
-+GFW_EXTERN glfwRequestWindowAttention_func glfwRequestWindowAttention_impl;
- #define glfwRequestWindowAttention glfwRequestWindowAttention_impl
-
- typedef int (*glfwWindowBell_func)(GLFWwindow*);
--glfwWindowBell_func glfwWindowBell_impl;
-+GFW_EXTERN glfwWindowBell_func glfwWindowBell_impl;
- #define glfwWindowBell glfwWindowBell_impl
-
- typedef GLFWmonitor* (*glfwGetWindowMonitor_func)(GLFWwindow*);
--glfwGetWindowMonitor_func glfwGetWindowMonitor_impl;
-+GFW_EXTERN glfwGetWindowMonitor_func glfwGetWindowMonitor_impl;
- #define glfwGetWindowMonitor glfwGetWindowMonitor_impl
-
- typedef void (*glfwSetWindowMonitor_func)(GLFWwindow*, GLFWmonitor*, int, int, int, int, int);
--glfwSetWindowMonitor_func glfwSetWindowMonitor_impl;
-+GFW_EXTERN glfwSetWindowMonitor_func glfwSetWindowMonitor_impl;
- #define glfwSetWindowMonitor glfwSetWindowMonitor_impl
-
- typedef int (*glfwGetWindowAttrib_func)(GLFWwindow*, int);
--glfwGetWindowAttrib_func glfwGetWindowAttrib_impl;
-+GFW_EXTERN glfwGetWindowAttrib_func glfwGetWindowAttrib_impl;
- #define glfwGetWindowAttrib glfwGetWindowAttrib_impl
-
- typedef void (*glfwSetWindowAttrib_func)(GLFWwindow*, int, int);
--glfwSetWindowAttrib_func glfwSetWindowAttrib_impl;
-+GFW_EXTERN glfwSetWindowAttrib_func glfwSetWindowAttrib_impl;
- #define glfwSetWindowAttrib glfwSetWindowAttrib_impl
-
- typedef void (*glfwSetWindowUserPointer_func)(GLFWwindow*, void*);
--glfwSetWindowUserPointer_func glfwSetWindowUserPointer_impl;
-+GFW_EXTERN glfwSetWindowUserPointer_func glfwSetWindowUserPointer_impl;
- #define glfwSetWindowUserPointer glfwSetWindowUserPointer_impl
-
- typedef void* (*glfwGetWindowUserPointer_func)(GLFWwindow*);
--glfwGetWindowUserPointer_func glfwGetWindowUserPointer_impl;
-+GFW_EXTERN glfwGetWindowUserPointer_func glfwGetWindowUserPointer_impl;
- #define glfwGetWindowUserPointer glfwGetWindowUserPointer_impl
-
- typedef GLFWwindowposfun (*glfwSetWindowPosCallback_func)(GLFWwindow*, GLFWwindowposfun);
--glfwSetWindowPosCallback_func glfwSetWindowPosCallback_impl;
-+GFW_EXTERN glfwSetWindowPosCallback_func glfwSetWindowPosCallback_impl;
- #define glfwSetWindowPosCallback glfwSetWindowPosCallback_impl
-
- typedef GLFWwindowsizefun (*glfwSetWindowSizeCallback_func)(GLFWwindow*, GLFWwindowsizefun);
--glfwSetWindowSizeCallback_func glfwSetWindowSizeCallback_impl;
-+GFW_EXTERN glfwSetWindowSizeCallback_func glfwSetWindowSizeCallback_impl;
- #define glfwSetWindowSizeCallback glfwSetWindowSizeCallback_impl
-
- typedef GLFWwindowclosefun (*glfwSetWindowCloseCallback_func)(GLFWwindow*, GLFWwindowclosefun);
--glfwSetWindowCloseCallback_func glfwSetWindowCloseCallback_impl;
-+GFW_EXTERN glfwSetWindowCloseCallback_func glfwSetWindowCloseCallback_impl;
- #define glfwSetWindowCloseCallback glfwSetWindowCloseCallback_impl
-
- typedef GLFWwindowrefreshfun (*glfwSetWindowRefreshCallback_func)(GLFWwindow*, GLFWwindowrefreshfun);
--glfwSetWindowRefreshCallback_func glfwSetWindowRefreshCallback_impl;
-+GFW_EXTERN glfwSetWindowRefreshCallback_func glfwSetWindowRefreshCallback_impl;
- #define glfwSetWindowRefreshCallback glfwSetWindowRefreshCallback_impl
-
- typedef GLFWwindowfocusfun (*glfwSetWindowFocusCallback_func)(GLFWwindow*, GLFWwindowfocusfun);
--glfwSetWindowFocusCallback_func glfwSetWindowFocusCallback_impl;
-+GFW_EXTERN glfwSetWindowFocusCallback_func glfwSetWindowFocusCallback_impl;
- #define glfwSetWindowFocusCallback glfwSetWindowFocusCallback_impl
-
- typedef GLFWwindowocclusionfun (*glfwSetWindowOcclusionCallback_func)(GLFWwindow*, GLFWwindowocclusionfun);
--glfwSetWindowOcclusionCallback_func glfwSetWindowOcclusionCallback_impl;
-+GFW_EXTERN glfwSetWindowOcclusionCallback_func glfwSetWindowOcclusionCallback_impl;
- #define glfwSetWindowOcclusionCallback glfwSetWindowOcclusionCallback_impl
-
- typedef GLFWwindowiconifyfun (*glfwSetWindowIconifyCallback_func)(GLFWwindow*, GLFWwindowiconifyfun);
--glfwSetWindowIconifyCallback_func glfwSetWindowIconifyCallback_impl;
-+GFW_EXTERN glfwSetWindowIconifyCallback_func glfwSetWindowIconifyCallback_impl;
- #define glfwSetWindowIconifyCallback glfwSetWindowIconifyCallback_impl
-
- typedef GLFWwindowmaximizefun (*glfwSetWindowMaximizeCallback_func)(GLFWwindow*, GLFWwindowmaximizefun);
--glfwSetWindowMaximizeCallback_func glfwSetWindowMaximizeCallback_impl;
-+GFW_EXTERN glfwSetWindowMaximizeCallback_func glfwSetWindowMaximizeCallback_impl;
- #define glfwSetWindowMaximizeCallback glfwSetWindowMaximizeCallback_impl
-
- typedef GLFWframebuffersizefun (*glfwSetFramebufferSizeCallback_func)(GLFWwindow*, GLFWframebuffersizefun);
--glfwSetFramebufferSizeCallback_func glfwSetFramebufferSizeCallback_impl;
-+GFW_EXTERN glfwSetFramebufferSizeCallback_func glfwSetFramebufferSizeCallback_impl;
- #define glfwSetFramebufferSizeCallback glfwSetFramebufferSizeCallback_impl
-
- typedef GLFWwindowcontentscalefun (*glfwSetWindowContentScaleCallback_func)(GLFWwindow*, GLFWwindowcontentscalefun);
--glfwSetWindowContentScaleCallback_func glfwSetWindowContentScaleCallback_impl;
-+GFW_EXTERN glfwSetWindowContentScaleCallback_func glfwSetWindowContentScaleCallback_impl;
- #define glfwSetWindowContentScaleCallback glfwSetWindowContentScaleCallback_impl
-
- typedef void (*glfwPostEmptyEvent_func)(void);
--glfwPostEmptyEvent_func glfwPostEmptyEvent_impl;
-+GFW_EXTERN glfwPostEmptyEvent_func glfwPostEmptyEvent_impl;
- #define glfwPostEmptyEvent glfwPostEmptyEvent_impl
-
- typedef int (*glfwGetInputMode_func)(GLFWwindow*, int);
--glfwGetInputMode_func glfwGetInputMode_impl;
-+GFW_EXTERN glfwGetInputMode_func glfwGetInputMode_impl;
- #define glfwGetInputMode glfwGetInputMode_impl
-
- typedef void (*glfwSetInputMode_func)(GLFWwindow*, int, int);
--glfwSetInputMode_func glfwSetInputMode_impl;
-+GFW_EXTERN glfwSetInputMode_func glfwSetInputMode_impl;
- #define glfwSetInputMode glfwSetInputMode_impl
-
- typedef const char* (*glfwGetKeyName_func)(int, int);
--glfwGetKeyName_func glfwGetKeyName_impl;
-+GFW_EXTERN glfwGetKeyName_func glfwGetKeyName_impl;
- #define glfwGetKeyName glfwGetKeyName_impl
-
- typedef int (*glfwGetNativeKeyForKey_func)(int);
--glfwGetNativeKeyForKey_func glfwGetNativeKeyForKey_impl;
-+GFW_EXTERN glfwGetNativeKeyForKey_func glfwGetNativeKeyForKey_impl;
- #define glfwGetNativeKeyForKey glfwGetNativeKeyForKey_impl
-
- typedef int (*glfwGetKey_func)(GLFWwindow*, int);
--glfwGetKey_func glfwGetKey_impl;
-+GFW_EXTERN glfwGetKey_func glfwGetKey_impl;
- #define glfwGetKey glfwGetKey_impl
-
- typedef int (*glfwGetMouseButton_func)(GLFWwindow*, int);
--glfwGetMouseButton_func glfwGetMouseButton_impl;
-+GFW_EXTERN glfwGetMouseButton_func glfwGetMouseButton_impl;
- #define glfwGetMouseButton glfwGetMouseButton_impl
-
- typedef void (*glfwGetCursorPos_func)(GLFWwindow*, double*, double*);
--glfwGetCursorPos_func glfwGetCursorPos_impl;
-+GFW_EXTERN glfwGetCursorPos_func glfwGetCursorPos_impl;
- #define glfwGetCursorPos glfwGetCursorPos_impl
-
- typedef void (*glfwSetCursorPos_func)(GLFWwindow*, double, double);
--glfwSetCursorPos_func glfwSetCursorPos_impl;
-+GFW_EXTERN glfwSetCursorPos_func glfwSetCursorPos_impl;
- #define glfwSetCursorPos glfwSetCursorPos_impl
-
- typedef GLFWcursor* (*glfwCreateCursor_func)(const GLFWimage*, int, int, int);
--glfwCreateCursor_func glfwCreateCursor_impl;
-+GFW_EXTERN glfwCreateCursor_func glfwCreateCursor_impl;
- #define glfwCreateCursor glfwCreateCursor_impl
-
- typedef GLFWcursor* (*glfwCreateStandardCursor_func)(GLFWCursorShape);
--glfwCreateStandardCursor_func glfwCreateStandardCursor_impl;
-+GFW_EXTERN glfwCreateStandardCursor_func glfwCreateStandardCursor_impl;
- #define glfwCreateStandardCursor glfwCreateStandardCursor_impl
-
- typedef void (*glfwDestroyCursor_func)(GLFWcursor*);
--glfwDestroyCursor_func glfwDestroyCursor_impl;
-+GFW_EXTERN glfwDestroyCursor_func glfwDestroyCursor_impl;
- #define glfwDestroyCursor glfwDestroyCursor_impl
-
- typedef void (*glfwSetCursor_func)(GLFWwindow*, GLFWcursor*);
--glfwSetCursor_func glfwSetCursor_impl;
-+GFW_EXTERN glfwSetCursor_func glfwSetCursor_impl;
- #define glfwSetCursor glfwSetCursor_impl
-
- typedef GLFWkeyboardfun (*glfwSetKeyboardCallback_func)(GLFWwindow*, GLFWkeyboardfun);
--glfwSetKeyboardCallback_func glfwSetKeyboardCallback_impl;
-+GFW_EXTERN glfwSetKeyboardCallback_func glfwSetKeyboardCallback_impl;
- #define glfwSetKeyboardCallback glfwSetKeyboardCallback_impl
-
- typedef void (*glfwUpdateIMEState_func)(GLFWwindow*, int, int, int, int, int);
--glfwUpdateIMEState_func glfwUpdateIMEState_impl;
-+GFW_EXTERN glfwUpdateIMEState_func glfwUpdateIMEState_impl;
- #define glfwUpdateIMEState glfwUpdateIMEState_impl
-
- typedef GLFWmousebuttonfun (*glfwSetMouseButtonCallback_func)(GLFWwindow*, GLFWmousebuttonfun);
--glfwSetMouseButtonCallback_func glfwSetMouseButtonCallback_impl;
-+GFW_EXTERN glfwSetMouseButtonCallback_func glfwSetMouseButtonCallback_impl;
- #define glfwSetMouseButtonCallback glfwSetMouseButtonCallback_impl
-
- typedef GLFWcursorposfun (*glfwSetCursorPosCallback_func)(GLFWwindow*, GLFWcursorposfun);
--glfwSetCursorPosCallback_func glfwSetCursorPosCallback_impl;
-+GFW_EXTERN glfwSetCursorPosCallback_func glfwSetCursorPosCallback_impl;
- #define glfwSetCursorPosCallback glfwSetCursorPosCallback_impl
-
- typedef GLFWcursorenterfun (*glfwSetCursorEnterCallback_func)(GLFWwindow*, GLFWcursorenterfun);
--glfwSetCursorEnterCallback_func glfwSetCursorEnterCallback_impl;
-+GFW_EXTERN glfwSetCursorEnterCallback_func glfwSetCursorEnterCallback_impl;
- #define glfwSetCursorEnterCallback glfwSetCursorEnterCallback_impl
-
- typedef GLFWscrollfun (*glfwSetScrollCallback_func)(GLFWwindow*, GLFWscrollfun);
--glfwSetScrollCallback_func glfwSetScrollCallback_impl;
-+GFW_EXTERN glfwSetScrollCallback_func glfwSetScrollCallback_impl;
- #define glfwSetScrollCallback glfwSetScrollCallback_impl
-
- typedef GLFWdropfun (*glfwSetDropCallback_func)(GLFWwindow*, GLFWdropfun);
--glfwSetDropCallback_func glfwSetDropCallback_impl;
-+GFW_EXTERN glfwSetDropCallback_func glfwSetDropCallback_impl;
- #define glfwSetDropCallback glfwSetDropCallback_impl
-
- typedef GLFWliveresizefun (*glfwSetLiveResizeCallback_func)(GLFWwindow*, GLFWliveresizefun);
--glfwSetLiveResizeCallback_func glfwSetLiveResizeCallback_impl;
-+GFW_EXTERN glfwSetLiveResizeCallback_func glfwSetLiveResizeCallback_impl;
- #define glfwSetLiveResizeCallback glfwSetLiveResizeCallback_impl
-
- typedef int (*glfwJoystickPresent_func)(int);
--glfwJoystickPresent_func glfwJoystickPresent_impl;
-+GFW_EXTERN glfwJoystickPresent_func glfwJoystickPresent_impl;
- #define glfwJoystickPresent glfwJoystickPresent_impl
-
- typedef const float* (*glfwGetJoystickAxes_func)(int, int*);
--glfwGetJoystickAxes_func glfwGetJoystickAxes_impl;
-+GFW_EXTERN glfwGetJoystickAxes_func glfwGetJoystickAxes_impl;
- #define glfwGetJoystickAxes glfwGetJoystickAxes_impl
-
- typedef const unsigned char* (*glfwGetJoystickButtons_func)(int, int*);
--glfwGetJoystickButtons_func glfwGetJoystickButtons_impl;
-+GFW_EXTERN glfwGetJoystickButtons_func glfwGetJoystickButtons_impl;
- #define glfwGetJoystickButtons glfwGetJoystickButtons_impl
-
- typedef const unsigned char* (*glfwGetJoystickHats_func)(int, int*);
--glfwGetJoystickHats_func glfwGetJoystickHats_impl;
-+GFW_EXTERN glfwGetJoystickHats_func glfwGetJoystickHats_impl;
- #define glfwGetJoystickHats glfwGetJoystickHats_impl
-
- typedef const char* (*glfwGetJoystickName_func)(int);
--glfwGetJoystickName_func glfwGetJoystickName_impl;
-+GFW_EXTERN glfwGetJoystickName_func glfwGetJoystickName_impl;
- #define glfwGetJoystickName glfwGetJoystickName_impl
-
- typedef const char* (*glfwGetJoystickGUID_func)(int);
--glfwGetJoystickGUID_func glfwGetJoystickGUID_impl;
-+GFW_EXTERN glfwGetJoystickGUID_func glfwGetJoystickGUID_impl;
- #define glfwGetJoystickGUID glfwGetJoystickGUID_impl
-
- typedef void (*glfwSetJoystickUserPointer_func)(int, void*);
--glfwSetJoystickUserPointer_func glfwSetJoystickUserPointer_impl;
-+GFW_EXTERN glfwSetJoystickUserPointer_func glfwSetJoystickUserPointer_impl;
- #define glfwSetJoystickUserPointer glfwSetJoystickUserPointer_impl
-
- typedef void* (*glfwGetJoystickUserPointer_func)(int);
--glfwGetJoystickUserPointer_func glfwGetJoystickUserPointer_impl;
-+GFW_EXTERN glfwGetJoystickUserPointer_func glfwGetJoystickUserPointer_impl;
- #define glfwGetJoystickUserPointer glfwGetJoystickUserPointer_impl
-
- typedef int (*glfwJoystickIsGamepad_func)(int);
--glfwJoystickIsGamepad_func glfwJoystickIsGamepad_impl;
-+GFW_EXTERN glfwJoystickIsGamepad_func glfwJoystickIsGamepad_impl;
- #define glfwJoystickIsGamepad glfwJoystickIsGamepad_impl
-
- typedef GLFWjoystickfun (*glfwSetJoystickCallback_func)(GLFWjoystickfun);
--glfwSetJoystickCallback_func glfwSetJoystickCallback_impl;
-+GFW_EXTERN glfwSetJoystickCallback_func glfwSetJoystickCallback_impl;
- #define glfwSetJoystickCallback glfwSetJoystickCallback_impl
-
- typedef int (*glfwUpdateGamepadMappings_func)(const char*);
--glfwUpdateGamepadMappings_func glfwUpdateGamepadMappings_impl;
-+GFW_EXTERN glfwUpdateGamepadMappings_func glfwUpdateGamepadMappings_impl;
- #define glfwUpdateGamepadMappings glfwUpdateGamepadMappings_impl
-
- typedef const char* (*glfwGetGamepadName_func)(int);
--glfwGetGamepadName_func glfwGetGamepadName_impl;
-+GFW_EXTERN glfwGetGamepadName_func glfwGetGamepadName_impl;
- #define glfwGetGamepadName glfwGetGamepadName_impl
-
- typedef int (*glfwGetGamepadState_func)(int, GLFWgamepadstate*);
--glfwGetGamepadState_func glfwGetGamepadState_impl;
-+GFW_EXTERN glfwGetGamepadState_func glfwGetGamepadState_impl;
- #define glfwGetGamepadState glfwGetGamepadState_impl
-
- typedef void (*glfwSetClipboardString_func)(GLFWwindow*, const char*);
--glfwSetClipboardString_func glfwSetClipboardString_impl;
-+GFW_EXTERN glfwSetClipboardString_func glfwSetClipboardString_impl;
- #define glfwSetClipboardString glfwSetClipboardString_impl
-
- typedef const char* (*glfwGetClipboardString_func)(GLFWwindow*);
--glfwGetClipboardString_func glfwGetClipboardString_impl;
-+GFW_EXTERN glfwGetClipboardString_func glfwGetClipboardString_impl;
- #define glfwGetClipboardString glfwGetClipboardString_impl
-
- typedef monotonic_t (*glfwGetTime_func)(void);
--glfwGetTime_func glfwGetTime_impl;
-+GFW_EXTERN glfwGetTime_func glfwGetTime_impl;
- #define glfwGetTime glfwGetTime_impl
-
- typedef void (*glfwMakeContextCurrent_func)(GLFWwindow*);
--glfwMakeContextCurrent_func glfwMakeContextCurrent_impl;
-+GFW_EXTERN glfwMakeContextCurrent_func glfwMakeContextCurrent_impl;
- #define glfwMakeContextCurrent glfwMakeContextCurrent_impl
-
- typedef GLFWwindow* (*glfwGetCurrentContext_func)(void);
--glfwGetCurrentContext_func glfwGetCurrentContext_impl;
-+GFW_EXTERN glfwGetCurrentContext_func glfwGetCurrentContext_impl;
- #define glfwGetCurrentContext glfwGetCurrentContext_impl
-
- typedef void (*glfwSwapBuffers_func)(GLFWwindow*);
--glfwSwapBuffers_func glfwSwapBuffers_impl;
-+GFW_EXTERN glfwSwapBuffers_func glfwSwapBuffers_impl;
- #define glfwSwapBuffers glfwSwapBuffers_impl
-
- typedef void (*glfwSwapInterval_func)(int);
--glfwSwapInterval_func glfwSwapInterval_impl;
-+GFW_EXTERN glfwSwapInterval_func glfwSwapInterval_impl;
- #define glfwSwapInterval glfwSwapInterval_impl
-
- typedef int (*glfwExtensionSupported_func)(const char*);
--glfwExtensionSupported_func glfwExtensionSupported_impl;
-+GFW_EXTERN glfwExtensionSupported_func glfwExtensionSupported_impl;
- #define glfwExtensionSupported glfwExtensionSupported_impl
-
- typedef GLFWglproc (*glfwGetProcAddress_func)(const char*);
--glfwGetProcAddress_func glfwGetProcAddress_impl;
-+GFW_EXTERN glfwGetProcAddress_func glfwGetProcAddress_impl;
- #define glfwGetProcAddress glfwGetProcAddress_impl
-
- typedef int (*glfwVulkanSupported_func)(void);
--glfwVulkanSupported_func glfwVulkanSupported_impl;
-+GFW_EXTERN glfwVulkanSupported_func glfwVulkanSupported_impl;
- #define glfwVulkanSupported glfwVulkanSupported_impl
-
- typedef const char** (*glfwGetRequiredInstanceExtensions_func)(uint32_t*);
--glfwGetRequiredInstanceExtensions_func glfwGetRequiredInstanceExtensions_impl;
-+GFW_EXTERN glfwGetRequiredInstanceExtensions_func glfwGetRequiredInstanceExtensions_impl;
- #define glfwGetRequiredInstanceExtensions glfwGetRequiredInstanceExtensions_impl
-
- typedef void* (*glfwGetCocoaWindow_func)(GLFWwindow*);
--glfwGetCocoaWindow_func glfwGetCocoaWindow_impl;
-+GFW_EXTERN glfwGetCocoaWindow_func glfwGetCocoaWindow_impl;
- #define glfwGetCocoaWindow glfwGetCocoaWindow_impl
-
- typedef void* (*glfwGetNSGLContext_func)(GLFWwindow*);
--glfwGetNSGLContext_func glfwGetNSGLContext_impl;
-+GFW_EXTERN glfwGetNSGLContext_func glfwGetNSGLContext_impl;
- #define glfwGetNSGLContext glfwGetNSGLContext_impl
-
- typedef uint32_t (*glfwGetCocoaMonitor_func)(GLFWmonitor*);
--glfwGetCocoaMonitor_func glfwGetCocoaMonitor_impl;
-+GFW_EXTERN glfwGetCocoaMonitor_func glfwGetCocoaMonitor_impl;
- #define glfwGetCocoaMonitor glfwGetCocoaMonitor_impl
-
- typedef GLFWcocoatextinputfilterfun (*glfwSetCocoaTextInputFilter_func)(GLFWwindow*, GLFWcocoatextinputfilterfun);
--glfwSetCocoaTextInputFilter_func glfwSetCocoaTextInputFilter_impl;
-+GFW_EXTERN glfwSetCocoaTextInputFilter_func glfwSetCocoaTextInputFilter_impl;
- #define glfwSetCocoaTextInputFilter glfwSetCocoaTextInputFilter_impl
-
- typedef GLFWcocoatogglefullscreenfun (*glfwSetCocoaToggleFullscreenIntercept_func)(GLFWwindow*, GLFWcocoatogglefullscreenfun);
--glfwSetCocoaToggleFullscreenIntercept_func glfwSetCocoaToggleFullscreenIntercept_impl;
-+GFW_EXTERN glfwSetCocoaToggleFullscreenIntercept_func glfwSetCocoaToggleFullscreenIntercept_impl;
- #define glfwSetCocoaToggleFullscreenIntercept glfwSetCocoaToggleFullscreenIntercept_impl
-
- typedef GLFWapplicationshouldhandlereopenfun (*glfwSetApplicationShouldHandleReopen_func)(GLFWapplicationshouldhandlereopenfun);
--glfwSetApplicationShouldHandleReopen_func glfwSetApplicationShouldHandleReopen_impl;
-+GFW_EXTERN glfwSetApplicationShouldHandleReopen_func glfwSetApplicationShouldHandleReopen_impl;
- #define glfwSetApplicationShouldHandleReopen glfwSetApplicationShouldHandleReopen_impl
-
- typedef GLFWapplicationwillfinishlaunchingfun (*glfwSetApplicationWillFinishLaunching_func)(GLFWapplicationwillfinishlaunchingfun);
--glfwSetApplicationWillFinishLaunching_func glfwSetApplicationWillFinishLaunching_impl;
-+GFW_EXTERN glfwSetApplicationWillFinishLaunching_func glfwSetApplicationWillFinishLaunching_impl;
- #define glfwSetApplicationWillFinishLaunching glfwSetApplicationWillFinishLaunching_impl
-
- typedef void (*glfwGetCocoaKeyEquivalent_func)(int, int, char*, size_t, int*);
--glfwGetCocoaKeyEquivalent_func glfwGetCocoaKeyEquivalent_impl;
-+GFW_EXTERN glfwGetCocoaKeyEquivalent_func glfwGetCocoaKeyEquivalent_impl;
- #define glfwGetCocoaKeyEquivalent glfwGetCocoaKeyEquivalent_impl
-
- typedef void (*glfwCocoaRequestRenderFrame_func)(GLFWwindow*, GLFWcocoarenderframefun);
--glfwCocoaRequestRenderFrame_func glfwCocoaRequestRenderFrame_impl;
-+GFW_EXTERN glfwCocoaRequestRenderFrame_func glfwCocoaRequestRenderFrame_impl;
- #define glfwCocoaRequestRenderFrame glfwCocoaRequestRenderFrame_impl
-
- typedef void* (*glfwGetX11Display_func)(void);
--glfwGetX11Display_func glfwGetX11Display_impl;
-+GFW_EXTERN glfwGetX11Display_func glfwGetX11Display_impl;
- #define glfwGetX11Display glfwGetX11Display_impl
-
- typedef int32_t (*glfwGetX11Window_func)(GLFWwindow*);
--glfwGetX11Window_func glfwGetX11Window_impl;
-+GFW_EXTERN glfwGetX11Window_func glfwGetX11Window_impl;
- #define glfwGetX11Window glfwGetX11Window_impl
-
- typedef void (*glfwSetPrimarySelectionString_func)(GLFWwindow*, const char*);
--glfwSetPrimarySelectionString_func glfwSetPrimarySelectionString_impl;
-+GFW_EXTERN glfwSetPrimarySelectionString_func glfwSetPrimarySelectionString_impl;
- #define glfwSetPrimarySelectionString glfwSetPrimarySelectionString_impl
-
- typedef const char* (*glfwGetPrimarySelectionString_func)(GLFWwindow*);
--glfwGetPrimarySelectionString_func glfwGetPrimarySelectionString_impl;
-+GFW_EXTERN glfwGetPrimarySelectionString_func glfwGetPrimarySelectionString_impl;
- #define glfwGetPrimarySelectionString glfwGetPrimarySelectionString_impl
-
- typedef int (*glfwGetNativeKeyForName_func)(const char*, int);
--glfwGetNativeKeyForName_func glfwGetNativeKeyForName_impl;
-+GFW_EXTERN glfwGetNativeKeyForName_func glfwGetNativeKeyForName_impl;
- #define glfwGetNativeKeyForName glfwGetNativeKeyForName_impl
-
- typedef void (*glfwRequestWaylandFrameEvent_func)(GLFWwindow*, unsigned long long, GLFWwaylandframecallbackfunc);
--glfwRequestWaylandFrameEvent_func glfwRequestWaylandFrameEvent_impl;
-+GFW_EXTERN glfwRequestWaylandFrameEvent_func glfwRequestWaylandFrameEvent_impl;
- #define glfwRequestWaylandFrameEvent glfwRequestWaylandFrameEvent_impl
-
- typedef unsigned long long (*glfwDBusUserNotify_func)(const char*, const char*, const char*, const char*, const char*, int32_t, GLFWDBusnotificationcreatedfun, void*);
--glfwDBusUserNotify_func glfwDBusUserNotify_impl;
-+GFW_EXTERN glfwDBusUserNotify_func glfwDBusUserNotify_impl;
- #define glfwDBusUserNotify glfwDBusUserNotify_impl
-
- typedef void (*glfwDBusSetUserNotificationHandler_func)(GLFWDBusnotificationactivatedfun);
--glfwDBusSetUserNotificationHandler_func glfwDBusSetUserNotificationHandler_impl;
-+GFW_EXTERN glfwDBusSetUserNotificationHandler_func glfwDBusSetUserNotificationHandler_impl;
- #define glfwDBusSetUserNotificationHandler glfwDBusSetUserNotificationHandler_impl
-
- const char* load_glfw(const char* path);
-
-From 6dbdf72f40571e8a1ed1787ada4e08597e45ac75 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 17:55:38 +0530
-Subject: [PATCH 08/11] CoreText: When matching fonts prefer
- non-expanded/condensed variants
-
----
- kitty/core_text.m | 13 ++++++++-----
- kitty/fast_data_types.pyi | 3 +++
- kitty/fonts/core_text.py | 5 +++--
- 3 files changed, 14 insertions(+), 7 deletions(-)
-
-diff --git a/kitty/core_text.m b/kitty/core_text.m
-index 29036ea2f..229e8dc54 100644
---- a/kitty/core_text.m
-+++ b/kitty/core_text.m
-@@ -92,10 +92,10 @@
- NSString *style = (NSString *) CTFontDescriptorCopyAttribute(descriptor, kCTFontStyleNameAttribute);
- NSDictionary *traits = (NSDictionary *) CTFontDescriptorCopyAttribute(descriptor, kCTFontTraitsAttribute);
- unsigned int straits = [traits[(id)kCTFontSymbolicTrait] unsignedIntValue];
-- NSNumber *weightVal = traits[(id)kCTFontWeightTrait];
-- NSNumber *widthVal = traits[(id)kCTFontWidthTrait];
-+ float *weightVal = [traits[(id)kCTFontWeightTrait] floatValue];
-+ float widthVal = [traits[(id)kCTFontWidthTrait] floatValue];
-
-- PyObject *ans = Py_BuildValue("{ssssssss sOsOsO sfsfsI}",
-+ PyObject *ans = Py_BuildValue("{ssssssss sOsOsOsOsOsO sfsfsI}",
- "path", [[url path] UTF8String],
- "postscript_name", [psName UTF8String],
- "family", [family UTF8String],
-@@ -104,9 +104,12 @@
- "bold", (straits & kCTFontBoldTrait) != 0 ? Py_True : Py_False,
- "italic", (straits & kCTFontItalicTrait) != 0 ? Py_True : Py_False,
- "monospace", (straits & kCTFontMonoSpaceTrait) != 0 ? Py_True : Py_False,
-+ "expanded", (straits & kCTFontExpandedTrait) != 0 ? Py_True : Py_False,
-+ "condensed", (straits & kCTFontCondensedTrait) != 0 ? Py_True : Py_False,
-+ "color_glyphs", (straits & kCTFontColorGlyphsTrait) != 0 ? Py_True : Py_False,
-
-- "weight", [weightVal floatValue],
-- "width", [widthVal floatValue],
-+ "weight", weightVal,
-+ "width", widthVal,
- "traits", straits
- );
- [url release];
-diff --git a/kitty/fast_data_types.pyi b/kitty/fast_data_types.pyi
-index 4749e0c50..9333a8eaa 100644
---- a/kitty/fast_data_types.pyi
-+++ b/kitty/fast_data_types.pyi
-@@ -438,6 +438,9 @@ class CoreTextFont(TypedDict):
- style: str
- bold: bool
- italic: bool
-+ expanded: bool
-+ condensed: bool
-+ color_glyphs: bool
- monospace: bool
- weight: float
- width: float
-diff --git a/kitty/fonts/core_text.py b/kitty/fonts/core_text.py
-index 20567a3a1..5061b0fb2 100644
---- a/kitty/fonts/core_text.py
-+++ b/kitty/fonts/core_text.py
-@@ -54,12 +54,13 @@ def find_best_match(family: str, bold: bool = False, italic: bool = False) -> Co
- q = re.sub(r'\s+', ' ', family.lower())
- font_map = all_fonts_map()
-
-- def score(candidate: CoreTextFont) -> Tuple[int, int]:
-+ def score(candidate: CoreTextFont) -> Tuple[int, int, int]:
- style_match = 1 if candidate['bold'] == bold and candidate[
- 'italic'
- ] == italic else 0
- monospace_match = 1 if candidate['monospace'] else 0
-- return style_match, monospace_match
-+ is_regular_width = not candidate['expanded'] and not candidate['condensed']
-+ return style_match, monospace_match, 1 if is_regular_width else 0
-
- # First look for an exact match
- for selector in ('ps_map', 'full_map'):
-
-From 21c561043197f145fe7a478fdf078c4546c25914 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 18:02:44 +0530
-Subject: [PATCH 09/11] ...
-
----
- kitty/core_text.m | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/kitty/core_text.m b/kitty/core_text.m
-index 229e8dc54..23d1bcf5b 100644
---- a/kitty/core_text.m
-+++ b/kitty/core_text.m
-@@ -92,7 +92,7 @@
- NSString *style = (NSString *) CTFontDescriptorCopyAttribute(descriptor, kCTFontStyleNameAttribute);
- NSDictionary *traits = (NSDictionary *) CTFontDescriptorCopyAttribute(descriptor, kCTFontTraitsAttribute);
- unsigned int straits = [traits[(id)kCTFontSymbolicTrait] unsignedIntValue];
-- float *weightVal = [traits[(id)kCTFontWeightTrait] floatValue];
-+ float weightVal = [traits[(id)kCTFontWeightTrait] floatValue];
- float widthVal = [traits[(id)kCTFontWidthTrait] floatValue];
-
- PyObject *ans = Py_BuildValue("{ssssssss sOsOsOsOsOsO sfsfsI}",
-
-From a07369ce69660a940431fc5297940391d23a4803 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 18:14:14 +0530
-Subject: [PATCH 10/11] Update changelog
-
----
- docs/changelog.rst | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/docs/changelog.rst b/docs/changelog.rst
-index e9e137b43..c683c99ad 100644
---- a/docs/changelog.rst
-+++ b/docs/changelog.rst
-@@ -12,6 +12,9 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
- - Fix a regression in 0.17 that caused tab bar background to be rendered after
- the last tab as well (:iss:`2464`)
-
-+- macOS: Fix a regression in 0.17 that caused incorrect variants to be
-+ automatically selected for some fonts (:iss:`2462`)
-+
-
- 0.17.0 [2020-03-24]
- --------------------
-
-From 0547102bdd6ce3b71cf53f2cb75b2f85692789f5 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 18:33:32 +0530
-Subject: [PATCH 11/11] Fix #2468
-
----
- setup.py | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/setup.py b/setup.py
-index 917d29e6a..350d5e1fe 100755
---- a/setup.py
-+++ b/setup.py
-@@ -141,9 +141,12 @@ def cc_version() -> Tuple[str, Tuple[int, int]]:
- else:
- cc = 'cc'
- raw = subprocess.check_output([cc, '-dumpversion']).decode('utf-8')
-- ver_ = raw.split('.')[:2]
-+ ver_ = raw.strip().split('.')[:2]
- try:
-- ver = int(ver_[0]), int(ver_[1])
-+ if len(ver_) == 1:
-+ ver = int(ver_[0]), 0
-+ else:
-+ ver = int(ver_[0]), int(ver_[1])
- except Exception:
- ver = (0, 0)
- return cc, ver
diff --git a/kitty.spec b/kitty.spec
index 6e5d628..08e1366 100644
--- a/kitty.spec
+++ b/kitty.spec
@@ -3,7 +3,7 @@
%global build_ldflags %{build_ldflags} -flto
Name: kitty
-Version: 0.17.0
+Version: 0.17.1
Release: 1%{?dist}
Summary: Cross-platform, fast, feature full, GPU based terminal emulator
ExcludeArch: s390x ppc64le
@@ -18,16 +18,6 @@ Source0: https://github.com/kovidgoyal/kitty/archive/v%{version}/%{name}-
# * https://github.com/kovidgoyal/kitty/pull/2088
Source1: https://raw.githubusercontent.com/kovidgoyal/kitty/46c0951751444e4f499400...
-# Failed to compile with new GCC 10
-# * https://github.com/kovidgoyal/kitty/issues/2466
-#
-# Build error if compile with --debug
-# * https://github.com/kovidgoyal/kitty/issues/2468
-#
-# Some tests not passed on aarch64 and ppc64le arches
-# * https://github.com/kovidgoyal/kitty/issues/2469
-Patch0: https://github.com/kovidgoyal/kitty/compare/v0.17.0...master.patch#/kitty...
-
BuildRequires: desktop-file-utils
BuildRequires: gcc
BuildRequires: libappstream-glib
@@ -186,6 +176,9 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/*.desktop
%changelog
+* Tue Mar 24 2020 Artem Polishchuk <ego.cordatus(a)gmail.com> - 0.17.1-1
+- Update to 0.17.1
+
* Tue Mar 24 2020 Artem Polishchuk <ego.cordatus(a)gmail.com> - 0.17.0-1
- Update to 0.17.0
- Exclude arch ppc64le
diff --git a/sources b/sources
index 14af472..44d6632 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (kitty-0.17.0.tar.gz) = 30718d143da7f7825f992e90cd38d2743e03821c1d0bddac3cdebb7d308848f9dd271c203e9615d9ea77c7cc0c9621dd2c53d845f19a5f1d12afe63179996dd2
+SHA512 (kitty-0.17.1.tar.gz) = e7de00bbbba2172f3e7dba1809135b044f20f89ee156b1c6b7121a13f7589413cc9b2a264b30d2ab3e8cb9265a5291f3c932961b034e216735ec6704c5445200
commit 4a152008149967db6fa3bb2028719aac1da69fed
Author: Artem Polishchuk <ego.cordatus(a)gmail.com>
Date: Tue Mar 24 16:25:53 2020 +0200
Update to 0.17.0
Exclude arch ppc64le
diff --git a/compile-with-debug-fix.patch b/compile-with-debug-fix.patch
deleted file mode 100644
index b0c5304..0000000
--- a/compile-with-debug-fix.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 0547102bdd6ce3b71cf53f2cb75b2f85692789f5 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 18:33:32 +0530
-Subject: [PATCH] Fix #2468
-
----
- setup.py | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/setup.py b/setup.py
-index 917d29e6a..350d5e1fe 100755
---- a/setup.py
-+++ b/setup.py
-@@ -141,9 +141,12 @@ def cc_version() -> Tuple[str, Tuple[int, int]]:
- else:
- cc = 'cc'
- raw = subprocess.check_output([cc, '-dumpversion']).decode('utf-8')
-- ver_ = raw.split('.')[:2]
-+ ver_ = raw.strip().split('.')[:2]
- try:
-- ver = int(ver_[0]), int(ver_[1])
-+ if len(ver_) == 1:
-+ ver = int(ver_[0]), 0
-+ else:
-+ ver = int(ver_[0]), int(ver_[1])
- except Exception:
- ver = (0, 0)
- return cc, ver
diff --git a/kitty-gcc10.patch b/kitty-gcc10.patch
deleted file mode 100644
index a21216f..0000000
--- a/kitty-gcc10.patch
+++ /dev/null
@@ -1,750 +0,0 @@
-From 76a6bba64310024c2780ff26e5bbcd3f8b520b38 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 17:07:37 +0530
-Subject: [PATCH] Fix #2466
-
----
- glfw/glfw.py | 6 +-
- kitty/glfw-wrapper.c | 1 +
- kitty/glfw-wrapper.h | 275 ++++++++++++++++++++++---------------------
- 3 files changed, 145 insertions(+), 137 deletions(-)
-
-diff --git a/glfw/glfw.py b/glfw/glfw.py
-index 77e2dee68..41c36daaa 100755
---- a/glfw/glfw.py
-+++ b/glfw/glfw.py
-@@ -165,7 +165,7 @@ def __init__(self, declaration: str, check_fail: bool = True):
- self.args = [Arg('void v')]
-
- def declaration(self) -> str:
-- return 'typedef {restype} (*{name}_func)({args});\n{name}_func {name}_impl;\n#define {name} {name}_impl'.format(
-+ return 'typedef {restype} (*{name}_func)({args});\nGFW_EXTERN {name}_func {name}_impl;\n#define {name} {name}_impl'.format(
- restype=self.restype,
- name=self.name,
- args=', '.join(a.type for a in self.args)
-@@ -233,6 +233,9 @@ def generate_wrappers(glfw_header: str) -> None:
- #include <stdint.h>
- #include "monotonic.h"
-
-+#ifndef GFW_EXTERN
-+#define GFW_EXTERN extern
-+#endif
- {}
-
- typedef int (* GLFWcocoatextinputfilterfun)(int,int,unsigned int,unsigned long);
-@@ -251,6 +254,7 @@ def generate_wrappers(glfw_header: str) -> None:
- f.write(header)
-
- code = '''
-+#define GFW_EXTERN
- #include "data-types.h"
- #include "glfw-wrapper.h"
- #include <dlfcn.h>
-diff --git a/kitty/glfw-wrapper.c b/kitty/glfw-wrapper.c
-index 1159529bf..3833977ee 100644
---- a/kitty/glfw-wrapper.c
-+++ b/kitty/glfw-wrapper.c
-@@ -1,4 +1,5 @@
-
-+#define GFW_EXTERN
- #include "data-types.h"
- #include "glfw-wrapper.h"
- #include <dlfcn.h>
-diff --git a/kitty/glfw-wrapper.h b/kitty/glfw-wrapper.h
-index ac4629f3a..b7a816761 100644
---- a/kitty/glfw-wrapper.h
-+++ b/kitty/glfw-wrapper.h
-@@ -9,6 +9,9 @@
- #include <stdint.h>
- #include "monotonic.h"
-
-+#ifndef GFW_EXTERN
-+#define GFW_EXTERN extern
-+#endif
-
-
- /*! @name GLFW version macros
-@@ -1587,547 +1590,547 @@ typedef void (*GLFWwaylandframecallbackfunc)(unsigned long long id);
- typedef void (*GLFWDBusnotificationcreatedfun)(unsigned long long, uint32_t, void*);
- typedef void (*GLFWDBusnotificationactivatedfun)(uint32_t, const char*);
- typedef int (*glfwInit_func)(monotonic_t);
--glfwInit_func glfwInit_impl;
-+GFW_EXTERN glfwInit_func glfwInit_impl;
- #define glfwInit glfwInit_impl
-
- typedef void (*glfwRunMainLoop_func)(GLFWtickcallback, void*);
--glfwRunMainLoop_func glfwRunMainLoop_impl;
-+GFW_EXTERN glfwRunMainLoop_func glfwRunMainLoop_impl;
- #define glfwRunMainLoop glfwRunMainLoop_impl
-
- typedef void (*glfwStopMainLoop_func)(void);
--glfwStopMainLoop_func glfwStopMainLoop_impl;
-+GFW_EXTERN glfwStopMainLoop_func glfwStopMainLoop_impl;
- #define glfwStopMainLoop glfwStopMainLoop_impl
-
- typedef unsigned long long (*glfwAddTimer_func)(monotonic_t, bool, GLFWuserdatafun, void *, GLFWuserdatafun);
--glfwAddTimer_func glfwAddTimer_impl;
-+GFW_EXTERN glfwAddTimer_func glfwAddTimer_impl;
- #define glfwAddTimer glfwAddTimer_impl
-
- typedef void (*glfwUpdateTimer_func)(unsigned long long, monotonic_t, bool);
--glfwUpdateTimer_func glfwUpdateTimer_impl;
-+GFW_EXTERN glfwUpdateTimer_func glfwUpdateTimer_impl;
- #define glfwUpdateTimer glfwUpdateTimer_impl
-
- typedef void (*glfwRemoveTimer_func)(unsigned long);
--glfwRemoveTimer_func glfwRemoveTimer_impl;
-+GFW_EXTERN glfwRemoveTimer_func glfwRemoveTimer_impl;
- #define glfwRemoveTimer glfwRemoveTimer_impl
-
- typedef void (*glfwTerminate_func)(void);
--glfwTerminate_func glfwTerminate_impl;
-+GFW_EXTERN glfwTerminate_func glfwTerminate_impl;
- #define glfwTerminate glfwTerminate_impl
-
- typedef void (*glfwInitHint_func)(int, int);
--glfwInitHint_func glfwInitHint_impl;
-+GFW_EXTERN glfwInitHint_func glfwInitHint_impl;
- #define glfwInitHint glfwInitHint_impl
-
- typedef void (*glfwGetVersion_func)(int*, int*, int*);
--glfwGetVersion_func glfwGetVersion_impl;
-+GFW_EXTERN glfwGetVersion_func glfwGetVersion_impl;
- #define glfwGetVersion glfwGetVersion_impl
-
- typedef const char* (*glfwGetVersionString_func)(void);
--glfwGetVersionString_func glfwGetVersionString_impl;
-+GFW_EXTERN glfwGetVersionString_func glfwGetVersionString_impl;
- #define glfwGetVersionString glfwGetVersionString_impl
-
- typedef int (*glfwGetError_func)(const char**);
--glfwGetError_func glfwGetError_impl;
-+GFW_EXTERN glfwGetError_func glfwGetError_impl;
- #define glfwGetError glfwGetError_impl
-
- typedef GLFWerrorfun (*glfwSetErrorCallback_func)(GLFWerrorfun);
--glfwSetErrorCallback_func glfwSetErrorCallback_impl;
-+GFW_EXTERN glfwSetErrorCallback_func glfwSetErrorCallback_impl;
- #define glfwSetErrorCallback glfwSetErrorCallback_impl
-
- typedef GLFWmonitor** (*glfwGetMonitors_func)(int*);
--glfwGetMonitors_func glfwGetMonitors_impl;
-+GFW_EXTERN glfwGetMonitors_func glfwGetMonitors_impl;
- #define glfwGetMonitors glfwGetMonitors_impl
-
- typedef GLFWmonitor* (*glfwGetPrimaryMonitor_func)(void);
--glfwGetPrimaryMonitor_func glfwGetPrimaryMonitor_impl;
-+GFW_EXTERN glfwGetPrimaryMonitor_func glfwGetPrimaryMonitor_impl;
- #define glfwGetPrimaryMonitor glfwGetPrimaryMonitor_impl
-
- typedef void (*glfwGetMonitorPos_func)(GLFWmonitor*, int*, int*);
--glfwGetMonitorPos_func glfwGetMonitorPos_impl;
-+GFW_EXTERN glfwGetMonitorPos_func glfwGetMonitorPos_impl;
- #define glfwGetMonitorPos glfwGetMonitorPos_impl
-
- typedef void (*glfwGetMonitorWorkarea_func)(GLFWmonitor*, int*, int*, int*, int*);
--glfwGetMonitorWorkarea_func glfwGetMonitorWorkarea_impl;
-+GFW_EXTERN glfwGetMonitorWorkarea_func glfwGetMonitorWorkarea_impl;
- #define glfwGetMonitorWorkarea glfwGetMonitorWorkarea_impl
-
- typedef void (*glfwGetMonitorPhysicalSize_func)(GLFWmonitor*, int*, int*);
--glfwGetMonitorPhysicalSize_func glfwGetMonitorPhysicalSize_impl;
-+GFW_EXTERN glfwGetMonitorPhysicalSize_func glfwGetMonitorPhysicalSize_impl;
- #define glfwGetMonitorPhysicalSize glfwGetMonitorPhysicalSize_impl
-
- typedef void (*glfwGetMonitorContentScale_func)(GLFWmonitor*, float*, float*);
--glfwGetMonitorContentScale_func glfwGetMonitorContentScale_impl;
-+GFW_EXTERN glfwGetMonitorContentScale_func glfwGetMonitorContentScale_impl;
- #define glfwGetMonitorContentScale glfwGetMonitorContentScale_impl
-
- typedef const char* (*glfwGetMonitorName_func)(GLFWmonitor*);
--glfwGetMonitorName_func glfwGetMonitorName_impl;
-+GFW_EXTERN glfwGetMonitorName_func glfwGetMonitorName_impl;
- #define glfwGetMonitorName glfwGetMonitorName_impl
-
- typedef void (*glfwSetMonitorUserPointer_func)(GLFWmonitor*, void*);
--glfwSetMonitorUserPointer_func glfwSetMonitorUserPointer_impl;
-+GFW_EXTERN glfwSetMonitorUserPointer_func glfwSetMonitorUserPointer_impl;
- #define glfwSetMonitorUserPointer glfwSetMonitorUserPointer_impl
-
- typedef void* (*glfwGetMonitorUserPointer_func)(GLFWmonitor*);
--glfwGetMonitorUserPointer_func glfwGetMonitorUserPointer_impl;
-+GFW_EXTERN glfwGetMonitorUserPointer_func glfwGetMonitorUserPointer_impl;
- #define glfwGetMonitorUserPointer glfwGetMonitorUserPointer_impl
-
- typedef GLFWmonitorfun (*glfwSetMonitorCallback_func)(GLFWmonitorfun);
--glfwSetMonitorCallback_func glfwSetMonitorCallback_impl;
-+GFW_EXTERN glfwSetMonitorCallback_func glfwSetMonitorCallback_impl;
- #define glfwSetMonitorCallback glfwSetMonitorCallback_impl
-
- typedef const GLFWvidmode* (*glfwGetVideoModes_func)(GLFWmonitor*, int*);
--glfwGetVideoModes_func glfwGetVideoModes_impl;
-+GFW_EXTERN glfwGetVideoModes_func glfwGetVideoModes_impl;
- #define glfwGetVideoModes glfwGetVideoModes_impl
-
- typedef const GLFWvidmode* (*glfwGetVideoMode_func)(GLFWmonitor*);
--glfwGetVideoMode_func glfwGetVideoMode_impl;
-+GFW_EXTERN glfwGetVideoMode_func glfwGetVideoMode_impl;
- #define glfwGetVideoMode glfwGetVideoMode_impl
-
- typedef void (*glfwSetGamma_func)(GLFWmonitor*, float);
--glfwSetGamma_func glfwSetGamma_impl;
-+GFW_EXTERN glfwSetGamma_func glfwSetGamma_impl;
- #define glfwSetGamma glfwSetGamma_impl
-
- typedef const GLFWgammaramp* (*glfwGetGammaRamp_func)(GLFWmonitor*);
--glfwGetGammaRamp_func glfwGetGammaRamp_impl;
-+GFW_EXTERN glfwGetGammaRamp_func glfwGetGammaRamp_impl;
- #define glfwGetGammaRamp glfwGetGammaRamp_impl
-
- typedef void (*glfwSetGammaRamp_func)(GLFWmonitor*, const GLFWgammaramp*);
--glfwSetGammaRamp_func glfwSetGammaRamp_impl;
-+GFW_EXTERN glfwSetGammaRamp_func glfwSetGammaRamp_impl;
- #define glfwSetGammaRamp glfwSetGammaRamp_impl
-
- typedef void (*glfwDefaultWindowHints_func)(void);
--glfwDefaultWindowHints_func glfwDefaultWindowHints_impl;
-+GFW_EXTERN glfwDefaultWindowHints_func glfwDefaultWindowHints_impl;
- #define glfwDefaultWindowHints glfwDefaultWindowHints_impl
-
- typedef void (*glfwWindowHint_func)(int, int);
--glfwWindowHint_func glfwWindowHint_impl;
-+GFW_EXTERN glfwWindowHint_func glfwWindowHint_impl;
- #define glfwWindowHint glfwWindowHint_impl
-
- typedef void (*glfwWindowHintString_func)(int, const char*);
--glfwWindowHintString_func glfwWindowHintString_impl;
-+GFW_EXTERN glfwWindowHintString_func glfwWindowHintString_impl;
- #define glfwWindowHintString glfwWindowHintString_impl
-
- typedef GLFWwindow* (*glfwCreateWindow_func)(int, int, const char*, GLFWmonitor*, GLFWwindow*);
--glfwCreateWindow_func glfwCreateWindow_impl;
-+GFW_EXTERN glfwCreateWindow_func glfwCreateWindow_impl;
- #define glfwCreateWindow glfwCreateWindow_impl
-
- typedef bool (*glfwToggleFullscreen_func)(GLFWwindow*, unsigned int);
--glfwToggleFullscreen_func glfwToggleFullscreen_impl;
-+GFW_EXTERN glfwToggleFullscreen_func glfwToggleFullscreen_impl;
- #define glfwToggleFullscreen glfwToggleFullscreen_impl
-
- typedef void (*glfwDestroyWindow_func)(GLFWwindow*);
--glfwDestroyWindow_func glfwDestroyWindow_impl;
-+GFW_EXTERN glfwDestroyWindow_func glfwDestroyWindow_impl;
- #define glfwDestroyWindow glfwDestroyWindow_impl
-
- typedef int (*glfwWindowShouldClose_func)(GLFWwindow*);
--glfwWindowShouldClose_func glfwWindowShouldClose_impl;
-+GFW_EXTERN glfwWindowShouldClose_func glfwWindowShouldClose_impl;
- #define glfwWindowShouldClose glfwWindowShouldClose_impl
-
- typedef void (*glfwSetWindowShouldClose_func)(GLFWwindow*, int);
--glfwSetWindowShouldClose_func glfwSetWindowShouldClose_impl;
-+GFW_EXTERN glfwSetWindowShouldClose_func glfwSetWindowShouldClose_impl;
- #define glfwSetWindowShouldClose glfwSetWindowShouldClose_impl
-
- typedef void (*glfwSetWindowTitle_func)(GLFWwindow*, const char*);
--glfwSetWindowTitle_func glfwSetWindowTitle_impl;
-+GFW_EXTERN glfwSetWindowTitle_func glfwSetWindowTitle_impl;
- #define glfwSetWindowTitle glfwSetWindowTitle_impl
-
- typedef void (*glfwSetWindowIcon_func)(GLFWwindow*, int, const GLFWimage*);
--glfwSetWindowIcon_func glfwSetWindowIcon_impl;
-+GFW_EXTERN glfwSetWindowIcon_func glfwSetWindowIcon_impl;
- #define glfwSetWindowIcon glfwSetWindowIcon_impl
-
- typedef void (*glfwGetWindowPos_func)(GLFWwindow*, int*, int*);
--glfwGetWindowPos_func glfwGetWindowPos_impl;
-+GFW_EXTERN glfwGetWindowPos_func glfwGetWindowPos_impl;
- #define glfwGetWindowPos glfwGetWindowPos_impl
-
- typedef void (*glfwSetWindowPos_func)(GLFWwindow*, int, int);
--glfwSetWindowPos_func glfwSetWindowPos_impl;
-+GFW_EXTERN glfwSetWindowPos_func glfwSetWindowPos_impl;
- #define glfwSetWindowPos glfwSetWindowPos_impl
-
- typedef void (*glfwGetWindowSize_func)(GLFWwindow*, int*, int*);
--glfwGetWindowSize_func glfwGetWindowSize_impl;
-+GFW_EXTERN glfwGetWindowSize_func glfwGetWindowSize_impl;
- #define glfwGetWindowSize glfwGetWindowSize_impl
-
- typedef void (*glfwSetWindowSizeLimits_func)(GLFWwindow*, int, int, int, int);
--glfwSetWindowSizeLimits_func glfwSetWindowSizeLimits_impl;
-+GFW_EXTERN glfwSetWindowSizeLimits_func glfwSetWindowSizeLimits_impl;
- #define glfwSetWindowSizeLimits glfwSetWindowSizeLimits_impl
-
- typedef void (*glfwSetWindowSizeIncrements_func)(GLFWwindow*, int, int);
--glfwSetWindowSizeIncrements_func glfwSetWindowSizeIncrements_impl;
-+GFW_EXTERN glfwSetWindowSizeIncrements_func glfwSetWindowSizeIncrements_impl;
- #define glfwSetWindowSizeIncrements glfwSetWindowSizeIncrements_impl
-
- typedef void (*glfwSetWindowAspectRatio_func)(GLFWwindow*, int, int);
--glfwSetWindowAspectRatio_func glfwSetWindowAspectRatio_impl;
-+GFW_EXTERN glfwSetWindowAspectRatio_func glfwSetWindowAspectRatio_impl;
- #define glfwSetWindowAspectRatio glfwSetWindowAspectRatio_impl
-
- typedef void (*glfwSetWindowSize_func)(GLFWwindow*, int, int);
--glfwSetWindowSize_func glfwSetWindowSize_impl;
-+GFW_EXTERN glfwSetWindowSize_func glfwSetWindowSize_impl;
- #define glfwSetWindowSize glfwSetWindowSize_impl
-
- typedef void (*glfwGetFramebufferSize_func)(GLFWwindow*, int*, int*);
--glfwGetFramebufferSize_func glfwGetFramebufferSize_impl;
-+GFW_EXTERN glfwGetFramebufferSize_func glfwGetFramebufferSize_impl;
- #define glfwGetFramebufferSize glfwGetFramebufferSize_impl
-
- typedef void (*glfwGetWindowFrameSize_func)(GLFWwindow*, int*, int*, int*, int*);
--glfwGetWindowFrameSize_func glfwGetWindowFrameSize_impl;
-+GFW_EXTERN glfwGetWindowFrameSize_func glfwGetWindowFrameSize_impl;
- #define glfwGetWindowFrameSize glfwGetWindowFrameSize_impl
-
- typedef void (*glfwGetWindowContentScale_func)(GLFWwindow*, float*, float*);
--glfwGetWindowContentScale_func glfwGetWindowContentScale_impl;
-+GFW_EXTERN glfwGetWindowContentScale_func glfwGetWindowContentScale_impl;
- #define glfwGetWindowContentScale glfwGetWindowContentScale_impl
-
- typedef monotonic_t (*glfwGetDoubleClickInterval_func)(GLFWwindow*);
--glfwGetDoubleClickInterval_func glfwGetDoubleClickInterval_impl;
-+GFW_EXTERN glfwGetDoubleClickInterval_func glfwGetDoubleClickInterval_impl;
- #define glfwGetDoubleClickInterval glfwGetDoubleClickInterval_impl
-
- typedef float (*glfwGetWindowOpacity_func)(GLFWwindow*);
--glfwGetWindowOpacity_func glfwGetWindowOpacity_impl;
-+GFW_EXTERN glfwGetWindowOpacity_func glfwGetWindowOpacity_impl;
- #define glfwGetWindowOpacity glfwGetWindowOpacity_impl
-
- typedef void (*glfwSetWindowOpacity_func)(GLFWwindow*, float);
--glfwSetWindowOpacity_func glfwSetWindowOpacity_impl;
-+GFW_EXTERN glfwSetWindowOpacity_func glfwSetWindowOpacity_impl;
- #define glfwSetWindowOpacity glfwSetWindowOpacity_impl
-
- typedef void (*glfwIconifyWindow_func)(GLFWwindow*);
--glfwIconifyWindow_func glfwIconifyWindow_impl;
-+GFW_EXTERN glfwIconifyWindow_func glfwIconifyWindow_impl;
- #define glfwIconifyWindow glfwIconifyWindow_impl
-
- typedef void (*glfwRestoreWindow_func)(GLFWwindow*);
--glfwRestoreWindow_func glfwRestoreWindow_impl;
-+GFW_EXTERN glfwRestoreWindow_func glfwRestoreWindow_impl;
- #define glfwRestoreWindow glfwRestoreWindow_impl
-
- typedef void (*glfwMaximizeWindow_func)(GLFWwindow*);
--glfwMaximizeWindow_func glfwMaximizeWindow_impl;
-+GFW_EXTERN glfwMaximizeWindow_func glfwMaximizeWindow_impl;
- #define glfwMaximizeWindow glfwMaximizeWindow_impl
-
- typedef void (*glfwShowWindow_func)(GLFWwindow*);
--glfwShowWindow_func glfwShowWindow_impl;
-+GFW_EXTERN glfwShowWindow_func glfwShowWindow_impl;
- #define glfwShowWindow glfwShowWindow_impl
-
- typedef void (*glfwHideWindow_func)(GLFWwindow*);
--glfwHideWindow_func glfwHideWindow_impl;
-+GFW_EXTERN glfwHideWindow_func glfwHideWindow_impl;
- #define glfwHideWindow glfwHideWindow_impl
-
- typedef void (*glfwFocusWindow_func)(GLFWwindow*);
--glfwFocusWindow_func glfwFocusWindow_impl;
-+GFW_EXTERN glfwFocusWindow_func glfwFocusWindow_impl;
- #define glfwFocusWindow glfwFocusWindow_impl
-
- typedef void (*glfwRequestWindowAttention_func)(GLFWwindow*);
--glfwRequestWindowAttention_func glfwRequestWindowAttention_impl;
-+GFW_EXTERN glfwRequestWindowAttention_func glfwRequestWindowAttention_impl;
- #define glfwRequestWindowAttention glfwRequestWindowAttention_impl
-
- typedef int (*glfwWindowBell_func)(GLFWwindow*);
--glfwWindowBell_func glfwWindowBell_impl;
-+GFW_EXTERN glfwWindowBell_func glfwWindowBell_impl;
- #define glfwWindowBell glfwWindowBell_impl
-
- typedef GLFWmonitor* (*glfwGetWindowMonitor_func)(GLFWwindow*);
--glfwGetWindowMonitor_func glfwGetWindowMonitor_impl;
-+GFW_EXTERN glfwGetWindowMonitor_func glfwGetWindowMonitor_impl;
- #define glfwGetWindowMonitor glfwGetWindowMonitor_impl
-
- typedef void (*glfwSetWindowMonitor_func)(GLFWwindow*, GLFWmonitor*, int, int, int, int, int);
--glfwSetWindowMonitor_func glfwSetWindowMonitor_impl;
-+GFW_EXTERN glfwSetWindowMonitor_func glfwSetWindowMonitor_impl;
- #define glfwSetWindowMonitor glfwSetWindowMonitor_impl
-
- typedef int (*glfwGetWindowAttrib_func)(GLFWwindow*, int);
--glfwGetWindowAttrib_func glfwGetWindowAttrib_impl;
-+GFW_EXTERN glfwGetWindowAttrib_func glfwGetWindowAttrib_impl;
- #define glfwGetWindowAttrib glfwGetWindowAttrib_impl
-
- typedef void (*glfwSetWindowAttrib_func)(GLFWwindow*, int, int);
--glfwSetWindowAttrib_func glfwSetWindowAttrib_impl;
-+GFW_EXTERN glfwSetWindowAttrib_func glfwSetWindowAttrib_impl;
- #define glfwSetWindowAttrib glfwSetWindowAttrib_impl
-
- typedef void (*glfwSetWindowUserPointer_func)(GLFWwindow*, void*);
--glfwSetWindowUserPointer_func glfwSetWindowUserPointer_impl;
-+GFW_EXTERN glfwSetWindowUserPointer_func glfwSetWindowUserPointer_impl;
- #define glfwSetWindowUserPointer glfwSetWindowUserPointer_impl
-
- typedef void* (*glfwGetWindowUserPointer_func)(GLFWwindow*);
--glfwGetWindowUserPointer_func glfwGetWindowUserPointer_impl;
-+GFW_EXTERN glfwGetWindowUserPointer_func glfwGetWindowUserPointer_impl;
- #define glfwGetWindowUserPointer glfwGetWindowUserPointer_impl
-
- typedef GLFWwindowposfun (*glfwSetWindowPosCallback_func)(GLFWwindow*, GLFWwindowposfun);
--glfwSetWindowPosCallback_func glfwSetWindowPosCallback_impl;
-+GFW_EXTERN glfwSetWindowPosCallback_func glfwSetWindowPosCallback_impl;
- #define glfwSetWindowPosCallback glfwSetWindowPosCallback_impl
-
- typedef GLFWwindowsizefun (*glfwSetWindowSizeCallback_func)(GLFWwindow*, GLFWwindowsizefun);
--glfwSetWindowSizeCallback_func glfwSetWindowSizeCallback_impl;
-+GFW_EXTERN glfwSetWindowSizeCallback_func glfwSetWindowSizeCallback_impl;
- #define glfwSetWindowSizeCallback glfwSetWindowSizeCallback_impl
-
- typedef GLFWwindowclosefun (*glfwSetWindowCloseCallback_func)(GLFWwindow*, GLFWwindowclosefun);
--glfwSetWindowCloseCallback_func glfwSetWindowCloseCallback_impl;
-+GFW_EXTERN glfwSetWindowCloseCallback_func glfwSetWindowCloseCallback_impl;
- #define glfwSetWindowCloseCallback glfwSetWindowCloseCallback_impl
-
- typedef GLFWwindowrefreshfun (*glfwSetWindowRefreshCallback_func)(GLFWwindow*, GLFWwindowrefreshfun);
--glfwSetWindowRefreshCallback_func glfwSetWindowRefreshCallback_impl;
-+GFW_EXTERN glfwSetWindowRefreshCallback_func glfwSetWindowRefreshCallback_impl;
- #define glfwSetWindowRefreshCallback glfwSetWindowRefreshCallback_impl
-
- typedef GLFWwindowfocusfun (*glfwSetWindowFocusCallback_func)(GLFWwindow*, GLFWwindowfocusfun);
--glfwSetWindowFocusCallback_func glfwSetWindowFocusCallback_impl;
-+GFW_EXTERN glfwSetWindowFocusCallback_func glfwSetWindowFocusCallback_impl;
- #define glfwSetWindowFocusCallback glfwSetWindowFocusCallback_impl
-
- typedef GLFWwindowocclusionfun (*glfwSetWindowOcclusionCallback_func)(GLFWwindow*, GLFWwindowocclusionfun);
--glfwSetWindowOcclusionCallback_func glfwSetWindowOcclusionCallback_impl;
-+GFW_EXTERN glfwSetWindowOcclusionCallback_func glfwSetWindowOcclusionCallback_impl;
- #define glfwSetWindowOcclusionCallback glfwSetWindowOcclusionCallback_impl
-
- typedef GLFWwindowiconifyfun (*glfwSetWindowIconifyCallback_func)(GLFWwindow*, GLFWwindowiconifyfun);
--glfwSetWindowIconifyCallback_func glfwSetWindowIconifyCallback_impl;
-+GFW_EXTERN glfwSetWindowIconifyCallback_func glfwSetWindowIconifyCallback_impl;
- #define glfwSetWindowIconifyCallback glfwSetWindowIconifyCallback_impl
-
- typedef GLFWwindowmaximizefun (*glfwSetWindowMaximizeCallback_func)(GLFWwindow*, GLFWwindowmaximizefun);
--glfwSetWindowMaximizeCallback_func glfwSetWindowMaximizeCallback_impl;
-+GFW_EXTERN glfwSetWindowMaximizeCallback_func glfwSetWindowMaximizeCallback_impl;
- #define glfwSetWindowMaximizeCallback glfwSetWindowMaximizeCallback_impl
-
- typedef GLFWframebuffersizefun (*glfwSetFramebufferSizeCallback_func)(GLFWwindow*, GLFWframebuffersizefun);
--glfwSetFramebufferSizeCallback_func glfwSetFramebufferSizeCallback_impl;
-+GFW_EXTERN glfwSetFramebufferSizeCallback_func glfwSetFramebufferSizeCallback_impl;
- #define glfwSetFramebufferSizeCallback glfwSetFramebufferSizeCallback_impl
-
- typedef GLFWwindowcontentscalefun (*glfwSetWindowContentScaleCallback_func)(GLFWwindow*, GLFWwindowcontentscalefun);
--glfwSetWindowContentScaleCallback_func glfwSetWindowContentScaleCallback_impl;
-+GFW_EXTERN glfwSetWindowContentScaleCallback_func glfwSetWindowContentScaleCallback_impl;
- #define glfwSetWindowContentScaleCallback glfwSetWindowContentScaleCallback_impl
-
- typedef void (*glfwPostEmptyEvent_func)(void);
--glfwPostEmptyEvent_func glfwPostEmptyEvent_impl;
-+GFW_EXTERN glfwPostEmptyEvent_func glfwPostEmptyEvent_impl;
- #define glfwPostEmptyEvent glfwPostEmptyEvent_impl
-
- typedef int (*glfwGetInputMode_func)(GLFWwindow*, int);
--glfwGetInputMode_func glfwGetInputMode_impl;
-+GFW_EXTERN glfwGetInputMode_func glfwGetInputMode_impl;
- #define glfwGetInputMode glfwGetInputMode_impl
-
- typedef void (*glfwSetInputMode_func)(GLFWwindow*, int, int);
--glfwSetInputMode_func glfwSetInputMode_impl;
-+GFW_EXTERN glfwSetInputMode_func glfwSetInputMode_impl;
- #define glfwSetInputMode glfwSetInputMode_impl
-
- typedef const char* (*glfwGetKeyName_func)(int, int);
--glfwGetKeyName_func glfwGetKeyName_impl;
-+GFW_EXTERN glfwGetKeyName_func glfwGetKeyName_impl;
- #define glfwGetKeyName glfwGetKeyName_impl
-
- typedef int (*glfwGetNativeKeyForKey_func)(int);
--glfwGetNativeKeyForKey_func glfwGetNativeKeyForKey_impl;
-+GFW_EXTERN glfwGetNativeKeyForKey_func glfwGetNativeKeyForKey_impl;
- #define glfwGetNativeKeyForKey glfwGetNativeKeyForKey_impl
-
- typedef int (*glfwGetKey_func)(GLFWwindow*, int);
--glfwGetKey_func glfwGetKey_impl;
-+GFW_EXTERN glfwGetKey_func glfwGetKey_impl;
- #define glfwGetKey glfwGetKey_impl
-
- typedef int (*glfwGetMouseButton_func)(GLFWwindow*, int);
--glfwGetMouseButton_func glfwGetMouseButton_impl;
-+GFW_EXTERN glfwGetMouseButton_func glfwGetMouseButton_impl;
- #define glfwGetMouseButton glfwGetMouseButton_impl
-
- typedef void (*glfwGetCursorPos_func)(GLFWwindow*, double*, double*);
--glfwGetCursorPos_func glfwGetCursorPos_impl;
-+GFW_EXTERN glfwGetCursorPos_func glfwGetCursorPos_impl;
- #define glfwGetCursorPos glfwGetCursorPos_impl
-
- typedef void (*glfwSetCursorPos_func)(GLFWwindow*, double, double);
--glfwSetCursorPos_func glfwSetCursorPos_impl;
-+GFW_EXTERN glfwSetCursorPos_func glfwSetCursorPos_impl;
- #define glfwSetCursorPos glfwSetCursorPos_impl
-
- typedef GLFWcursor* (*glfwCreateCursor_func)(const GLFWimage*, int, int, int);
--glfwCreateCursor_func glfwCreateCursor_impl;
-+GFW_EXTERN glfwCreateCursor_func glfwCreateCursor_impl;
- #define glfwCreateCursor glfwCreateCursor_impl
-
- typedef GLFWcursor* (*glfwCreateStandardCursor_func)(GLFWCursorShape);
--glfwCreateStandardCursor_func glfwCreateStandardCursor_impl;
-+GFW_EXTERN glfwCreateStandardCursor_func glfwCreateStandardCursor_impl;
- #define glfwCreateStandardCursor glfwCreateStandardCursor_impl
-
- typedef void (*glfwDestroyCursor_func)(GLFWcursor*);
--glfwDestroyCursor_func glfwDestroyCursor_impl;
-+GFW_EXTERN glfwDestroyCursor_func glfwDestroyCursor_impl;
- #define glfwDestroyCursor glfwDestroyCursor_impl
-
- typedef void (*glfwSetCursor_func)(GLFWwindow*, GLFWcursor*);
--glfwSetCursor_func glfwSetCursor_impl;
-+GFW_EXTERN glfwSetCursor_func glfwSetCursor_impl;
- #define glfwSetCursor glfwSetCursor_impl
-
- typedef GLFWkeyboardfun (*glfwSetKeyboardCallback_func)(GLFWwindow*, GLFWkeyboardfun);
--glfwSetKeyboardCallback_func glfwSetKeyboardCallback_impl;
-+GFW_EXTERN glfwSetKeyboardCallback_func glfwSetKeyboardCallback_impl;
- #define glfwSetKeyboardCallback glfwSetKeyboardCallback_impl
-
- typedef void (*glfwUpdateIMEState_func)(GLFWwindow*, int, int, int, int, int);
--glfwUpdateIMEState_func glfwUpdateIMEState_impl;
-+GFW_EXTERN glfwUpdateIMEState_func glfwUpdateIMEState_impl;
- #define glfwUpdateIMEState glfwUpdateIMEState_impl
-
- typedef GLFWmousebuttonfun (*glfwSetMouseButtonCallback_func)(GLFWwindow*, GLFWmousebuttonfun);
--glfwSetMouseButtonCallback_func glfwSetMouseButtonCallback_impl;
-+GFW_EXTERN glfwSetMouseButtonCallback_func glfwSetMouseButtonCallback_impl;
- #define glfwSetMouseButtonCallback glfwSetMouseButtonCallback_impl
-
- typedef GLFWcursorposfun (*glfwSetCursorPosCallback_func)(GLFWwindow*, GLFWcursorposfun);
--glfwSetCursorPosCallback_func glfwSetCursorPosCallback_impl;
-+GFW_EXTERN glfwSetCursorPosCallback_func glfwSetCursorPosCallback_impl;
- #define glfwSetCursorPosCallback glfwSetCursorPosCallback_impl
-
- typedef GLFWcursorenterfun (*glfwSetCursorEnterCallback_func)(GLFWwindow*, GLFWcursorenterfun);
--glfwSetCursorEnterCallback_func glfwSetCursorEnterCallback_impl;
-+GFW_EXTERN glfwSetCursorEnterCallback_func glfwSetCursorEnterCallback_impl;
- #define glfwSetCursorEnterCallback glfwSetCursorEnterCallback_impl
-
- typedef GLFWscrollfun (*glfwSetScrollCallback_func)(GLFWwindow*, GLFWscrollfun);
--glfwSetScrollCallback_func glfwSetScrollCallback_impl;
-+GFW_EXTERN glfwSetScrollCallback_func glfwSetScrollCallback_impl;
- #define glfwSetScrollCallback glfwSetScrollCallback_impl
-
- typedef GLFWdropfun (*glfwSetDropCallback_func)(GLFWwindow*, GLFWdropfun);
--glfwSetDropCallback_func glfwSetDropCallback_impl;
-+GFW_EXTERN glfwSetDropCallback_func glfwSetDropCallback_impl;
- #define glfwSetDropCallback glfwSetDropCallback_impl
-
- typedef GLFWliveresizefun (*glfwSetLiveResizeCallback_func)(GLFWwindow*, GLFWliveresizefun);
--glfwSetLiveResizeCallback_func glfwSetLiveResizeCallback_impl;
-+GFW_EXTERN glfwSetLiveResizeCallback_func glfwSetLiveResizeCallback_impl;
- #define glfwSetLiveResizeCallback glfwSetLiveResizeCallback_impl
-
- typedef int (*glfwJoystickPresent_func)(int);
--glfwJoystickPresent_func glfwJoystickPresent_impl;
-+GFW_EXTERN glfwJoystickPresent_func glfwJoystickPresent_impl;
- #define glfwJoystickPresent glfwJoystickPresent_impl
-
- typedef const float* (*glfwGetJoystickAxes_func)(int, int*);
--glfwGetJoystickAxes_func glfwGetJoystickAxes_impl;
-+GFW_EXTERN glfwGetJoystickAxes_func glfwGetJoystickAxes_impl;
- #define glfwGetJoystickAxes glfwGetJoystickAxes_impl
-
- typedef const unsigned char* (*glfwGetJoystickButtons_func)(int, int*);
--glfwGetJoystickButtons_func glfwGetJoystickButtons_impl;
-+GFW_EXTERN glfwGetJoystickButtons_func glfwGetJoystickButtons_impl;
- #define glfwGetJoystickButtons glfwGetJoystickButtons_impl
-
- typedef const unsigned char* (*glfwGetJoystickHats_func)(int, int*);
--glfwGetJoystickHats_func glfwGetJoystickHats_impl;
-+GFW_EXTERN glfwGetJoystickHats_func glfwGetJoystickHats_impl;
- #define glfwGetJoystickHats glfwGetJoystickHats_impl
-
- typedef const char* (*glfwGetJoystickName_func)(int);
--glfwGetJoystickName_func glfwGetJoystickName_impl;
-+GFW_EXTERN glfwGetJoystickName_func glfwGetJoystickName_impl;
- #define glfwGetJoystickName glfwGetJoystickName_impl
-
- typedef const char* (*glfwGetJoystickGUID_func)(int);
--glfwGetJoystickGUID_func glfwGetJoystickGUID_impl;
-+GFW_EXTERN glfwGetJoystickGUID_func glfwGetJoystickGUID_impl;
- #define glfwGetJoystickGUID glfwGetJoystickGUID_impl
-
- typedef void (*glfwSetJoystickUserPointer_func)(int, void*);
--glfwSetJoystickUserPointer_func glfwSetJoystickUserPointer_impl;
-+GFW_EXTERN glfwSetJoystickUserPointer_func glfwSetJoystickUserPointer_impl;
- #define glfwSetJoystickUserPointer glfwSetJoystickUserPointer_impl
-
- typedef void* (*glfwGetJoystickUserPointer_func)(int);
--glfwGetJoystickUserPointer_func glfwGetJoystickUserPointer_impl;
-+GFW_EXTERN glfwGetJoystickUserPointer_func glfwGetJoystickUserPointer_impl;
- #define glfwGetJoystickUserPointer glfwGetJoystickUserPointer_impl
-
- typedef int (*glfwJoystickIsGamepad_func)(int);
--glfwJoystickIsGamepad_func glfwJoystickIsGamepad_impl;
-+GFW_EXTERN glfwJoystickIsGamepad_func glfwJoystickIsGamepad_impl;
- #define glfwJoystickIsGamepad glfwJoystickIsGamepad_impl
-
- typedef GLFWjoystickfun (*glfwSetJoystickCallback_func)(GLFWjoystickfun);
--glfwSetJoystickCallback_func glfwSetJoystickCallback_impl;
-+GFW_EXTERN glfwSetJoystickCallback_func glfwSetJoystickCallback_impl;
- #define glfwSetJoystickCallback glfwSetJoystickCallback_impl
-
- typedef int (*glfwUpdateGamepadMappings_func)(const char*);
--glfwUpdateGamepadMappings_func glfwUpdateGamepadMappings_impl;
-+GFW_EXTERN glfwUpdateGamepadMappings_func glfwUpdateGamepadMappings_impl;
- #define glfwUpdateGamepadMappings glfwUpdateGamepadMappings_impl
-
- typedef const char* (*glfwGetGamepadName_func)(int);
--glfwGetGamepadName_func glfwGetGamepadName_impl;
-+GFW_EXTERN glfwGetGamepadName_func glfwGetGamepadName_impl;
- #define glfwGetGamepadName glfwGetGamepadName_impl
-
- typedef int (*glfwGetGamepadState_func)(int, GLFWgamepadstate*);
--glfwGetGamepadState_func glfwGetGamepadState_impl;
-+GFW_EXTERN glfwGetGamepadState_func glfwGetGamepadState_impl;
- #define glfwGetGamepadState glfwGetGamepadState_impl
-
- typedef void (*glfwSetClipboardString_func)(GLFWwindow*, const char*);
--glfwSetClipboardString_func glfwSetClipboardString_impl;
-+GFW_EXTERN glfwSetClipboardString_func glfwSetClipboardString_impl;
- #define glfwSetClipboardString glfwSetClipboardString_impl
-
- typedef const char* (*glfwGetClipboardString_func)(GLFWwindow*);
--glfwGetClipboardString_func glfwGetClipboardString_impl;
-+GFW_EXTERN glfwGetClipboardString_func glfwGetClipboardString_impl;
- #define glfwGetClipboardString glfwGetClipboardString_impl
-
- typedef monotonic_t (*glfwGetTime_func)(void);
--glfwGetTime_func glfwGetTime_impl;
-+GFW_EXTERN glfwGetTime_func glfwGetTime_impl;
- #define glfwGetTime glfwGetTime_impl
-
- typedef void (*glfwMakeContextCurrent_func)(GLFWwindow*);
--glfwMakeContextCurrent_func glfwMakeContextCurrent_impl;
-+GFW_EXTERN glfwMakeContextCurrent_func glfwMakeContextCurrent_impl;
- #define glfwMakeContextCurrent glfwMakeContextCurrent_impl
-
- typedef GLFWwindow* (*glfwGetCurrentContext_func)(void);
--glfwGetCurrentContext_func glfwGetCurrentContext_impl;
-+GFW_EXTERN glfwGetCurrentContext_func glfwGetCurrentContext_impl;
- #define glfwGetCurrentContext glfwGetCurrentContext_impl
-
- typedef void (*glfwSwapBuffers_func)(GLFWwindow*);
--glfwSwapBuffers_func glfwSwapBuffers_impl;
-+GFW_EXTERN glfwSwapBuffers_func glfwSwapBuffers_impl;
- #define glfwSwapBuffers glfwSwapBuffers_impl
-
- typedef void (*glfwSwapInterval_func)(int);
--glfwSwapInterval_func glfwSwapInterval_impl;
-+GFW_EXTERN glfwSwapInterval_func glfwSwapInterval_impl;
- #define glfwSwapInterval glfwSwapInterval_impl
-
- typedef int (*glfwExtensionSupported_func)(const char*);
--glfwExtensionSupported_func glfwExtensionSupported_impl;
-+GFW_EXTERN glfwExtensionSupported_func glfwExtensionSupported_impl;
- #define glfwExtensionSupported glfwExtensionSupported_impl
-
- typedef GLFWglproc (*glfwGetProcAddress_func)(const char*);
--glfwGetProcAddress_func glfwGetProcAddress_impl;
-+GFW_EXTERN glfwGetProcAddress_func glfwGetProcAddress_impl;
- #define glfwGetProcAddress glfwGetProcAddress_impl
-
- typedef int (*glfwVulkanSupported_func)(void);
--glfwVulkanSupported_func glfwVulkanSupported_impl;
-+GFW_EXTERN glfwVulkanSupported_func glfwVulkanSupported_impl;
- #define glfwVulkanSupported glfwVulkanSupported_impl
-
- typedef const char** (*glfwGetRequiredInstanceExtensions_func)(uint32_t*);
--glfwGetRequiredInstanceExtensions_func glfwGetRequiredInstanceExtensions_impl;
-+GFW_EXTERN glfwGetRequiredInstanceExtensions_func glfwGetRequiredInstanceExtensions_impl;
- #define glfwGetRequiredInstanceExtensions glfwGetRequiredInstanceExtensions_impl
-
- typedef void* (*glfwGetCocoaWindow_func)(GLFWwindow*);
--glfwGetCocoaWindow_func glfwGetCocoaWindow_impl;
-+GFW_EXTERN glfwGetCocoaWindow_func glfwGetCocoaWindow_impl;
- #define glfwGetCocoaWindow glfwGetCocoaWindow_impl
-
- typedef void* (*glfwGetNSGLContext_func)(GLFWwindow*);
--glfwGetNSGLContext_func glfwGetNSGLContext_impl;
-+GFW_EXTERN glfwGetNSGLContext_func glfwGetNSGLContext_impl;
- #define glfwGetNSGLContext glfwGetNSGLContext_impl
-
- typedef uint32_t (*glfwGetCocoaMonitor_func)(GLFWmonitor*);
--glfwGetCocoaMonitor_func glfwGetCocoaMonitor_impl;
-+GFW_EXTERN glfwGetCocoaMonitor_func glfwGetCocoaMonitor_impl;
- #define glfwGetCocoaMonitor glfwGetCocoaMonitor_impl
-
- typedef GLFWcocoatextinputfilterfun (*glfwSetCocoaTextInputFilter_func)(GLFWwindow*, GLFWcocoatextinputfilterfun);
--glfwSetCocoaTextInputFilter_func glfwSetCocoaTextInputFilter_impl;
-+GFW_EXTERN glfwSetCocoaTextInputFilter_func glfwSetCocoaTextInputFilter_impl;
- #define glfwSetCocoaTextInputFilter glfwSetCocoaTextInputFilter_impl
-
- typedef GLFWcocoatogglefullscreenfun (*glfwSetCocoaToggleFullscreenIntercept_func)(GLFWwindow*, GLFWcocoatogglefullscreenfun);
--glfwSetCocoaToggleFullscreenIntercept_func glfwSetCocoaToggleFullscreenIntercept_impl;
-+GFW_EXTERN glfwSetCocoaToggleFullscreenIntercept_func glfwSetCocoaToggleFullscreenIntercept_impl;
- #define glfwSetCocoaToggleFullscreenIntercept glfwSetCocoaToggleFullscreenIntercept_impl
-
- typedef GLFWapplicationshouldhandlereopenfun (*glfwSetApplicationShouldHandleReopen_func)(GLFWapplicationshouldhandlereopenfun);
--glfwSetApplicationShouldHandleReopen_func glfwSetApplicationShouldHandleReopen_impl;
-+GFW_EXTERN glfwSetApplicationShouldHandleReopen_func glfwSetApplicationShouldHandleReopen_impl;
- #define glfwSetApplicationShouldHandleReopen glfwSetApplicationShouldHandleReopen_impl
-
- typedef GLFWapplicationwillfinishlaunchingfun (*glfwSetApplicationWillFinishLaunching_func)(GLFWapplicationwillfinishlaunchingfun);
--glfwSetApplicationWillFinishLaunching_func glfwSetApplicationWillFinishLaunching_impl;
-+GFW_EXTERN glfwSetApplicationWillFinishLaunching_func glfwSetApplicationWillFinishLaunching_impl;
- #define glfwSetApplicationWillFinishLaunching glfwSetApplicationWillFinishLaunching_impl
-
- typedef void (*glfwGetCocoaKeyEquivalent_func)(int, int, char*, size_t, int*);
--glfwGetCocoaKeyEquivalent_func glfwGetCocoaKeyEquivalent_impl;
-+GFW_EXTERN glfwGetCocoaKeyEquivalent_func glfwGetCocoaKeyEquivalent_impl;
- #define glfwGetCocoaKeyEquivalent glfwGetCocoaKeyEquivalent_impl
-
- typedef void (*glfwCocoaRequestRenderFrame_func)(GLFWwindow*, GLFWcocoarenderframefun);
--glfwCocoaRequestRenderFrame_func glfwCocoaRequestRenderFrame_impl;
-+GFW_EXTERN glfwCocoaRequestRenderFrame_func glfwCocoaRequestRenderFrame_impl;
- #define glfwCocoaRequestRenderFrame glfwCocoaRequestRenderFrame_impl
-
- typedef void* (*glfwGetX11Display_func)(void);
--glfwGetX11Display_func glfwGetX11Display_impl;
-+GFW_EXTERN glfwGetX11Display_func glfwGetX11Display_impl;
- #define glfwGetX11Display glfwGetX11Display_impl
-
- typedef int32_t (*glfwGetX11Window_func)(GLFWwindow*);
--glfwGetX11Window_func glfwGetX11Window_impl;
-+GFW_EXTERN glfwGetX11Window_func glfwGetX11Window_impl;
- #define glfwGetX11Window glfwGetX11Window_impl
-
- typedef void (*glfwSetPrimarySelectionString_func)(GLFWwindow*, const char*);
--glfwSetPrimarySelectionString_func glfwSetPrimarySelectionString_impl;
-+GFW_EXTERN glfwSetPrimarySelectionString_func glfwSetPrimarySelectionString_impl;
- #define glfwSetPrimarySelectionString glfwSetPrimarySelectionString_impl
-
- typedef const char* (*glfwGetPrimarySelectionString_func)(GLFWwindow*);
--glfwGetPrimarySelectionString_func glfwGetPrimarySelectionString_impl;
-+GFW_EXTERN glfwGetPrimarySelectionString_func glfwGetPrimarySelectionString_impl;
- #define glfwGetPrimarySelectionString glfwGetPrimarySelectionString_impl
-
- typedef int (*glfwGetNativeKeyForName_func)(const char*, int);
--glfwGetNativeKeyForName_func glfwGetNativeKeyForName_impl;
-+GFW_EXTERN glfwGetNativeKeyForName_func glfwGetNativeKeyForName_impl;
- #define glfwGetNativeKeyForName glfwGetNativeKeyForName_impl
-
- typedef void (*glfwRequestWaylandFrameEvent_func)(GLFWwindow*, unsigned long long, GLFWwaylandframecallbackfunc);
--glfwRequestWaylandFrameEvent_func glfwRequestWaylandFrameEvent_impl;
-+GFW_EXTERN glfwRequestWaylandFrameEvent_func glfwRequestWaylandFrameEvent_impl;
- #define glfwRequestWaylandFrameEvent glfwRequestWaylandFrameEvent_impl
-
- typedef unsigned long long (*glfwDBusUserNotify_func)(const char*, const char*, const char*, const char*, const char*, int32_t, GLFWDBusnotificationcreatedfun, void*);
--glfwDBusUserNotify_func glfwDBusUserNotify_impl;
-+GFW_EXTERN glfwDBusUserNotify_func glfwDBusUserNotify_impl;
- #define glfwDBusUserNotify glfwDBusUserNotify_impl
-
- typedef void (*glfwDBusSetUserNotificationHandler_func)(GLFWDBusnotificationactivatedfun);
--glfwDBusSetUserNotificationHandler_func glfwDBusSetUserNotificationHandler_impl;
-+GFW_EXTERN glfwDBusSetUserNotificationHandler_func glfwDBusSetUserNotificationHandler_impl;
- #define glfwDBusSetUserNotificationHandler glfwDBusSetUserNotificationHandler_impl
-
- const char* load_glfw(const char* path);
diff --git a/kitty-make-kitty-build-again.patch b/kitty-make-kitty-build-again.patch
new file mode 100644
index 0000000..a26545e
--- /dev/null
+++ b/kitty-make-kitty-build-again.patch
@@ -0,0 +1,1100 @@
+From 037111715a78a946f9913bbdecb95d3d377d73b0 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 11:34:29 +0530
+Subject: [PATCH 01/11] ...
+
+---
+ docs/layouts.rst | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/docs/layouts.rst b/docs/layouts.rst
+index 933db11ad..c6673b724 100644
+--- a/docs/layouts.rst
++++ b/docs/layouts.rst
+@@ -24,7 +24,7 @@ other in arbitrary arrangements, based on *Layouts*, see below for examples:
+
+ There are many different layouts available. They are all enabled by default,
+ you can switch layouts using :sc:`next_layout`. To control which layouts
+-are available use :opt:`enabled_layouts` the first listed layout becomes
++are available use :opt:`enabled_layouts`, the first listed layout becomes
+ the default. Individual layouts and how to use them are described below.
+
+ .. contents::
+
+From 33a84a609ccc5f21f487214a06b73848ea009551 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 11:35:34 +0530
+Subject: [PATCH 02/11] ...
+
+---
+ docs/changelog.rst | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/docs/changelog.rst b/docs/changelog.rst
+index cb1283211..f89a770aa 100644
+--- a/docs/changelog.rst
++++ b/docs/changelog.rst
+@@ -7,7 +7,7 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
+ 0.17.0 [2020-03-24]
+ --------------------
+
+-- A new :ref:`splits_layout` to arrange windows in arbitrary splits
++- :ref:`splits_layout` to arrange windows in arbitrary splits
+ (:iss:`2308`)
+
+ - Add support for specifying a background image, see :opt:`background_image`
+
+From c4f7c5c1cd337af14ac4a2c49ff5eeccbaec329f Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 11:58:30 +0530
+Subject: [PATCH 03/11] More explanation for OSC 52 extension
+
+---
+ docs/protocol-extensions.rst | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/docs/protocol-extensions.rst b/docs/protocol-extensions.rst
+index c91bdfc68..1a9bc0ae6 100644
+--- a/docs/protocol-extensions.rst
++++ b/docs/protocol-extensions.rst
+@@ -219,6 +219,11 @@ first, for example::
+ <ESC>]52;c;!<ESC>\
+
+ Here ``!`` is not valid base64 encoded text, so it clears the clipboard.
++Further, since it is invalid, it should be ignored by terminal emulators
++that do not support this extension, thereby making it safe to use, simply
++always send it before starting a new OSC 52 paste, even if you aren't chunking
++up large pastes, that way kitty wont concatenate your paste, and it will have
++no ill-effects in other terminal emulators.
+
+ In case you're using software that can't be easily adapted to this
+ protocol extension, it can be disabled by specifying ``no-append`` to the
+
+From 5227b1f98b5353a1a0f4e58ae19335ffa89257e3 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 15:53:13 +0530
+Subject: [PATCH 04/11] Fix :opt:`cursor_underline_thickness` not working
+
+Fixes #2465
+---
+ docs/changelog.rst | 7 +++++++
+ kitty/fonts.c | 2 +-
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/docs/changelog.rst b/docs/changelog.rst
+index f89a770aa..3bd8e3579 100644
+--- a/docs/changelog.rst
++++ b/docs/changelog.rst
+@@ -4,6 +4,13 @@ Changelog
+ |kitty| is a feature full, cross-platform, *fast*, GPU based terminal emulator.
+ To update |kitty|, :doc:`follow the instructions <binary>`.
+
++0.17.1 [future]
++--------------------
++
++- Fix :opt:`cursor_underline_thickness` not working (:iss:`2465`)
++
++
++- :ref:`splits_layout` to arrange windows in arbitrary splits
+ 0.17.0 [2020-03-24]
+ --------------------
+
+diff --git a/kitty/fonts.c b/kitty/fonts.c
+index 54e697665..b045587f5 100644
+--- a/kitty/fonts.c
++++ b/kitty/fonts.c
+@@ -1243,7 +1243,7 @@ send_prerendered_sprites(FontGroup *fg) {
+ current_send_sprite_to_gpu((FONTS_DATA_HANDLE)fg, x, y, z, fg->canvas);
+ do_increment(fg, &error);
+ if (error != 0) { sprite_map_set_error(error); PyErr_Print(); fatal("Failed"); }
+- PyObject *args = PyObject_CallFunction(prerender_function, "IIIIIffdd", fg->cell_width, fg->cell_height, fg->baseline, fg->underline_position, fg->underline_thickness, OPT(cursor_beam_thickness), fg->logical_dpi_x, fg->logical_dpi_y);
++ PyObject *args = PyObject_CallFunction(prerender_function, "IIIIIffdd", fg->cell_width, fg->cell_height, fg->baseline, fg->underline_position, fg->underline_thickness, OPT(cursor_beam_thickness), OPT(cursor_underline_thickness), fg->logical_dpi_x, fg->logical_dpi_y);
+ if (args == NULL) { PyErr_Print(); fatal("Failed to pre-render cells"); }
+ for (ssize_t i = 0; i < PyTuple_GET_SIZE(args) - 1; i++) {
+ x = fg->sprite_tracker.x; y = fg->sprite_tracker.y; z = fg->sprite_tracker.z;
+
+From 0d87b8fac5168171493cb0d8cef85d60e564c0b0 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 16:05:02 +0530
+Subject: [PATCH 05/11] Fix a regression in 0.17 that caused tab bar background
+ to be rendered after the last tab as well
+
+Fixes #2464
+---
+ docs/changelog.rst | 3 +++
+ kitty/tab_bar.py | 5 ++++-
+ 2 files changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/docs/changelog.rst b/docs/changelog.rst
+index 3bd8e3579..e5f189f2b 100644
+--- a/docs/changelog.rst
++++ b/docs/changelog.rst
+@@ -9,6 +9,9 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
+
+ - Fix :opt:`cursor_underline_thickness` not working (:iss:`2465`)
+
++- Fix a regression in 0.17 that caused tab bar background to be rendered after
++ the last tab as well (:iss:`2464`)
++
+
+ - :ref:`splits_layout` to arrange windows in arbitrary splits
+ 0.17.0 [2020-03-24]
+diff --git a/kitty/tab_bar.py b/kitty/tab_bar.py
+index 1b111eaa0..3d97741b9 100644
+--- a/kitty/tab_bar.py
++++ b/kitty/tab_bar.py
+@@ -66,6 +66,8 @@ def draw_title(draw_data: DrawData, screen: Screen, tab: TabBarData, index: int)
+
+
+ def draw_tab_with_separator(draw_data: DrawData, screen: Screen, tab: TabBarData, before: int, max_title_length: int, index: int, is_last: bool) -> int:
++ tab_bg = draw_data.active_bg if tab.is_active else draw_data.inactive_bg
++ screen.cursor.bg = as_rgb(color_as_int(tab_bg))
+ if draw_data.leading_spaces:
+ screen.draw(' ' * draw_data.leading_spaces)
+ draw_title(draw_data, screen, tab, index)
+@@ -138,6 +140,7 @@ def draw_tab_with_powerline(draw_data: DrawData, screen: Screen, tab: TabBarData
+ screen.draw(' ')
+ start_draw = 1
+
++ screen.cursor.bg = tab_bg
+ if min_title_length >= max_title_length:
+ screen.draw('')
+ else:
+@@ -179,7 +182,7 @@ def __init__(self, os_window_id: int, opts: Options):
+ s.color_profile.update_ansi_color_table(build_ansi_color_table(opts))
+ s.color_profile.set_configured_colors(
+ color_as_int(opts.inactive_tab_foreground),
+- color_as_int(opts.inactive_tab_background)
++ color_as_int(opts.background)
+ )
+ self.blank_rects: Tuple[Rect, ...] = ()
+ sep = opts.tab_separator
+
+From b0b8222a9672bd3865d0b42f9005e797cabd570c Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 17:04:17 +0530
+Subject: [PATCH 06/11] ...
+
+---
+ docs/changelog.rst | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/docs/changelog.rst b/docs/changelog.rst
+index e5f189f2b..e9e137b43 100644
+--- a/docs/changelog.rst
++++ b/docs/changelog.rst
+@@ -13,7 +13,6 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
+ the last tab as well (:iss:`2464`)
+
+
+-- :ref:`splits_layout` to arrange windows in arbitrary splits
+ 0.17.0 [2020-03-24]
+ --------------------
+
+
+From 76a6bba64310024c2780ff26e5bbcd3f8b520b38 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 17:07:37 +0530
+Subject: [PATCH 07/11] Fix #2466
+
+---
+ glfw/glfw.py | 6 +-
+ kitty/glfw-wrapper.c | 1 +
+ kitty/glfw-wrapper.h | 275 ++++++++++++++++++++++---------------------
+ 3 files changed, 145 insertions(+), 137 deletions(-)
+
+diff --git a/glfw/glfw.py b/glfw/glfw.py
+index 77e2dee68..41c36daaa 100755
+--- a/glfw/glfw.py
++++ b/glfw/glfw.py
+@@ -165,7 +165,7 @@ def __init__(self, declaration: str, check_fail: bool = True):
+ self.args = [Arg('void v')]
+
+ def declaration(self) -> str:
+- return 'typedef {restype} (*{name}_func)({args});\n{name}_func {name}_impl;\n#define {name} {name}_impl'.format(
++ return 'typedef {restype} (*{name}_func)({args});\nGFW_EXTERN {name}_func {name}_impl;\n#define {name} {name}_impl'.format(
+ restype=self.restype,
+ name=self.name,
+ args=', '.join(a.type for a in self.args)
+@@ -233,6 +233,9 @@ def generate_wrappers(glfw_header: str) -> None:
+ #include <stdint.h>
+ #include "monotonic.h"
+
++#ifndef GFW_EXTERN
++#define GFW_EXTERN extern
++#endif
+ {}
+
+ typedef int (* GLFWcocoatextinputfilterfun)(int,int,unsigned int,unsigned long);
+@@ -251,6 +254,7 @@ def generate_wrappers(glfw_header: str) -> None:
+ f.write(header)
+
+ code = '''
++#define GFW_EXTERN
+ #include "data-types.h"
+ #include "glfw-wrapper.h"
+ #include <dlfcn.h>
+diff --git a/kitty/glfw-wrapper.c b/kitty/glfw-wrapper.c
+index 1159529bf..3833977ee 100644
+--- a/kitty/glfw-wrapper.c
++++ b/kitty/glfw-wrapper.c
+@@ -1,4 +1,5 @@
+
++#define GFW_EXTERN
+ #include "data-types.h"
+ #include "glfw-wrapper.h"
+ #include <dlfcn.h>
+diff --git a/kitty/glfw-wrapper.h b/kitty/glfw-wrapper.h
+index ac4629f3a..b7a816761 100644
+--- a/kitty/glfw-wrapper.h
++++ b/kitty/glfw-wrapper.h
+@@ -9,6 +9,9 @@
+ #include <stdint.h>
+ #include "monotonic.h"
+
++#ifndef GFW_EXTERN
++#define GFW_EXTERN extern
++#endif
+
+
+ /*! @name GLFW version macros
+@@ -1587,547 +1590,547 @@ typedef void (*GLFWwaylandframecallbackfunc)(unsigned long long id);
+ typedef void (*GLFWDBusnotificationcreatedfun)(unsigned long long, uint32_t, void*);
+ typedef void (*GLFWDBusnotificationactivatedfun)(uint32_t, const char*);
+ typedef int (*glfwInit_func)(monotonic_t);
+-glfwInit_func glfwInit_impl;
++GFW_EXTERN glfwInit_func glfwInit_impl;
+ #define glfwInit glfwInit_impl
+
+ typedef void (*glfwRunMainLoop_func)(GLFWtickcallback, void*);
+-glfwRunMainLoop_func glfwRunMainLoop_impl;
++GFW_EXTERN glfwRunMainLoop_func glfwRunMainLoop_impl;
+ #define glfwRunMainLoop glfwRunMainLoop_impl
+
+ typedef void (*glfwStopMainLoop_func)(void);
+-glfwStopMainLoop_func glfwStopMainLoop_impl;
++GFW_EXTERN glfwStopMainLoop_func glfwStopMainLoop_impl;
+ #define glfwStopMainLoop glfwStopMainLoop_impl
+
+ typedef unsigned long long (*glfwAddTimer_func)(monotonic_t, bool, GLFWuserdatafun, void *, GLFWuserdatafun);
+-glfwAddTimer_func glfwAddTimer_impl;
++GFW_EXTERN glfwAddTimer_func glfwAddTimer_impl;
+ #define glfwAddTimer glfwAddTimer_impl
+
+ typedef void (*glfwUpdateTimer_func)(unsigned long long, monotonic_t, bool);
+-glfwUpdateTimer_func glfwUpdateTimer_impl;
++GFW_EXTERN glfwUpdateTimer_func glfwUpdateTimer_impl;
+ #define glfwUpdateTimer glfwUpdateTimer_impl
+
+ typedef void (*glfwRemoveTimer_func)(unsigned long);
+-glfwRemoveTimer_func glfwRemoveTimer_impl;
++GFW_EXTERN glfwRemoveTimer_func glfwRemoveTimer_impl;
+ #define glfwRemoveTimer glfwRemoveTimer_impl
+
+ typedef void (*glfwTerminate_func)(void);
+-glfwTerminate_func glfwTerminate_impl;
++GFW_EXTERN glfwTerminate_func glfwTerminate_impl;
+ #define glfwTerminate glfwTerminate_impl
+
+ typedef void (*glfwInitHint_func)(int, int);
+-glfwInitHint_func glfwInitHint_impl;
++GFW_EXTERN glfwInitHint_func glfwInitHint_impl;
+ #define glfwInitHint glfwInitHint_impl
+
+ typedef void (*glfwGetVersion_func)(int*, int*, int*);
+-glfwGetVersion_func glfwGetVersion_impl;
++GFW_EXTERN glfwGetVersion_func glfwGetVersion_impl;
+ #define glfwGetVersion glfwGetVersion_impl
+
+ typedef const char* (*glfwGetVersionString_func)(void);
+-glfwGetVersionString_func glfwGetVersionString_impl;
++GFW_EXTERN glfwGetVersionString_func glfwGetVersionString_impl;
+ #define glfwGetVersionString glfwGetVersionString_impl
+
+ typedef int (*glfwGetError_func)(const char**);
+-glfwGetError_func glfwGetError_impl;
++GFW_EXTERN glfwGetError_func glfwGetError_impl;
+ #define glfwGetError glfwGetError_impl
+
+ typedef GLFWerrorfun (*glfwSetErrorCallback_func)(GLFWerrorfun);
+-glfwSetErrorCallback_func glfwSetErrorCallback_impl;
++GFW_EXTERN glfwSetErrorCallback_func glfwSetErrorCallback_impl;
+ #define glfwSetErrorCallback glfwSetErrorCallback_impl
+
+ typedef GLFWmonitor** (*glfwGetMonitors_func)(int*);
+-glfwGetMonitors_func glfwGetMonitors_impl;
++GFW_EXTERN glfwGetMonitors_func glfwGetMonitors_impl;
+ #define glfwGetMonitors glfwGetMonitors_impl
+
+ typedef GLFWmonitor* (*glfwGetPrimaryMonitor_func)(void);
+-glfwGetPrimaryMonitor_func glfwGetPrimaryMonitor_impl;
++GFW_EXTERN glfwGetPrimaryMonitor_func glfwGetPrimaryMonitor_impl;
+ #define glfwGetPrimaryMonitor glfwGetPrimaryMonitor_impl
+
+ typedef void (*glfwGetMonitorPos_func)(GLFWmonitor*, int*, int*);
+-glfwGetMonitorPos_func glfwGetMonitorPos_impl;
++GFW_EXTERN glfwGetMonitorPos_func glfwGetMonitorPos_impl;
+ #define glfwGetMonitorPos glfwGetMonitorPos_impl
+
+ typedef void (*glfwGetMonitorWorkarea_func)(GLFWmonitor*, int*, int*, int*, int*);
+-glfwGetMonitorWorkarea_func glfwGetMonitorWorkarea_impl;
++GFW_EXTERN glfwGetMonitorWorkarea_func glfwGetMonitorWorkarea_impl;
+ #define glfwGetMonitorWorkarea glfwGetMonitorWorkarea_impl
+
+ typedef void (*glfwGetMonitorPhysicalSize_func)(GLFWmonitor*, int*, int*);
+-glfwGetMonitorPhysicalSize_func glfwGetMonitorPhysicalSize_impl;
++GFW_EXTERN glfwGetMonitorPhysicalSize_func glfwGetMonitorPhysicalSize_impl;
+ #define glfwGetMonitorPhysicalSize glfwGetMonitorPhysicalSize_impl
+
+ typedef void (*glfwGetMonitorContentScale_func)(GLFWmonitor*, float*, float*);
+-glfwGetMonitorContentScale_func glfwGetMonitorContentScale_impl;
++GFW_EXTERN glfwGetMonitorContentScale_func glfwGetMonitorContentScale_impl;
+ #define glfwGetMonitorContentScale glfwGetMonitorContentScale_impl
+
+ typedef const char* (*glfwGetMonitorName_func)(GLFWmonitor*);
+-glfwGetMonitorName_func glfwGetMonitorName_impl;
++GFW_EXTERN glfwGetMonitorName_func glfwGetMonitorName_impl;
+ #define glfwGetMonitorName glfwGetMonitorName_impl
+
+ typedef void (*glfwSetMonitorUserPointer_func)(GLFWmonitor*, void*);
+-glfwSetMonitorUserPointer_func glfwSetMonitorUserPointer_impl;
++GFW_EXTERN glfwSetMonitorUserPointer_func glfwSetMonitorUserPointer_impl;
+ #define glfwSetMonitorUserPointer glfwSetMonitorUserPointer_impl
+
+ typedef void* (*glfwGetMonitorUserPointer_func)(GLFWmonitor*);
+-glfwGetMonitorUserPointer_func glfwGetMonitorUserPointer_impl;
++GFW_EXTERN glfwGetMonitorUserPointer_func glfwGetMonitorUserPointer_impl;
+ #define glfwGetMonitorUserPointer glfwGetMonitorUserPointer_impl
+
+ typedef GLFWmonitorfun (*glfwSetMonitorCallback_func)(GLFWmonitorfun);
+-glfwSetMonitorCallback_func glfwSetMonitorCallback_impl;
++GFW_EXTERN glfwSetMonitorCallback_func glfwSetMonitorCallback_impl;
+ #define glfwSetMonitorCallback glfwSetMonitorCallback_impl
+
+ typedef const GLFWvidmode* (*glfwGetVideoModes_func)(GLFWmonitor*, int*);
+-glfwGetVideoModes_func glfwGetVideoModes_impl;
++GFW_EXTERN glfwGetVideoModes_func glfwGetVideoModes_impl;
+ #define glfwGetVideoModes glfwGetVideoModes_impl
+
+ typedef const GLFWvidmode* (*glfwGetVideoMode_func)(GLFWmonitor*);
+-glfwGetVideoMode_func glfwGetVideoMode_impl;
++GFW_EXTERN glfwGetVideoMode_func glfwGetVideoMode_impl;
+ #define glfwGetVideoMode glfwGetVideoMode_impl
+
+ typedef void (*glfwSetGamma_func)(GLFWmonitor*, float);
+-glfwSetGamma_func glfwSetGamma_impl;
++GFW_EXTERN glfwSetGamma_func glfwSetGamma_impl;
+ #define glfwSetGamma glfwSetGamma_impl
+
+ typedef const GLFWgammaramp* (*glfwGetGammaRamp_func)(GLFWmonitor*);
+-glfwGetGammaRamp_func glfwGetGammaRamp_impl;
++GFW_EXTERN glfwGetGammaRamp_func glfwGetGammaRamp_impl;
+ #define glfwGetGammaRamp glfwGetGammaRamp_impl
+
+ typedef void (*glfwSetGammaRamp_func)(GLFWmonitor*, const GLFWgammaramp*);
+-glfwSetGammaRamp_func glfwSetGammaRamp_impl;
++GFW_EXTERN glfwSetGammaRamp_func glfwSetGammaRamp_impl;
+ #define glfwSetGammaRamp glfwSetGammaRamp_impl
+
+ typedef void (*glfwDefaultWindowHints_func)(void);
+-glfwDefaultWindowHints_func glfwDefaultWindowHints_impl;
++GFW_EXTERN glfwDefaultWindowHints_func glfwDefaultWindowHints_impl;
+ #define glfwDefaultWindowHints glfwDefaultWindowHints_impl
+
+ typedef void (*glfwWindowHint_func)(int, int);
+-glfwWindowHint_func glfwWindowHint_impl;
++GFW_EXTERN glfwWindowHint_func glfwWindowHint_impl;
+ #define glfwWindowHint glfwWindowHint_impl
+
+ typedef void (*glfwWindowHintString_func)(int, const char*);
+-glfwWindowHintString_func glfwWindowHintString_impl;
++GFW_EXTERN glfwWindowHintString_func glfwWindowHintString_impl;
+ #define glfwWindowHintString glfwWindowHintString_impl
+
+ typedef GLFWwindow* (*glfwCreateWindow_func)(int, int, const char*, GLFWmonitor*, GLFWwindow*);
+-glfwCreateWindow_func glfwCreateWindow_impl;
++GFW_EXTERN glfwCreateWindow_func glfwCreateWindow_impl;
+ #define glfwCreateWindow glfwCreateWindow_impl
+
+ typedef bool (*glfwToggleFullscreen_func)(GLFWwindow*, unsigned int);
+-glfwToggleFullscreen_func glfwToggleFullscreen_impl;
++GFW_EXTERN glfwToggleFullscreen_func glfwToggleFullscreen_impl;
+ #define glfwToggleFullscreen glfwToggleFullscreen_impl
+
+ typedef void (*glfwDestroyWindow_func)(GLFWwindow*);
+-glfwDestroyWindow_func glfwDestroyWindow_impl;
++GFW_EXTERN glfwDestroyWindow_func glfwDestroyWindow_impl;
+ #define glfwDestroyWindow glfwDestroyWindow_impl
+
+ typedef int (*glfwWindowShouldClose_func)(GLFWwindow*);
+-glfwWindowShouldClose_func glfwWindowShouldClose_impl;
++GFW_EXTERN glfwWindowShouldClose_func glfwWindowShouldClose_impl;
+ #define glfwWindowShouldClose glfwWindowShouldClose_impl
+
+ typedef void (*glfwSetWindowShouldClose_func)(GLFWwindow*, int);
+-glfwSetWindowShouldClose_func glfwSetWindowShouldClose_impl;
++GFW_EXTERN glfwSetWindowShouldClose_func glfwSetWindowShouldClose_impl;
+ #define glfwSetWindowShouldClose glfwSetWindowShouldClose_impl
+
+ typedef void (*glfwSetWindowTitle_func)(GLFWwindow*, const char*);
+-glfwSetWindowTitle_func glfwSetWindowTitle_impl;
++GFW_EXTERN glfwSetWindowTitle_func glfwSetWindowTitle_impl;
+ #define glfwSetWindowTitle glfwSetWindowTitle_impl
+
+ typedef void (*glfwSetWindowIcon_func)(GLFWwindow*, int, const GLFWimage*);
+-glfwSetWindowIcon_func glfwSetWindowIcon_impl;
++GFW_EXTERN glfwSetWindowIcon_func glfwSetWindowIcon_impl;
+ #define glfwSetWindowIcon glfwSetWindowIcon_impl
+
+ typedef void (*glfwGetWindowPos_func)(GLFWwindow*, int*, int*);
+-glfwGetWindowPos_func glfwGetWindowPos_impl;
++GFW_EXTERN glfwGetWindowPos_func glfwGetWindowPos_impl;
+ #define glfwGetWindowPos glfwGetWindowPos_impl
+
+ typedef void (*glfwSetWindowPos_func)(GLFWwindow*, int, int);
+-glfwSetWindowPos_func glfwSetWindowPos_impl;
++GFW_EXTERN glfwSetWindowPos_func glfwSetWindowPos_impl;
+ #define glfwSetWindowPos glfwSetWindowPos_impl
+
+ typedef void (*glfwGetWindowSize_func)(GLFWwindow*, int*, int*);
+-glfwGetWindowSize_func glfwGetWindowSize_impl;
++GFW_EXTERN glfwGetWindowSize_func glfwGetWindowSize_impl;
+ #define glfwGetWindowSize glfwGetWindowSize_impl
+
+ typedef void (*glfwSetWindowSizeLimits_func)(GLFWwindow*, int, int, int, int);
+-glfwSetWindowSizeLimits_func glfwSetWindowSizeLimits_impl;
++GFW_EXTERN glfwSetWindowSizeLimits_func glfwSetWindowSizeLimits_impl;
+ #define glfwSetWindowSizeLimits glfwSetWindowSizeLimits_impl
+
+ typedef void (*glfwSetWindowSizeIncrements_func)(GLFWwindow*, int, int);
+-glfwSetWindowSizeIncrements_func glfwSetWindowSizeIncrements_impl;
++GFW_EXTERN glfwSetWindowSizeIncrements_func glfwSetWindowSizeIncrements_impl;
+ #define glfwSetWindowSizeIncrements glfwSetWindowSizeIncrements_impl
+
+ typedef void (*glfwSetWindowAspectRatio_func)(GLFWwindow*, int, int);
+-glfwSetWindowAspectRatio_func glfwSetWindowAspectRatio_impl;
++GFW_EXTERN glfwSetWindowAspectRatio_func glfwSetWindowAspectRatio_impl;
+ #define glfwSetWindowAspectRatio glfwSetWindowAspectRatio_impl
+
+ typedef void (*glfwSetWindowSize_func)(GLFWwindow*, int, int);
+-glfwSetWindowSize_func glfwSetWindowSize_impl;
++GFW_EXTERN glfwSetWindowSize_func glfwSetWindowSize_impl;
+ #define glfwSetWindowSize glfwSetWindowSize_impl
+
+ typedef void (*glfwGetFramebufferSize_func)(GLFWwindow*, int*, int*);
+-glfwGetFramebufferSize_func glfwGetFramebufferSize_impl;
++GFW_EXTERN glfwGetFramebufferSize_func glfwGetFramebufferSize_impl;
+ #define glfwGetFramebufferSize glfwGetFramebufferSize_impl
+
+ typedef void (*glfwGetWindowFrameSize_func)(GLFWwindow*, int*, int*, int*, int*);
+-glfwGetWindowFrameSize_func glfwGetWindowFrameSize_impl;
++GFW_EXTERN glfwGetWindowFrameSize_func glfwGetWindowFrameSize_impl;
+ #define glfwGetWindowFrameSize glfwGetWindowFrameSize_impl
+
+ typedef void (*glfwGetWindowContentScale_func)(GLFWwindow*, float*, float*);
+-glfwGetWindowContentScale_func glfwGetWindowContentScale_impl;
++GFW_EXTERN glfwGetWindowContentScale_func glfwGetWindowContentScale_impl;
+ #define glfwGetWindowContentScale glfwGetWindowContentScale_impl
+
+ typedef monotonic_t (*glfwGetDoubleClickInterval_func)(GLFWwindow*);
+-glfwGetDoubleClickInterval_func glfwGetDoubleClickInterval_impl;
++GFW_EXTERN glfwGetDoubleClickInterval_func glfwGetDoubleClickInterval_impl;
+ #define glfwGetDoubleClickInterval glfwGetDoubleClickInterval_impl
+
+ typedef float (*glfwGetWindowOpacity_func)(GLFWwindow*);
+-glfwGetWindowOpacity_func glfwGetWindowOpacity_impl;
++GFW_EXTERN glfwGetWindowOpacity_func glfwGetWindowOpacity_impl;
+ #define glfwGetWindowOpacity glfwGetWindowOpacity_impl
+
+ typedef void (*glfwSetWindowOpacity_func)(GLFWwindow*, float);
+-glfwSetWindowOpacity_func glfwSetWindowOpacity_impl;
++GFW_EXTERN glfwSetWindowOpacity_func glfwSetWindowOpacity_impl;
+ #define glfwSetWindowOpacity glfwSetWindowOpacity_impl
+
+ typedef void (*glfwIconifyWindow_func)(GLFWwindow*);
+-glfwIconifyWindow_func glfwIconifyWindow_impl;
++GFW_EXTERN glfwIconifyWindow_func glfwIconifyWindow_impl;
+ #define glfwIconifyWindow glfwIconifyWindow_impl
+
+ typedef void (*glfwRestoreWindow_func)(GLFWwindow*);
+-glfwRestoreWindow_func glfwRestoreWindow_impl;
++GFW_EXTERN glfwRestoreWindow_func glfwRestoreWindow_impl;
+ #define glfwRestoreWindow glfwRestoreWindow_impl
+
+ typedef void (*glfwMaximizeWindow_func)(GLFWwindow*);
+-glfwMaximizeWindow_func glfwMaximizeWindow_impl;
++GFW_EXTERN glfwMaximizeWindow_func glfwMaximizeWindow_impl;
+ #define glfwMaximizeWindow glfwMaximizeWindow_impl
+
+ typedef void (*glfwShowWindow_func)(GLFWwindow*);
+-glfwShowWindow_func glfwShowWindow_impl;
++GFW_EXTERN glfwShowWindow_func glfwShowWindow_impl;
+ #define glfwShowWindow glfwShowWindow_impl
+
+ typedef void (*glfwHideWindow_func)(GLFWwindow*);
+-glfwHideWindow_func glfwHideWindow_impl;
++GFW_EXTERN glfwHideWindow_func glfwHideWindow_impl;
+ #define glfwHideWindow glfwHideWindow_impl
+
+ typedef void (*glfwFocusWindow_func)(GLFWwindow*);
+-glfwFocusWindow_func glfwFocusWindow_impl;
++GFW_EXTERN glfwFocusWindow_func glfwFocusWindow_impl;
+ #define glfwFocusWindow glfwFocusWindow_impl
+
+ typedef void (*glfwRequestWindowAttention_func)(GLFWwindow*);
+-glfwRequestWindowAttention_func glfwRequestWindowAttention_impl;
++GFW_EXTERN glfwRequestWindowAttention_func glfwRequestWindowAttention_impl;
+ #define glfwRequestWindowAttention glfwRequestWindowAttention_impl
+
+ typedef int (*glfwWindowBell_func)(GLFWwindow*);
+-glfwWindowBell_func glfwWindowBell_impl;
++GFW_EXTERN glfwWindowBell_func glfwWindowBell_impl;
+ #define glfwWindowBell glfwWindowBell_impl
+
+ typedef GLFWmonitor* (*glfwGetWindowMonitor_func)(GLFWwindow*);
+-glfwGetWindowMonitor_func glfwGetWindowMonitor_impl;
++GFW_EXTERN glfwGetWindowMonitor_func glfwGetWindowMonitor_impl;
+ #define glfwGetWindowMonitor glfwGetWindowMonitor_impl
+
+ typedef void (*glfwSetWindowMonitor_func)(GLFWwindow*, GLFWmonitor*, int, int, int, int, int);
+-glfwSetWindowMonitor_func glfwSetWindowMonitor_impl;
++GFW_EXTERN glfwSetWindowMonitor_func glfwSetWindowMonitor_impl;
+ #define glfwSetWindowMonitor glfwSetWindowMonitor_impl
+
+ typedef int (*glfwGetWindowAttrib_func)(GLFWwindow*, int);
+-glfwGetWindowAttrib_func glfwGetWindowAttrib_impl;
++GFW_EXTERN glfwGetWindowAttrib_func glfwGetWindowAttrib_impl;
+ #define glfwGetWindowAttrib glfwGetWindowAttrib_impl
+
+ typedef void (*glfwSetWindowAttrib_func)(GLFWwindow*, int, int);
+-glfwSetWindowAttrib_func glfwSetWindowAttrib_impl;
++GFW_EXTERN glfwSetWindowAttrib_func glfwSetWindowAttrib_impl;
+ #define glfwSetWindowAttrib glfwSetWindowAttrib_impl
+
+ typedef void (*glfwSetWindowUserPointer_func)(GLFWwindow*, void*);
+-glfwSetWindowUserPointer_func glfwSetWindowUserPointer_impl;
++GFW_EXTERN glfwSetWindowUserPointer_func glfwSetWindowUserPointer_impl;
+ #define glfwSetWindowUserPointer glfwSetWindowUserPointer_impl
+
+ typedef void* (*glfwGetWindowUserPointer_func)(GLFWwindow*);
+-glfwGetWindowUserPointer_func glfwGetWindowUserPointer_impl;
++GFW_EXTERN glfwGetWindowUserPointer_func glfwGetWindowUserPointer_impl;
+ #define glfwGetWindowUserPointer glfwGetWindowUserPointer_impl
+
+ typedef GLFWwindowposfun (*glfwSetWindowPosCallback_func)(GLFWwindow*, GLFWwindowposfun);
+-glfwSetWindowPosCallback_func glfwSetWindowPosCallback_impl;
++GFW_EXTERN glfwSetWindowPosCallback_func glfwSetWindowPosCallback_impl;
+ #define glfwSetWindowPosCallback glfwSetWindowPosCallback_impl
+
+ typedef GLFWwindowsizefun (*glfwSetWindowSizeCallback_func)(GLFWwindow*, GLFWwindowsizefun);
+-glfwSetWindowSizeCallback_func glfwSetWindowSizeCallback_impl;
++GFW_EXTERN glfwSetWindowSizeCallback_func glfwSetWindowSizeCallback_impl;
+ #define glfwSetWindowSizeCallback glfwSetWindowSizeCallback_impl
+
+ typedef GLFWwindowclosefun (*glfwSetWindowCloseCallback_func)(GLFWwindow*, GLFWwindowclosefun);
+-glfwSetWindowCloseCallback_func glfwSetWindowCloseCallback_impl;
++GFW_EXTERN glfwSetWindowCloseCallback_func glfwSetWindowCloseCallback_impl;
+ #define glfwSetWindowCloseCallback glfwSetWindowCloseCallback_impl
+
+ typedef GLFWwindowrefreshfun (*glfwSetWindowRefreshCallback_func)(GLFWwindow*, GLFWwindowrefreshfun);
+-glfwSetWindowRefreshCallback_func glfwSetWindowRefreshCallback_impl;
++GFW_EXTERN glfwSetWindowRefreshCallback_func glfwSetWindowRefreshCallback_impl;
+ #define glfwSetWindowRefreshCallback glfwSetWindowRefreshCallback_impl
+
+ typedef GLFWwindowfocusfun (*glfwSetWindowFocusCallback_func)(GLFWwindow*, GLFWwindowfocusfun);
+-glfwSetWindowFocusCallback_func glfwSetWindowFocusCallback_impl;
++GFW_EXTERN glfwSetWindowFocusCallback_func glfwSetWindowFocusCallback_impl;
+ #define glfwSetWindowFocusCallback glfwSetWindowFocusCallback_impl
+
+ typedef GLFWwindowocclusionfun (*glfwSetWindowOcclusionCallback_func)(GLFWwindow*, GLFWwindowocclusionfun);
+-glfwSetWindowOcclusionCallback_func glfwSetWindowOcclusionCallback_impl;
++GFW_EXTERN glfwSetWindowOcclusionCallback_func glfwSetWindowOcclusionCallback_impl;
+ #define glfwSetWindowOcclusionCallback glfwSetWindowOcclusionCallback_impl
+
+ typedef GLFWwindowiconifyfun (*glfwSetWindowIconifyCallback_func)(GLFWwindow*, GLFWwindowiconifyfun);
+-glfwSetWindowIconifyCallback_func glfwSetWindowIconifyCallback_impl;
++GFW_EXTERN glfwSetWindowIconifyCallback_func glfwSetWindowIconifyCallback_impl;
+ #define glfwSetWindowIconifyCallback glfwSetWindowIconifyCallback_impl
+
+ typedef GLFWwindowmaximizefun (*glfwSetWindowMaximizeCallback_func)(GLFWwindow*, GLFWwindowmaximizefun);
+-glfwSetWindowMaximizeCallback_func glfwSetWindowMaximizeCallback_impl;
++GFW_EXTERN glfwSetWindowMaximizeCallback_func glfwSetWindowMaximizeCallback_impl;
+ #define glfwSetWindowMaximizeCallback glfwSetWindowMaximizeCallback_impl
+
+ typedef GLFWframebuffersizefun (*glfwSetFramebufferSizeCallback_func)(GLFWwindow*, GLFWframebuffersizefun);
+-glfwSetFramebufferSizeCallback_func glfwSetFramebufferSizeCallback_impl;
++GFW_EXTERN glfwSetFramebufferSizeCallback_func glfwSetFramebufferSizeCallback_impl;
+ #define glfwSetFramebufferSizeCallback glfwSetFramebufferSizeCallback_impl
+
+ typedef GLFWwindowcontentscalefun (*glfwSetWindowContentScaleCallback_func)(GLFWwindow*, GLFWwindowcontentscalefun);
+-glfwSetWindowContentScaleCallback_func glfwSetWindowContentScaleCallback_impl;
++GFW_EXTERN glfwSetWindowContentScaleCallback_func glfwSetWindowContentScaleCallback_impl;
+ #define glfwSetWindowContentScaleCallback glfwSetWindowContentScaleCallback_impl
+
+ typedef void (*glfwPostEmptyEvent_func)(void);
+-glfwPostEmptyEvent_func glfwPostEmptyEvent_impl;
++GFW_EXTERN glfwPostEmptyEvent_func glfwPostEmptyEvent_impl;
+ #define glfwPostEmptyEvent glfwPostEmptyEvent_impl
+
+ typedef int (*glfwGetInputMode_func)(GLFWwindow*, int);
+-glfwGetInputMode_func glfwGetInputMode_impl;
++GFW_EXTERN glfwGetInputMode_func glfwGetInputMode_impl;
+ #define glfwGetInputMode glfwGetInputMode_impl
+
+ typedef void (*glfwSetInputMode_func)(GLFWwindow*, int, int);
+-glfwSetInputMode_func glfwSetInputMode_impl;
++GFW_EXTERN glfwSetInputMode_func glfwSetInputMode_impl;
+ #define glfwSetInputMode glfwSetInputMode_impl
+
+ typedef const char* (*glfwGetKeyName_func)(int, int);
+-glfwGetKeyName_func glfwGetKeyName_impl;
++GFW_EXTERN glfwGetKeyName_func glfwGetKeyName_impl;
+ #define glfwGetKeyName glfwGetKeyName_impl
+
+ typedef int (*glfwGetNativeKeyForKey_func)(int);
+-glfwGetNativeKeyForKey_func glfwGetNativeKeyForKey_impl;
++GFW_EXTERN glfwGetNativeKeyForKey_func glfwGetNativeKeyForKey_impl;
+ #define glfwGetNativeKeyForKey glfwGetNativeKeyForKey_impl
+
+ typedef int (*glfwGetKey_func)(GLFWwindow*, int);
+-glfwGetKey_func glfwGetKey_impl;
++GFW_EXTERN glfwGetKey_func glfwGetKey_impl;
+ #define glfwGetKey glfwGetKey_impl
+
+ typedef int (*glfwGetMouseButton_func)(GLFWwindow*, int);
+-glfwGetMouseButton_func glfwGetMouseButton_impl;
++GFW_EXTERN glfwGetMouseButton_func glfwGetMouseButton_impl;
+ #define glfwGetMouseButton glfwGetMouseButton_impl
+
+ typedef void (*glfwGetCursorPos_func)(GLFWwindow*, double*, double*);
+-glfwGetCursorPos_func glfwGetCursorPos_impl;
++GFW_EXTERN glfwGetCursorPos_func glfwGetCursorPos_impl;
+ #define glfwGetCursorPos glfwGetCursorPos_impl
+
+ typedef void (*glfwSetCursorPos_func)(GLFWwindow*, double, double);
+-glfwSetCursorPos_func glfwSetCursorPos_impl;
++GFW_EXTERN glfwSetCursorPos_func glfwSetCursorPos_impl;
+ #define glfwSetCursorPos glfwSetCursorPos_impl
+
+ typedef GLFWcursor* (*glfwCreateCursor_func)(const GLFWimage*, int, int, int);
+-glfwCreateCursor_func glfwCreateCursor_impl;
++GFW_EXTERN glfwCreateCursor_func glfwCreateCursor_impl;
+ #define glfwCreateCursor glfwCreateCursor_impl
+
+ typedef GLFWcursor* (*glfwCreateStandardCursor_func)(GLFWCursorShape);
+-glfwCreateStandardCursor_func glfwCreateStandardCursor_impl;
++GFW_EXTERN glfwCreateStandardCursor_func glfwCreateStandardCursor_impl;
+ #define glfwCreateStandardCursor glfwCreateStandardCursor_impl
+
+ typedef void (*glfwDestroyCursor_func)(GLFWcursor*);
+-glfwDestroyCursor_func glfwDestroyCursor_impl;
++GFW_EXTERN glfwDestroyCursor_func glfwDestroyCursor_impl;
+ #define glfwDestroyCursor glfwDestroyCursor_impl
+
+ typedef void (*glfwSetCursor_func)(GLFWwindow*, GLFWcursor*);
+-glfwSetCursor_func glfwSetCursor_impl;
++GFW_EXTERN glfwSetCursor_func glfwSetCursor_impl;
+ #define glfwSetCursor glfwSetCursor_impl
+
+ typedef GLFWkeyboardfun (*glfwSetKeyboardCallback_func)(GLFWwindow*, GLFWkeyboardfun);
+-glfwSetKeyboardCallback_func glfwSetKeyboardCallback_impl;
++GFW_EXTERN glfwSetKeyboardCallback_func glfwSetKeyboardCallback_impl;
+ #define glfwSetKeyboardCallback glfwSetKeyboardCallback_impl
+
+ typedef void (*glfwUpdateIMEState_func)(GLFWwindow*, int, int, int, int, int);
+-glfwUpdateIMEState_func glfwUpdateIMEState_impl;
++GFW_EXTERN glfwUpdateIMEState_func glfwUpdateIMEState_impl;
+ #define glfwUpdateIMEState glfwUpdateIMEState_impl
+
+ typedef GLFWmousebuttonfun (*glfwSetMouseButtonCallback_func)(GLFWwindow*, GLFWmousebuttonfun);
+-glfwSetMouseButtonCallback_func glfwSetMouseButtonCallback_impl;
++GFW_EXTERN glfwSetMouseButtonCallback_func glfwSetMouseButtonCallback_impl;
+ #define glfwSetMouseButtonCallback glfwSetMouseButtonCallback_impl
+
+ typedef GLFWcursorposfun (*glfwSetCursorPosCallback_func)(GLFWwindow*, GLFWcursorposfun);
+-glfwSetCursorPosCallback_func glfwSetCursorPosCallback_impl;
++GFW_EXTERN glfwSetCursorPosCallback_func glfwSetCursorPosCallback_impl;
+ #define glfwSetCursorPosCallback glfwSetCursorPosCallback_impl
+
+ typedef GLFWcursorenterfun (*glfwSetCursorEnterCallback_func)(GLFWwindow*, GLFWcursorenterfun);
+-glfwSetCursorEnterCallback_func glfwSetCursorEnterCallback_impl;
++GFW_EXTERN glfwSetCursorEnterCallback_func glfwSetCursorEnterCallback_impl;
+ #define glfwSetCursorEnterCallback glfwSetCursorEnterCallback_impl
+
+ typedef GLFWscrollfun (*glfwSetScrollCallback_func)(GLFWwindow*, GLFWscrollfun);
+-glfwSetScrollCallback_func glfwSetScrollCallback_impl;
++GFW_EXTERN glfwSetScrollCallback_func glfwSetScrollCallback_impl;
+ #define glfwSetScrollCallback glfwSetScrollCallback_impl
+
+ typedef GLFWdropfun (*glfwSetDropCallback_func)(GLFWwindow*, GLFWdropfun);
+-glfwSetDropCallback_func glfwSetDropCallback_impl;
++GFW_EXTERN glfwSetDropCallback_func glfwSetDropCallback_impl;
+ #define glfwSetDropCallback glfwSetDropCallback_impl
+
+ typedef GLFWliveresizefun (*glfwSetLiveResizeCallback_func)(GLFWwindow*, GLFWliveresizefun);
+-glfwSetLiveResizeCallback_func glfwSetLiveResizeCallback_impl;
++GFW_EXTERN glfwSetLiveResizeCallback_func glfwSetLiveResizeCallback_impl;
+ #define glfwSetLiveResizeCallback glfwSetLiveResizeCallback_impl
+
+ typedef int (*glfwJoystickPresent_func)(int);
+-glfwJoystickPresent_func glfwJoystickPresent_impl;
++GFW_EXTERN glfwJoystickPresent_func glfwJoystickPresent_impl;
+ #define glfwJoystickPresent glfwJoystickPresent_impl
+
+ typedef const float* (*glfwGetJoystickAxes_func)(int, int*);
+-glfwGetJoystickAxes_func glfwGetJoystickAxes_impl;
++GFW_EXTERN glfwGetJoystickAxes_func glfwGetJoystickAxes_impl;
+ #define glfwGetJoystickAxes glfwGetJoystickAxes_impl
+
+ typedef const unsigned char* (*glfwGetJoystickButtons_func)(int, int*);
+-glfwGetJoystickButtons_func glfwGetJoystickButtons_impl;
++GFW_EXTERN glfwGetJoystickButtons_func glfwGetJoystickButtons_impl;
+ #define glfwGetJoystickButtons glfwGetJoystickButtons_impl
+
+ typedef const unsigned char* (*glfwGetJoystickHats_func)(int, int*);
+-glfwGetJoystickHats_func glfwGetJoystickHats_impl;
++GFW_EXTERN glfwGetJoystickHats_func glfwGetJoystickHats_impl;
+ #define glfwGetJoystickHats glfwGetJoystickHats_impl
+
+ typedef const char* (*glfwGetJoystickName_func)(int);
+-glfwGetJoystickName_func glfwGetJoystickName_impl;
++GFW_EXTERN glfwGetJoystickName_func glfwGetJoystickName_impl;
+ #define glfwGetJoystickName glfwGetJoystickName_impl
+
+ typedef const char* (*glfwGetJoystickGUID_func)(int);
+-glfwGetJoystickGUID_func glfwGetJoystickGUID_impl;
++GFW_EXTERN glfwGetJoystickGUID_func glfwGetJoystickGUID_impl;
+ #define glfwGetJoystickGUID glfwGetJoystickGUID_impl
+
+ typedef void (*glfwSetJoystickUserPointer_func)(int, void*);
+-glfwSetJoystickUserPointer_func glfwSetJoystickUserPointer_impl;
++GFW_EXTERN glfwSetJoystickUserPointer_func glfwSetJoystickUserPointer_impl;
+ #define glfwSetJoystickUserPointer glfwSetJoystickUserPointer_impl
+
+ typedef void* (*glfwGetJoystickUserPointer_func)(int);
+-glfwGetJoystickUserPointer_func glfwGetJoystickUserPointer_impl;
++GFW_EXTERN glfwGetJoystickUserPointer_func glfwGetJoystickUserPointer_impl;
+ #define glfwGetJoystickUserPointer glfwGetJoystickUserPointer_impl
+
+ typedef int (*glfwJoystickIsGamepad_func)(int);
+-glfwJoystickIsGamepad_func glfwJoystickIsGamepad_impl;
++GFW_EXTERN glfwJoystickIsGamepad_func glfwJoystickIsGamepad_impl;
+ #define glfwJoystickIsGamepad glfwJoystickIsGamepad_impl
+
+ typedef GLFWjoystickfun (*glfwSetJoystickCallback_func)(GLFWjoystickfun);
+-glfwSetJoystickCallback_func glfwSetJoystickCallback_impl;
++GFW_EXTERN glfwSetJoystickCallback_func glfwSetJoystickCallback_impl;
+ #define glfwSetJoystickCallback glfwSetJoystickCallback_impl
+
+ typedef int (*glfwUpdateGamepadMappings_func)(const char*);
+-glfwUpdateGamepadMappings_func glfwUpdateGamepadMappings_impl;
++GFW_EXTERN glfwUpdateGamepadMappings_func glfwUpdateGamepadMappings_impl;
+ #define glfwUpdateGamepadMappings glfwUpdateGamepadMappings_impl
+
+ typedef const char* (*glfwGetGamepadName_func)(int);
+-glfwGetGamepadName_func glfwGetGamepadName_impl;
++GFW_EXTERN glfwGetGamepadName_func glfwGetGamepadName_impl;
+ #define glfwGetGamepadName glfwGetGamepadName_impl
+
+ typedef int (*glfwGetGamepadState_func)(int, GLFWgamepadstate*);
+-glfwGetGamepadState_func glfwGetGamepadState_impl;
++GFW_EXTERN glfwGetGamepadState_func glfwGetGamepadState_impl;
+ #define glfwGetGamepadState glfwGetGamepadState_impl
+
+ typedef void (*glfwSetClipboardString_func)(GLFWwindow*, const char*);
+-glfwSetClipboardString_func glfwSetClipboardString_impl;
++GFW_EXTERN glfwSetClipboardString_func glfwSetClipboardString_impl;
+ #define glfwSetClipboardString glfwSetClipboardString_impl
+
+ typedef const char* (*glfwGetClipboardString_func)(GLFWwindow*);
+-glfwGetClipboardString_func glfwGetClipboardString_impl;
++GFW_EXTERN glfwGetClipboardString_func glfwGetClipboardString_impl;
+ #define glfwGetClipboardString glfwGetClipboardString_impl
+
+ typedef monotonic_t (*glfwGetTime_func)(void);
+-glfwGetTime_func glfwGetTime_impl;
++GFW_EXTERN glfwGetTime_func glfwGetTime_impl;
+ #define glfwGetTime glfwGetTime_impl
+
+ typedef void (*glfwMakeContextCurrent_func)(GLFWwindow*);
+-glfwMakeContextCurrent_func glfwMakeContextCurrent_impl;
++GFW_EXTERN glfwMakeContextCurrent_func glfwMakeContextCurrent_impl;
+ #define glfwMakeContextCurrent glfwMakeContextCurrent_impl
+
+ typedef GLFWwindow* (*glfwGetCurrentContext_func)(void);
+-glfwGetCurrentContext_func glfwGetCurrentContext_impl;
++GFW_EXTERN glfwGetCurrentContext_func glfwGetCurrentContext_impl;
+ #define glfwGetCurrentContext glfwGetCurrentContext_impl
+
+ typedef void (*glfwSwapBuffers_func)(GLFWwindow*);
+-glfwSwapBuffers_func glfwSwapBuffers_impl;
++GFW_EXTERN glfwSwapBuffers_func glfwSwapBuffers_impl;
+ #define glfwSwapBuffers glfwSwapBuffers_impl
+
+ typedef void (*glfwSwapInterval_func)(int);
+-glfwSwapInterval_func glfwSwapInterval_impl;
++GFW_EXTERN glfwSwapInterval_func glfwSwapInterval_impl;
+ #define glfwSwapInterval glfwSwapInterval_impl
+
+ typedef int (*glfwExtensionSupported_func)(const char*);
+-glfwExtensionSupported_func glfwExtensionSupported_impl;
++GFW_EXTERN glfwExtensionSupported_func glfwExtensionSupported_impl;
+ #define glfwExtensionSupported glfwExtensionSupported_impl
+
+ typedef GLFWglproc (*glfwGetProcAddress_func)(const char*);
+-glfwGetProcAddress_func glfwGetProcAddress_impl;
++GFW_EXTERN glfwGetProcAddress_func glfwGetProcAddress_impl;
+ #define glfwGetProcAddress glfwGetProcAddress_impl
+
+ typedef int (*glfwVulkanSupported_func)(void);
+-glfwVulkanSupported_func glfwVulkanSupported_impl;
++GFW_EXTERN glfwVulkanSupported_func glfwVulkanSupported_impl;
+ #define glfwVulkanSupported glfwVulkanSupported_impl
+
+ typedef const char** (*glfwGetRequiredInstanceExtensions_func)(uint32_t*);
+-glfwGetRequiredInstanceExtensions_func glfwGetRequiredInstanceExtensions_impl;
++GFW_EXTERN glfwGetRequiredInstanceExtensions_func glfwGetRequiredInstanceExtensions_impl;
+ #define glfwGetRequiredInstanceExtensions glfwGetRequiredInstanceExtensions_impl
+
+ typedef void* (*glfwGetCocoaWindow_func)(GLFWwindow*);
+-glfwGetCocoaWindow_func glfwGetCocoaWindow_impl;
++GFW_EXTERN glfwGetCocoaWindow_func glfwGetCocoaWindow_impl;
+ #define glfwGetCocoaWindow glfwGetCocoaWindow_impl
+
+ typedef void* (*glfwGetNSGLContext_func)(GLFWwindow*);
+-glfwGetNSGLContext_func glfwGetNSGLContext_impl;
++GFW_EXTERN glfwGetNSGLContext_func glfwGetNSGLContext_impl;
+ #define glfwGetNSGLContext glfwGetNSGLContext_impl
+
+ typedef uint32_t (*glfwGetCocoaMonitor_func)(GLFWmonitor*);
+-glfwGetCocoaMonitor_func glfwGetCocoaMonitor_impl;
++GFW_EXTERN glfwGetCocoaMonitor_func glfwGetCocoaMonitor_impl;
+ #define glfwGetCocoaMonitor glfwGetCocoaMonitor_impl
+
+ typedef GLFWcocoatextinputfilterfun (*glfwSetCocoaTextInputFilter_func)(GLFWwindow*, GLFWcocoatextinputfilterfun);
+-glfwSetCocoaTextInputFilter_func glfwSetCocoaTextInputFilter_impl;
++GFW_EXTERN glfwSetCocoaTextInputFilter_func glfwSetCocoaTextInputFilter_impl;
+ #define glfwSetCocoaTextInputFilter glfwSetCocoaTextInputFilter_impl
+
+ typedef GLFWcocoatogglefullscreenfun (*glfwSetCocoaToggleFullscreenIntercept_func)(GLFWwindow*, GLFWcocoatogglefullscreenfun);
+-glfwSetCocoaToggleFullscreenIntercept_func glfwSetCocoaToggleFullscreenIntercept_impl;
++GFW_EXTERN glfwSetCocoaToggleFullscreenIntercept_func glfwSetCocoaToggleFullscreenIntercept_impl;
+ #define glfwSetCocoaToggleFullscreenIntercept glfwSetCocoaToggleFullscreenIntercept_impl
+
+ typedef GLFWapplicationshouldhandlereopenfun (*glfwSetApplicationShouldHandleReopen_func)(GLFWapplicationshouldhandlereopenfun);
+-glfwSetApplicationShouldHandleReopen_func glfwSetApplicationShouldHandleReopen_impl;
++GFW_EXTERN glfwSetApplicationShouldHandleReopen_func glfwSetApplicationShouldHandleReopen_impl;
+ #define glfwSetApplicationShouldHandleReopen glfwSetApplicationShouldHandleReopen_impl
+
+ typedef GLFWapplicationwillfinishlaunchingfun (*glfwSetApplicationWillFinishLaunching_func)(GLFWapplicationwillfinishlaunchingfun);
+-glfwSetApplicationWillFinishLaunching_func glfwSetApplicationWillFinishLaunching_impl;
++GFW_EXTERN glfwSetApplicationWillFinishLaunching_func glfwSetApplicationWillFinishLaunching_impl;
+ #define glfwSetApplicationWillFinishLaunching glfwSetApplicationWillFinishLaunching_impl
+
+ typedef void (*glfwGetCocoaKeyEquivalent_func)(int, int, char*, size_t, int*);
+-glfwGetCocoaKeyEquivalent_func glfwGetCocoaKeyEquivalent_impl;
++GFW_EXTERN glfwGetCocoaKeyEquivalent_func glfwGetCocoaKeyEquivalent_impl;
+ #define glfwGetCocoaKeyEquivalent glfwGetCocoaKeyEquivalent_impl
+
+ typedef void (*glfwCocoaRequestRenderFrame_func)(GLFWwindow*, GLFWcocoarenderframefun);
+-glfwCocoaRequestRenderFrame_func glfwCocoaRequestRenderFrame_impl;
++GFW_EXTERN glfwCocoaRequestRenderFrame_func glfwCocoaRequestRenderFrame_impl;
+ #define glfwCocoaRequestRenderFrame glfwCocoaRequestRenderFrame_impl
+
+ typedef void* (*glfwGetX11Display_func)(void);
+-glfwGetX11Display_func glfwGetX11Display_impl;
++GFW_EXTERN glfwGetX11Display_func glfwGetX11Display_impl;
+ #define glfwGetX11Display glfwGetX11Display_impl
+
+ typedef int32_t (*glfwGetX11Window_func)(GLFWwindow*);
+-glfwGetX11Window_func glfwGetX11Window_impl;
++GFW_EXTERN glfwGetX11Window_func glfwGetX11Window_impl;
+ #define glfwGetX11Window glfwGetX11Window_impl
+
+ typedef void (*glfwSetPrimarySelectionString_func)(GLFWwindow*, const char*);
+-glfwSetPrimarySelectionString_func glfwSetPrimarySelectionString_impl;
++GFW_EXTERN glfwSetPrimarySelectionString_func glfwSetPrimarySelectionString_impl;
+ #define glfwSetPrimarySelectionString glfwSetPrimarySelectionString_impl
+
+ typedef const char* (*glfwGetPrimarySelectionString_func)(GLFWwindow*);
+-glfwGetPrimarySelectionString_func glfwGetPrimarySelectionString_impl;
++GFW_EXTERN glfwGetPrimarySelectionString_func glfwGetPrimarySelectionString_impl;
+ #define glfwGetPrimarySelectionString glfwGetPrimarySelectionString_impl
+
+ typedef int (*glfwGetNativeKeyForName_func)(const char*, int);
+-glfwGetNativeKeyForName_func glfwGetNativeKeyForName_impl;
++GFW_EXTERN glfwGetNativeKeyForName_func glfwGetNativeKeyForName_impl;
+ #define glfwGetNativeKeyForName glfwGetNativeKeyForName_impl
+
+ typedef void (*glfwRequestWaylandFrameEvent_func)(GLFWwindow*, unsigned long long, GLFWwaylandframecallbackfunc);
+-glfwRequestWaylandFrameEvent_func glfwRequestWaylandFrameEvent_impl;
++GFW_EXTERN glfwRequestWaylandFrameEvent_func glfwRequestWaylandFrameEvent_impl;
+ #define glfwRequestWaylandFrameEvent glfwRequestWaylandFrameEvent_impl
+
+ typedef unsigned long long (*glfwDBusUserNotify_func)(const char*, const char*, const char*, const char*, const char*, int32_t, GLFWDBusnotificationcreatedfun, void*);
+-glfwDBusUserNotify_func glfwDBusUserNotify_impl;
++GFW_EXTERN glfwDBusUserNotify_func glfwDBusUserNotify_impl;
+ #define glfwDBusUserNotify glfwDBusUserNotify_impl
+
+ typedef void (*glfwDBusSetUserNotificationHandler_func)(GLFWDBusnotificationactivatedfun);
+-glfwDBusSetUserNotificationHandler_func glfwDBusSetUserNotificationHandler_impl;
++GFW_EXTERN glfwDBusSetUserNotificationHandler_func glfwDBusSetUserNotificationHandler_impl;
+ #define glfwDBusSetUserNotificationHandler glfwDBusSetUserNotificationHandler_impl
+
+ const char* load_glfw(const char* path);
+
+From 6dbdf72f40571e8a1ed1787ada4e08597e45ac75 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 17:55:38 +0530
+Subject: [PATCH 08/11] CoreText: When matching fonts prefer
+ non-expanded/condensed variants
+
+---
+ kitty/core_text.m | 13 ++++++++-----
+ kitty/fast_data_types.pyi | 3 +++
+ kitty/fonts/core_text.py | 5 +++--
+ 3 files changed, 14 insertions(+), 7 deletions(-)
+
+diff --git a/kitty/core_text.m b/kitty/core_text.m
+index 29036ea2f..229e8dc54 100644
+--- a/kitty/core_text.m
++++ b/kitty/core_text.m
+@@ -92,10 +92,10 @@
+ NSString *style = (NSString *) CTFontDescriptorCopyAttribute(descriptor, kCTFontStyleNameAttribute);
+ NSDictionary *traits = (NSDictionary *) CTFontDescriptorCopyAttribute(descriptor, kCTFontTraitsAttribute);
+ unsigned int straits = [traits[(id)kCTFontSymbolicTrait] unsignedIntValue];
+- NSNumber *weightVal = traits[(id)kCTFontWeightTrait];
+- NSNumber *widthVal = traits[(id)kCTFontWidthTrait];
++ float *weightVal = [traits[(id)kCTFontWeightTrait] floatValue];
++ float widthVal = [traits[(id)kCTFontWidthTrait] floatValue];
+
+- PyObject *ans = Py_BuildValue("{ssssssss sOsOsO sfsfsI}",
++ PyObject *ans = Py_BuildValue("{ssssssss sOsOsOsOsOsO sfsfsI}",
+ "path", [[url path] UTF8String],
+ "postscript_name", [psName UTF8String],
+ "family", [family UTF8String],
+@@ -104,9 +104,12 @@
+ "bold", (straits & kCTFontBoldTrait) != 0 ? Py_True : Py_False,
+ "italic", (straits & kCTFontItalicTrait) != 0 ? Py_True : Py_False,
+ "monospace", (straits & kCTFontMonoSpaceTrait) != 0 ? Py_True : Py_False,
++ "expanded", (straits & kCTFontExpandedTrait) != 0 ? Py_True : Py_False,
++ "condensed", (straits & kCTFontCondensedTrait) != 0 ? Py_True : Py_False,
++ "color_glyphs", (straits & kCTFontColorGlyphsTrait) != 0 ? Py_True : Py_False,
+
+- "weight", [weightVal floatValue],
+- "width", [widthVal floatValue],
++ "weight", weightVal,
++ "width", widthVal,
+ "traits", straits
+ );
+ [url release];
+diff --git a/kitty/fast_data_types.pyi b/kitty/fast_data_types.pyi
+index 4749e0c50..9333a8eaa 100644
+--- a/kitty/fast_data_types.pyi
++++ b/kitty/fast_data_types.pyi
+@@ -438,6 +438,9 @@ class CoreTextFont(TypedDict):
+ style: str
+ bold: bool
+ italic: bool
++ expanded: bool
++ condensed: bool
++ color_glyphs: bool
+ monospace: bool
+ weight: float
+ width: float
+diff --git a/kitty/fonts/core_text.py b/kitty/fonts/core_text.py
+index 20567a3a1..5061b0fb2 100644
+--- a/kitty/fonts/core_text.py
++++ b/kitty/fonts/core_text.py
+@@ -54,12 +54,13 @@ def find_best_match(family: str, bold: bool = False, italic: bool = False) -> Co
+ q = re.sub(r'\s+', ' ', family.lower())
+ font_map = all_fonts_map()
+
+- def score(candidate: CoreTextFont) -> Tuple[int, int]:
++ def score(candidate: CoreTextFont) -> Tuple[int, int, int]:
+ style_match = 1 if candidate['bold'] == bold and candidate[
+ 'italic'
+ ] == italic else 0
+ monospace_match = 1 if candidate['monospace'] else 0
+- return style_match, monospace_match
++ is_regular_width = not candidate['expanded'] and not candidate['condensed']
++ return style_match, monospace_match, 1 if is_regular_width else 0
+
+ # First look for an exact match
+ for selector in ('ps_map', 'full_map'):
+
+From 21c561043197f145fe7a478fdf078c4546c25914 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 18:02:44 +0530
+Subject: [PATCH 09/11] ...
+
+---
+ kitty/core_text.m | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/kitty/core_text.m b/kitty/core_text.m
+index 229e8dc54..23d1bcf5b 100644
+--- a/kitty/core_text.m
++++ b/kitty/core_text.m
+@@ -92,7 +92,7 @@
+ NSString *style = (NSString *) CTFontDescriptorCopyAttribute(descriptor, kCTFontStyleNameAttribute);
+ NSDictionary *traits = (NSDictionary *) CTFontDescriptorCopyAttribute(descriptor, kCTFontTraitsAttribute);
+ unsigned int straits = [traits[(id)kCTFontSymbolicTrait] unsignedIntValue];
+- float *weightVal = [traits[(id)kCTFontWeightTrait] floatValue];
++ float weightVal = [traits[(id)kCTFontWeightTrait] floatValue];
+ float widthVal = [traits[(id)kCTFontWidthTrait] floatValue];
+
+ PyObject *ans = Py_BuildValue("{ssssssss sOsOsOsOsOsO sfsfsI}",
+
+From a07369ce69660a940431fc5297940391d23a4803 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 18:14:14 +0530
+Subject: [PATCH 10/11] Update changelog
+
+---
+ docs/changelog.rst | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/docs/changelog.rst b/docs/changelog.rst
+index e9e137b43..c683c99ad 100644
+--- a/docs/changelog.rst
++++ b/docs/changelog.rst
+@@ -12,6 +12,9 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
+ - Fix a regression in 0.17 that caused tab bar background to be rendered after
+ the last tab as well (:iss:`2464`)
+
++- macOS: Fix a regression in 0.17 that caused incorrect variants to be
++ automatically selected for some fonts (:iss:`2462`)
++
+
+ 0.17.0 [2020-03-24]
+ --------------------
+
+From 0547102bdd6ce3b71cf53f2cb75b2f85692789f5 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 18:33:32 +0530
+Subject: [PATCH 11/11] Fix #2468
+
+---
+ setup.py | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 917d29e6a..350d5e1fe 100755
+--- a/setup.py
++++ b/setup.py
+@@ -141,9 +141,12 @@ def cc_version() -> Tuple[str, Tuple[int, int]]:
+ else:
+ cc = 'cc'
+ raw = subprocess.check_output([cc, '-dumpversion']).decode('utf-8')
+- ver_ = raw.split('.')[:2]
++ ver_ = raw.strip().split('.')[:2]
+ try:
+- ver = int(ver_[0]), int(ver_[1])
++ if len(ver_) == 1:
++ ver = int(ver_[0]), 0
++ else:
++ ver = int(ver_[0]), int(ver_[1])
+ except Exception:
+ ver = (0, 0)
+ return cc, ver
diff --git a/kitty.spec b/kitty.spec
index 0b6373e..6e5d628 100644
--- a/kitty.spec
+++ b/kitty.spec
@@ -6,9 +6,7 @@ Name: kitty
Version: 0.17.0
Release: 1%{?dist}
Summary: Cross-platform, fast, feature full, GPU based terminal emulator
-
-# https://pagure.io/koji/issue/1679
-ExcludeArch: s390x
+ExcludeArch: s390x ppc64le
# BSD: docs/_templates/searchbox.html
# zlib: glfw/
@@ -22,11 +20,13 @@ Source1: https://raw.githubusercontent.com/kovidgoyal/kitty/46c0951751444
# Failed to compile with new GCC 10
# * https://github.com/kovidgoyal/kitty/issues/2466
-Patch0: https://github.com/kovidgoyal/kitty/commit/76a6bba64310024c2780ff26e5bbcd...
-
+#
# Build error if compile with --debug
# * https://github.com/kovidgoyal/kitty/issues/2468
-Patch1: https://github.com/kovidgoyal/kitty/commit/0547102bdd6ce3b71cf53f2cb75b2f...
+#
+# Some tests not passed on aarch64 and ppc64le arches
+# * https://github.com/kovidgoyal/kitty/issues/2469
+Patch0: https://github.com/kovidgoyal/kitty/compare/v0.17.0...master.patch#/kitty...
BuildRequires: desktop-file-utils
BuildRequires: gcc
@@ -160,13 +160,7 @@ rm %{buildroot}%{_datadir}/doc/%{name}/html/.buildinfo \
%check
-
-# Some tests not passed on aarch64 and ppc64le arches
-# * https://github.com/kovidgoyal/kitty/issues/2469
-%ifarch armv7hl i686 86_64
%{__python3} setup.py test --prefix=%{buildroot}%{_prefix}
-%endif
-
appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.appdata.xml
desktop-file-validate %{buildroot}/%{_datadir}/applications/*.desktop
@@ -194,6 +188,7 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/*.desktop
%changelog
* Tue Mar 24 2020 Artem Polishchuk <ego.cordatus(a)gmail.com> - 0.17.0-1
- Update to 0.17.0
+- Exclude arch ppc64le
* Mon Mar 09 2020 Artem Polishchuk <ego.cordatus(a)gmail.com> - 0.16.0-3
- Fix AppData description - #1811657
commit 81e78947f3d251e8c9aa4b5f27adcfc0e49cc143
Author: Artem Polishchuk <ego.cordatus(a)gmail.com>
Date: Tue Mar 24 15:38:59 2020 +0200
Skip tests for armv7hl, i686, 86_64
diff --git a/kitty.spec b/kitty.spec
index 7d0eb6c..0b6373e 100644
--- a/kitty.spec
+++ b/kitty.spec
@@ -160,7 +160,13 @@ rm %{buildroot}%{_datadir}/doc/%{name}/html/.buildinfo \
%check
+
+# Some tests not passed on aarch64 and ppc64le arches
+# * https://github.com/kovidgoyal/kitty/issues/2469
+%ifarch armv7hl i686 86_64
%{__python3} setup.py test --prefix=%{buildroot}%{_prefix}
+%endif
+
appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.appdata.xml
desktop-file-validate %{buildroot}/%{_datadir}/applications/*.desktop
4 years, 1 month
Architecture specific change in rpms/kitty.git
by githook-noreply@fedoraproject.org
The package rpms/kitty.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/kitty.git/commit/?id=81e78947f3d2...
https://src.fedoraproject.org/cgit/rpms/kitty.git/commit/?id=4a1520081499....
Change:
+%ifarch armv7hl i686 86_64
-%ifarch armv7hl i686 86_64
Thanks.
Full change:
============
commit 109fab5ebb061dc920de0b2fdd817e978f46f368
Author: Artem Polishchuk <ego.cordatus(a)gmail.com>
Date: Tue Mar 24 16:44:42 2020 +0200
Add link to upstream bug
diff --git a/kitty.spec b/kitty.spec
index 08e1366..0775721 100644
--- a/kitty.spec
+++ b/kitty.spec
@@ -6,6 +6,9 @@ Name: kitty
Version: 0.17.1
Release: 1%{?dist}
Summary: Cross-platform, fast, feature full, GPU based terminal emulator
+
+# 0.17.1 won't compile on ppc64le arch
+# * https://github.com/kovidgoyal/kitty/issues/2471
ExcludeArch: s390x ppc64le
# BSD: docs/_templates/searchbox.html
commit 7d0c409e8455f1e3d55070ceba679f60c1c30a0b
Author: Artem Polishchuk <ego.cordatus(a)gmail.com>
Date: Tue Mar 24 16:38:23 2020 +0200
Update to 0.17.1
diff --git a/.gitignore b/.gitignore
index 6778b5f..ed63750 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@
/kitty-0.15.1.tar.gz
/kitty-0.16.0.tar.gz
/kitty-0.17.0.tar.gz
+/kitty-0.17.1.tar.gz
diff --git a/kitty-make-kitty-build-again.patch b/kitty-make-kitty-build-again.patch
deleted file mode 100644
index a26545e..0000000
--- a/kitty-make-kitty-build-again.patch
+++ /dev/null
@@ -1,1100 +0,0 @@
-From 037111715a78a946f9913bbdecb95d3d377d73b0 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 11:34:29 +0530
-Subject: [PATCH 01/11] ...
-
----
- docs/layouts.rst | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/docs/layouts.rst b/docs/layouts.rst
-index 933db11ad..c6673b724 100644
---- a/docs/layouts.rst
-+++ b/docs/layouts.rst
-@@ -24,7 +24,7 @@ other in arbitrary arrangements, based on *Layouts*, see below for examples:
-
- There are many different layouts available. They are all enabled by default,
- you can switch layouts using :sc:`next_layout`. To control which layouts
--are available use :opt:`enabled_layouts` the first listed layout becomes
-+are available use :opt:`enabled_layouts`, the first listed layout becomes
- the default. Individual layouts and how to use them are described below.
-
- .. contents::
-
-From 33a84a609ccc5f21f487214a06b73848ea009551 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 11:35:34 +0530
-Subject: [PATCH 02/11] ...
-
----
- docs/changelog.rst | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/docs/changelog.rst b/docs/changelog.rst
-index cb1283211..f89a770aa 100644
---- a/docs/changelog.rst
-+++ b/docs/changelog.rst
-@@ -7,7 +7,7 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
- 0.17.0 [2020-03-24]
- --------------------
-
--- A new :ref:`splits_layout` to arrange windows in arbitrary splits
-+- :ref:`splits_layout` to arrange windows in arbitrary splits
- (:iss:`2308`)
-
- - Add support for specifying a background image, see :opt:`background_image`
-
-From c4f7c5c1cd337af14ac4a2c49ff5eeccbaec329f Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 11:58:30 +0530
-Subject: [PATCH 03/11] More explanation for OSC 52 extension
-
----
- docs/protocol-extensions.rst | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/docs/protocol-extensions.rst b/docs/protocol-extensions.rst
-index c91bdfc68..1a9bc0ae6 100644
---- a/docs/protocol-extensions.rst
-+++ b/docs/protocol-extensions.rst
-@@ -219,6 +219,11 @@ first, for example::
- <ESC>]52;c;!<ESC>\
-
- Here ``!`` is not valid base64 encoded text, so it clears the clipboard.
-+Further, since it is invalid, it should be ignored by terminal emulators
-+that do not support this extension, thereby making it safe to use, simply
-+always send it before starting a new OSC 52 paste, even if you aren't chunking
-+up large pastes, that way kitty wont concatenate your paste, and it will have
-+no ill-effects in other terminal emulators.
-
- In case you're using software that can't be easily adapted to this
- protocol extension, it can be disabled by specifying ``no-append`` to the
-
-From 5227b1f98b5353a1a0f4e58ae19335ffa89257e3 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 15:53:13 +0530
-Subject: [PATCH 04/11] Fix :opt:`cursor_underline_thickness` not working
-
-Fixes #2465
----
- docs/changelog.rst | 7 +++++++
- kitty/fonts.c | 2 +-
- 2 files changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/docs/changelog.rst b/docs/changelog.rst
-index f89a770aa..3bd8e3579 100644
---- a/docs/changelog.rst
-+++ b/docs/changelog.rst
-@@ -4,6 +4,13 @@ Changelog
- |kitty| is a feature full, cross-platform, *fast*, GPU based terminal emulator.
- To update |kitty|, :doc:`follow the instructions <binary>`.
-
-+0.17.1 [future]
-+--------------------
-+
-+- Fix :opt:`cursor_underline_thickness` not working (:iss:`2465`)
-+
-+
-+- :ref:`splits_layout` to arrange windows in arbitrary splits
- 0.17.0 [2020-03-24]
- --------------------
-
-diff --git a/kitty/fonts.c b/kitty/fonts.c
-index 54e697665..b045587f5 100644
---- a/kitty/fonts.c
-+++ b/kitty/fonts.c
-@@ -1243,7 +1243,7 @@ send_prerendered_sprites(FontGroup *fg) {
- current_send_sprite_to_gpu((FONTS_DATA_HANDLE)fg, x, y, z, fg->canvas);
- do_increment(fg, &error);
- if (error != 0) { sprite_map_set_error(error); PyErr_Print(); fatal("Failed"); }
-- PyObject *args = PyObject_CallFunction(prerender_function, "IIIIIffdd", fg->cell_width, fg->cell_height, fg->baseline, fg->underline_position, fg->underline_thickness, OPT(cursor_beam_thickness), fg->logical_dpi_x, fg->logical_dpi_y);
-+ PyObject *args = PyObject_CallFunction(prerender_function, "IIIIIffdd", fg->cell_width, fg->cell_height, fg->baseline, fg->underline_position, fg->underline_thickness, OPT(cursor_beam_thickness), OPT(cursor_underline_thickness), fg->logical_dpi_x, fg->logical_dpi_y);
- if (args == NULL) { PyErr_Print(); fatal("Failed to pre-render cells"); }
- for (ssize_t i = 0; i < PyTuple_GET_SIZE(args) - 1; i++) {
- x = fg->sprite_tracker.x; y = fg->sprite_tracker.y; z = fg->sprite_tracker.z;
-
-From 0d87b8fac5168171493cb0d8cef85d60e564c0b0 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 16:05:02 +0530
-Subject: [PATCH 05/11] Fix a regression in 0.17 that caused tab bar background
- to be rendered after the last tab as well
-
-Fixes #2464
----
- docs/changelog.rst | 3 +++
- kitty/tab_bar.py | 5 ++++-
- 2 files changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/docs/changelog.rst b/docs/changelog.rst
-index 3bd8e3579..e5f189f2b 100644
---- a/docs/changelog.rst
-+++ b/docs/changelog.rst
-@@ -9,6 +9,9 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
-
- - Fix :opt:`cursor_underline_thickness` not working (:iss:`2465`)
-
-+- Fix a regression in 0.17 that caused tab bar background to be rendered after
-+ the last tab as well (:iss:`2464`)
-+
-
- - :ref:`splits_layout` to arrange windows in arbitrary splits
- 0.17.0 [2020-03-24]
-diff --git a/kitty/tab_bar.py b/kitty/tab_bar.py
-index 1b111eaa0..3d97741b9 100644
---- a/kitty/tab_bar.py
-+++ b/kitty/tab_bar.py
-@@ -66,6 +66,8 @@ def draw_title(draw_data: DrawData, screen: Screen, tab: TabBarData, index: int)
-
-
- def draw_tab_with_separator(draw_data: DrawData, screen: Screen, tab: TabBarData, before: int, max_title_length: int, index: int, is_last: bool) -> int:
-+ tab_bg = draw_data.active_bg if tab.is_active else draw_data.inactive_bg
-+ screen.cursor.bg = as_rgb(color_as_int(tab_bg))
- if draw_data.leading_spaces:
- screen.draw(' ' * draw_data.leading_spaces)
- draw_title(draw_data, screen, tab, index)
-@@ -138,6 +140,7 @@ def draw_tab_with_powerline(draw_data: DrawData, screen: Screen, tab: TabBarData
- screen.draw(' ')
- start_draw = 1
-
-+ screen.cursor.bg = tab_bg
- if min_title_length >= max_title_length:
- screen.draw('')
- else:
-@@ -179,7 +182,7 @@ def __init__(self, os_window_id: int, opts: Options):
- s.color_profile.update_ansi_color_table(build_ansi_color_table(opts))
- s.color_profile.set_configured_colors(
- color_as_int(opts.inactive_tab_foreground),
-- color_as_int(opts.inactive_tab_background)
-+ color_as_int(opts.background)
- )
- self.blank_rects: Tuple[Rect, ...] = ()
- sep = opts.tab_separator
-
-From b0b8222a9672bd3865d0b42f9005e797cabd570c Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 17:04:17 +0530
-Subject: [PATCH 06/11] ...
-
----
- docs/changelog.rst | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/docs/changelog.rst b/docs/changelog.rst
-index e5f189f2b..e9e137b43 100644
---- a/docs/changelog.rst
-+++ b/docs/changelog.rst
-@@ -13,7 +13,6 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
- the last tab as well (:iss:`2464`)
-
-
--- :ref:`splits_layout` to arrange windows in arbitrary splits
- 0.17.0 [2020-03-24]
- --------------------
-
-
-From 76a6bba64310024c2780ff26e5bbcd3f8b520b38 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 17:07:37 +0530
-Subject: [PATCH 07/11] Fix #2466
-
----
- glfw/glfw.py | 6 +-
- kitty/glfw-wrapper.c | 1 +
- kitty/glfw-wrapper.h | 275 ++++++++++++++++++++++---------------------
- 3 files changed, 145 insertions(+), 137 deletions(-)
-
-diff --git a/glfw/glfw.py b/glfw/glfw.py
-index 77e2dee68..41c36daaa 100755
---- a/glfw/glfw.py
-+++ b/glfw/glfw.py
-@@ -165,7 +165,7 @@ def __init__(self, declaration: str, check_fail: bool = True):
- self.args = [Arg('void v')]
-
- def declaration(self) -> str:
-- return 'typedef {restype} (*{name}_func)({args});\n{name}_func {name}_impl;\n#define {name} {name}_impl'.format(
-+ return 'typedef {restype} (*{name}_func)({args});\nGFW_EXTERN {name}_func {name}_impl;\n#define {name} {name}_impl'.format(
- restype=self.restype,
- name=self.name,
- args=', '.join(a.type for a in self.args)
-@@ -233,6 +233,9 @@ def generate_wrappers(glfw_header: str) -> None:
- #include <stdint.h>
- #include "monotonic.h"
-
-+#ifndef GFW_EXTERN
-+#define GFW_EXTERN extern
-+#endif
- {}
-
- typedef int (* GLFWcocoatextinputfilterfun)(int,int,unsigned int,unsigned long);
-@@ -251,6 +254,7 @@ def generate_wrappers(glfw_header: str) -> None:
- f.write(header)
-
- code = '''
-+#define GFW_EXTERN
- #include "data-types.h"
- #include "glfw-wrapper.h"
- #include <dlfcn.h>
-diff --git a/kitty/glfw-wrapper.c b/kitty/glfw-wrapper.c
-index 1159529bf..3833977ee 100644
---- a/kitty/glfw-wrapper.c
-+++ b/kitty/glfw-wrapper.c
-@@ -1,4 +1,5 @@
-
-+#define GFW_EXTERN
- #include "data-types.h"
- #include "glfw-wrapper.h"
- #include <dlfcn.h>
-diff --git a/kitty/glfw-wrapper.h b/kitty/glfw-wrapper.h
-index ac4629f3a..b7a816761 100644
---- a/kitty/glfw-wrapper.h
-+++ b/kitty/glfw-wrapper.h
-@@ -9,6 +9,9 @@
- #include <stdint.h>
- #include "monotonic.h"
-
-+#ifndef GFW_EXTERN
-+#define GFW_EXTERN extern
-+#endif
-
-
- /*! @name GLFW version macros
-@@ -1587,547 +1590,547 @@ typedef void (*GLFWwaylandframecallbackfunc)(unsigned long long id);
- typedef void (*GLFWDBusnotificationcreatedfun)(unsigned long long, uint32_t, void*);
- typedef void (*GLFWDBusnotificationactivatedfun)(uint32_t, const char*);
- typedef int (*glfwInit_func)(monotonic_t);
--glfwInit_func glfwInit_impl;
-+GFW_EXTERN glfwInit_func glfwInit_impl;
- #define glfwInit glfwInit_impl
-
- typedef void (*glfwRunMainLoop_func)(GLFWtickcallback, void*);
--glfwRunMainLoop_func glfwRunMainLoop_impl;
-+GFW_EXTERN glfwRunMainLoop_func glfwRunMainLoop_impl;
- #define glfwRunMainLoop glfwRunMainLoop_impl
-
- typedef void (*glfwStopMainLoop_func)(void);
--glfwStopMainLoop_func glfwStopMainLoop_impl;
-+GFW_EXTERN glfwStopMainLoop_func glfwStopMainLoop_impl;
- #define glfwStopMainLoop glfwStopMainLoop_impl
-
- typedef unsigned long long (*glfwAddTimer_func)(monotonic_t, bool, GLFWuserdatafun, void *, GLFWuserdatafun);
--glfwAddTimer_func glfwAddTimer_impl;
-+GFW_EXTERN glfwAddTimer_func glfwAddTimer_impl;
- #define glfwAddTimer glfwAddTimer_impl
-
- typedef void (*glfwUpdateTimer_func)(unsigned long long, monotonic_t, bool);
--glfwUpdateTimer_func glfwUpdateTimer_impl;
-+GFW_EXTERN glfwUpdateTimer_func glfwUpdateTimer_impl;
- #define glfwUpdateTimer glfwUpdateTimer_impl
-
- typedef void (*glfwRemoveTimer_func)(unsigned long);
--glfwRemoveTimer_func glfwRemoveTimer_impl;
-+GFW_EXTERN glfwRemoveTimer_func glfwRemoveTimer_impl;
- #define glfwRemoveTimer glfwRemoveTimer_impl
-
- typedef void (*glfwTerminate_func)(void);
--glfwTerminate_func glfwTerminate_impl;
-+GFW_EXTERN glfwTerminate_func glfwTerminate_impl;
- #define glfwTerminate glfwTerminate_impl
-
- typedef void (*glfwInitHint_func)(int, int);
--glfwInitHint_func glfwInitHint_impl;
-+GFW_EXTERN glfwInitHint_func glfwInitHint_impl;
- #define glfwInitHint glfwInitHint_impl
-
- typedef void (*glfwGetVersion_func)(int*, int*, int*);
--glfwGetVersion_func glfwGetVersion_impl;
-+GFW_EXTERN glfwGetVersion_func glfwGetVersion_impl;
- #define glfwGetVersion glfwGetVersion_impl
-
- typedef const char* (*glfwGetVersionString_func)(void);
--glfwGetVersionString_func glfwGetVersionString_impl;
-+GFW_EXTERN glfwGetVersionString_func glfwGetVersionString_impl;
- #define glfwGetVersionString glfwGetVersionString_impl
-
- typedef int (*glfwGetError_func)(const char**);
--glfwGetError_func glfwGetError_impl;
-+GFW_EXTERN glfwGetError_func glfwGetError_impl;
- #define glfwGetError glfwGetError_impl
-
- typedef GLFWerrorfun (*glfwSetErrorCallback_func)(GLFWerrorfun);
--glfwSetErrorCallback_func glfwSetErrorCallback_impl;
-+GFW_EXTERN glfwSetErrorCallback_func glfwSetErrorCallback_impl;
- #define glfwSetErrorCallback glfwSetErrorCallback_impl
-
- typedef GLFWmonitor** (*glfwGetMonitors_func)(int*);
--glfwGetMonitors_func glfwGetMonitors_impl;
-+GFW_EXTERN glfwGetMonitors_func glfwGetMonitors_impl;
- #define glfwGetMonitors glfwGetMonitors_impl
-
- typedef GLFWmonitor* (*glfwGetPrimaryMonitor_func)(void);
--glfwGetPrimaryMonitor_func glfwGetPrimaryMonitor_impl;
-+GFW_EXTERN glfwGetPrimaryMonitor_func glfwGetPrimaryMonitor_impl;
- #define glfwGetPrimaryMonitor glfwGetPrimaryMonitor_impl
-
- typedef void (*glfwGetMonitorPos_func)(GLFWmonitor*, int*, int*);
--glfwGetMonitorPos_func glfwGetMonitorPos_impl;
-+GFW_EXTERN glfwGetMonitorPos_func glfwGetMonitorPos_impl;
- #define glfwGetMonitorPos glfwGetMonitorPos_impl
-
- typedef void (*glfwGetMonitorWorkarea_func)(GLFWmonitor*, int*, int*, int*, int*);
--glfwGetMonitorWorkarea_func glfwGetMonitorWorkarea_impl;
-+GFW_EXTERN glfwGetMonitorWorkarea_func glfwGetMonitorWorkarea_impl;
- #define glfwGetMonitorWorkarea glfwGetMonitorWorkarea_impl
-
- typedef void (*glfwGetMonitorPhysicalSize_func)(GLFWmonitor*, int*, int*);
--glfwGetMonitorPhysicalSize_func glfwGetMonitorPhysicalSize_impl;
-+GFW_EXTERN glfwGetMonitorPhysicalSize_func glfwGetMonitorPhysicalSize_impl;
- #define glfwGetMonitorPhysicalSize glfwGetMonitorPhysicalSize_impl
-
- typedef void (*glfwGetMonitorContentScale_func)(GLFWmonitor*, float*, float*);
--glfwGetMonitorContentScale_func glfwGetMonitorContentScale_impl;
-+GFW_EXTERN glfwGetMonitorContentScale_func glfwGetMonitorContentScale_impl;
- #define glfwGetMonitorContentScale glfwGetMonitorContentScale_impl
-
- typedef const char* (*glfwGetMonitorName_func)(GLFWmonitor*);
--glfwGetMonitorName_func glfwGetMonitorName_impl;
-+GFW_EXTERN glfwGetMonitorName_func glfwGetMonitorName_impl;
- #define glfwGetMonitorName glfwGetMonitorName_impl
-
- typedef void (*glfwSetMonitorUserPointer_func)(GLFWmonitor*, void*);
--glfwSetMonitorUserPointer_func glfwSetMonitorUserPointer_impl;
-+GFW_EXTERN glfwSetMonitorUserPointer_func glfwSetMonitorUserPointer_impl;
- #define glfwSetMonitorUserPointer glfwSetMonitorUserPointer_impl
-
- typedef void* (*glfwGetMonitorUserPointer_func)(GLFWmonitor*);
--glfwGetMonitorUserPointer_func glfwGetMonitorUserPointer_impl;
-+GFW_EXTERN glfwGetMonitorUserPointer_func glfwGetMonitorUserPointer_impl;
- #define glfwGetMonitorUserPointer glfwGetMonitorUserPointer_impl
-
- typedef GLFWmonitorfun (*glfwSetMonitorCallback_func)(GLFWmonitorfun);
--glfwSetMonitorCallback_func glfwSetMonitorCallback_impl;
-+GFW_EXTERN glfwSetMonitorCallback_func glfwSetMonitorCallback_impl;
- #define glfwSetMonitorCallback glfwSetMonitorCallback_impl
-
- typedef const GLFWvidmode* (*glfwGetVideoModes_func)(GLFWmonitor*, int*);
--glfwGetVideoModes_func glfwGetVideoModes_impl;
-+GFW_EXTERN glfwGetVideoModes_func glfwGetVideoModes_impl;
- #define glfwGetVideoModes glfwGetVideoModes_impl
-
- typedef const GLFWvidmode* (*glfwGetVideoMode_func)(GLFWmonitor*);
--glfwGetVideoMode_func glfwGetVideoMode_impl;
-+GFW_EXTERN glfwGetVideoMode_func glfwGetVideoMode_impl;
- #define glfwGetVideoMode glfwGetVideoMode_impl
-
- typedef void (*glfwSetGamma_func)(GLFWmonitor*, float);
--glfwSetGamma_func glfwSetGamma_impl;
-+GFW_EXTERN glfwSetGamma_func glfwSetGamma_impl;
- #define glfwSetGamma glfwSetGamma_impl
-
- typedef const GLFWgammaramp* (*glfwGetGammaRamp_func)(GLFWmonitor*);
--glfwGetGammaRamp_func glfwGetGammaRamp_impl;
-+GFW_EXTERN glfwGetGammaRamp_func glfwGetGammaRamp_impl;
- #define glfwGetGammaRamp glfwGetGammaRamp_impl
-
- typedef void (*glfwSetGammaRamp_func)(GLFWmonitor*, const GLFWgammaramp*);
--glfwSetGammaRamp_func glfwSetGammaRamp_impl;
-+GFW_EXTERN glfwSetGammaRamp_func glfwSetGammaRamp_impl;
- #define glfwSetGammaRamp glfwSetGammaRamp_impl
-
- typedef void (*glfwDefaultWindowHints_func)(void);
--glfwDefaultWindowHints_func glfwDefaultWindowHints_impl;
-+GFW_EXTERN glfwDefaultWindowHints_func glfwDefaultWindowHints_impl;
- #define glfwDefaultWindowHints glfwDefaultWindowHints_impl
-
- typedef void (*glfwWindowHint_func)(int, int);
--glfwWindowHint_func glfwWindowHint_impl;
-+GFW_EXTERN glfwWindowHint_func glfwWindowHint_impl;
- #define glfwWindowHint glfwWindowHint_impl
-
- typedef void (*glfwWindowHintString_func)(int, const char*);
--glfwWindowHintString_func glfwWindowHintString_impl;
-+GFW_EXTERN glfwWindowHintString_func glfwWindowHintString_impl;
- #define glfwWindowHintString glfwWindowHintString_impl
-
- typedef GLFWwindow* (*glfwCreateWindow_func)(int, int, const char*, GLFWmonitor*, GLFWwindow*);
--glfwCreateWindow_func glfwCreateWindow_impl;
-+GFW_EXTERN glfwCreateWindow_func glfwCreateWindow_impl;
- #define glfwCreateWindow glfwCreateWindow_impl
-
- typedef bool (*glfwToggleFullscreen_func)(GLFWwindow*, unsigned int);
--glfwToggleFullscreen_func glfwToggleFullscreen_impl;
-+GFW_EXTERN glfwToggleFullscreen_func glfwToggleFullscreen_impl;
- #define glfwToggleFullscreen glfwToggleFullscreen_impl
-
- typedef void (*glfwDestroyWindow_func)(GLFWwindow*);
--glfwDestroyWindow_func glfwDestroyWindow_impl;
-+GFW_EXTERN glfwDestroyWindow_func glfwDestroyWindow_impl;
- #define glfwDestroyWindow glfwDestroyWindow_impl
-
- typedef int (*glfwWindowShouldClose_func)(GLFWwindow*);
--glfwWindowShouldClose_func glfwWindowShouldClose_impl;
-+GFW_EXTERN glfwWindowShouldClose_func glfwWindowShouldClose_impl;
- #define glfwWindowShouldClose glfwWindowShouldClose_impl
-
- typedef void (*glfwSetWindowShouldClose_func)(GLFWwindow*, int);
--glfwSetWindowShouldClose_func glfwSetWindowShouldClose_impl;
-+GFW_EXTERN glfwSetWindowShouldClose_func glfwSetWindowShouldClose_impl;
- #define glfwSetWindowShouldClose glfwSetWindowShouldClose_impl
-
- typedef void (*glfwSetWindowTitle_func)(GLFWwindow*, const char*);
--glfwSetWindowTitle_func glfwSetWindowTitle_impl;
-+GFW_EXTERN glfwSetWindowTitle_func glfwSetWindowTitle_impl;
- #define glfwSetWindowTitle glfwSetWindowTitle_impl
-
- typedef void (*glfwSetWindowIcon_func)(GLFWwindow*, int, const GLFWimage*);
--glfwSetWindowIcon_func glfwSetWindowIcon_impl;
-+GFW_EXTERN glfwSetWindowIcon_func glfwSetWindowIcon_impl;
- #define glfwSetWindowIcon glfwSetWindowIcon_impl
-
- typedef void (*glfwGetWindowPos_func)(GLFWwindow*, int*, int*);
--glfwGetWindowPos_func glfwGetWindowPos_impl;
-+GFW_EXTERN glfwGetWindowPos_func glfwGetWindowPos_impl;
- #define glfwGetWindowPos glfwGetWindowPos_impl
-
- typedef void (*glfwSetWindowPos_func)(GLFWwindow*, int, int);
--glfwSetWindowPos_func glfwSetWindowPos_impl;
-+GFW_EXTERN glfwSetWindowPos_func glfwSetWindowPos_impl;
- #define glfwSetWindowPos glfwSetWindowPos_impl
-
- typedef void (*glfwGetWindowSize_func)(GLFWwindow*, int*, int*);
--glfwGetWindowSize_func glfwGetWindowSize_impl;
-+GFW_EXTERN glfwGetWindowSize_func glfwGetWindowSize_impl;
- #define glfwGetWindowSize glfwGetWindowSize_impl
-
- typedef void (*glfwSetWindowSizeLimits_func)(GLFWwindow*, int, int, int, int);
--glfwSetWindowSizeLimits_func glfwSetWindowSizeLimits_impl;
-+GFW_EXTERN glfwSetWindowSizeLimits_func glfwSetWindowSizeLimits_impl;
- #define glfwSetWindowSizeLimits glfwSetWindowSizeLimits_impl
-
- typedef void (*glfwSetWindowSizeIncrements_func)(GLFWwindow*, int, int);
--glfwSetWindowSizeIncrements_func glfwSetWindowSizeIncrements_impl;
-+GFW_EXTERN glfwSetWindowSizeIncrements_func glfwSetWindowSizeIncrements_impl;
- #define glfwSetWindowSizeIncrements glfwSetWindowSizeIncrements_impl
-
- typedef void (*glfwSetWindowAspectRatio_func)(GLFWwindow*, int, int);
--glfwSetWindowAspectRatio_func glfwSetWindowAspectRatio_impl;
-+GFW_EXTERN glfwSetWindowAspectRatio_func glfwSetWindowAspectRatio_impl;
- #define glfwSetWindowAspectRatio glfwSetWindowAspectRatio_impl
-
- typedef void (*glfwSetWindowSize_func)(GLFWwindow*, int, int);
--glfwSetWindowSize_func glfwSetWindowSize_impl;
-+GFW_EXTERN glfwSetWindowSize_func glfwSetWindowSize_impl;
- #define glfwSetWindowSize glfwSetWindowSize_impl
-
- typedef void (*glfwGetFramebufferSize_func)(GLFWwindow*, int*, int*);
--glfwGetFramebufferSize_func glfwGetFramebufferSize_impl;
-+GFW_EXTERN glfwGetFramebufferSize_func glfwGetFramebufferSize_impl;
- #define glfwGetFramebufferSize glfwGetFramebufferSize_impl
-
- typedef void (*glfwGetWindowFrameSize_func)(GLFWwindow*, int*, int*, int*, int*);
--glfwGetWindowFrameSize_func glfwGetWindowFrameSize_impl;
-+GFW_EXTERN glfwGetWindowFrameSize_func glfwGetWindowFrameSize_impl;
- #define glfwGetWindowFrameSize glfwGetWindowFrameSize_impl
-
- typedef void (*glfwGetWindowContentScale_func)(GLFWwindow*, float*, float*);
--glfwGetWindowContentScale_func glfwGetWindowContentScale_impl;
-+GFW_EXTERN glfwGetWindowContentScale_func glfwGetWindowContentScale_impl;
- #define glfwGetWindowContentScale glfwGetWindowContentScale_impl
-
- typedef monotonic_t (*glfwGetDoubleClickInterval_func)(GLFWwindow*);
--glfwGetDoubleClickInterval_func glfwGetDoubleClickInterval_impl;
-+GFW_EXTERN glfwGetDoubleClickInterval_func glfwGetDoubleClickInterval_impl;
- #define glfwGetDoubleClickInterval glfwGetDoubleClickInterval_impl
-
- typedef float (*glfwGetWindowOpacity_func)(GLFWwindow*);
--glfwGetWindowOpacity_func glfwGetWindowOpacity_impl;
-+GFW_EXTERN glfwGetWindowOpacity_func glfwGetWindowOpacity_impl;
- #define glfwGetWindowOpacity glfwGetWindowOpacity_impl
-
- typedef void (*glfwSetWindowOpacity_func)(GLFWwindow*, float);
--glfwSetWindowOpacity_func glfwSetWindowOpacity_impl;
-+GFW_EXTERN glfwSetWindowOpacity_func glfwSetWindowOpacity_impl;
- #define glfwSetWindowOpacity glfwSetWindowOpacity_impl
-
- typedef void (*glfwIconifyWindow_func)(GLFWwindow*);
--glfwIconifyWindow_func glfwIconifyWindow_impl;
-+GFW_EXTERN glfwIconifyWindow_func glfwIconifyWindow_impl;
- #define glfwIconifyWindow glfwIconifyWindow_impl
-
- typedef void (*glfwRestoreWindow_func)(GLFWwindow*);
--glfwRestoreWindow_func glfwRestoreWindow_impl;
-+GFW_EXTERN glfwRestoreWindow_func glfwRestoreWindow_impl;
- #define glfwRestoreWindow glfwRestoreWindow_impl
-
- typedef void (*glfwMaximizeWindow_func)(GLFWwindow*);
--glfwMaximizeWindow_func glfwMaximizeWindow_impl;
-+GFW_EXTERN glfwMaximizeWindow_func glfwMaximizeWindow_impl;
- #define glfwMaximizeWindow glfwMaximizeWindow_impl
-
- typedef void (*glfwShowWindow_func)(GLFWwindow*);
--glfwShowWindow_func glfwShowWindow_impl;
-+GFW_EXTERN glfwShowWindow_func glfwShowWindow_impl;
- #define glfwShowWindow glfwShowWindow_impl
-
- typedef void (*glfwHideWindow_func)(GLFWwindow*);
--glfwHideWindow_func glfwHideWindow_impl;
-+GFW_EXTERN glfwHideWindow_func glfwHideWindow_impl;
- #define glfwHideWindow glfwHideWindow_impl
-
- typedef void (*glfwFocusWindow_func)(GLFWwindow*);
--glfwFocusWindow_func glfwFocusWindow_impl;
-+GFW_EXTERN glfwFocusWindow_func glfwFocusWindow_impl;
- #define glfwFocusWindow glfwFocusWindow_impl
-
- typedef void (*glfwRequestWindowAttention_func)(GLFWwindow*);
--glfwRequestWindowAttention_func glfwRequestWindowAttention_impl;
-+GFW_EXTERN glfwRequestWindowAttention_func glfwRequestWindowAttention_impl;
- #define glfwRequestWindowAttention glfwRequestWindowAttention_impl
-
- typedef int (*glfwWindowBell_func)(GLFWwindow*);
--glfwWindowBell_func glfwWindowBell_impl;
-+GFW_EXTERN glfwWindowBell_func glfwWindowBell_impl;
- #define glfwWindowBell glfwWindowBell_impl
-
- typedef GLFWmonitor* (*glfwGetWindowMonitor_func)(GLFWwindow*);
--glfwGetWindowMonitor_func glfwGetWindowMonitor_impl;
-+GFW_EXTERN glfwGetWindowMonitor_func glfwGetWindowMonitor_impl;
- #define glfwGetWindowMonitor glfwGetWindowMonitor_impl
-
- typedef void (*glfwSetWindowMonitor_func)(GLFWwindow*, GLFWmonitor*, int, int, int, int, int);
--glfwSetWindowMonitor_func glfwSetWindowMonitor_impl;
-+GFW_EXTERN glfwSetWindowMonitor_func glfwSetWindowMonitor_impl;
- #define glfwSetWindowMonitor glfwSetWindowMonitor_impl
-
- typedef int (*glfwGetWindowAttrib_func)(GLFWwindow*, int);
--glfwGetWindowAttrib_func glfwGetWindowAttrib_impl;
-+GFW_EXTERN glfwGetWindowAttrib_func glfwGetWindowAttrib_impl;
- #define glfwGetWindowAttrib glfwGetWindowAttrib_impl
-
- typedef void (*glfwSetWindowAttrib_func)(GLFWwindow*, int, int);
--glfwSetWindowAttrib_func glfwSetWindowAttrib_impl;
-+GFW_EXTERN glfwSetWindowAttrib_func glfwSetWindowAttrib_impl;
- #define glfwSetWindowAttrib glfwSetWindowAttrib_impl
-
- typedef void (*glfwSetWindowUserPointer_func)(GLFWwindow*, void*);
--glfwSetWindowUserPointer_func glfwSetWindowUserPointer_impl;
-+GFW_EXTERN glfwSetWindowUserPointer_func glfwSetWindowUserPointer_impl;
- #define glfwSetWindowUserPointer glfwSetWindowUserPointer_impl
-
- typedef void* (*glfwGetWindowUserPointer_func)(GLFWwindow*);
--glfwGetWindowUserPointer_func glfwGetWindowUserPointer_impl;
-+GFW_EXTERN glfwGetWindowUserPointer_func glfwGetWindowUserPointer_impl;
- #define glfwGetWindowUserPointer glfwGetWindowUserPointer_impl
-
- typedef GLFWwindowposfun (*glfwSetWindowPosCallback_func)(GLFWwindow*, GLFWwindowposfun);
--glfwSetWindowPosCallback_func glfwSetWindowPosCallback_impl;
-+GFW_EXTERN glfwSetWindowPosCallback_func glfwSetWindowPosCallback_impl;
- #define glfwSetWindowPosCallback glfwSetWindowPosCallback_impl
-
- typedef GLFWwindowsizefun (*glfwSetWindowSizeCallback_func)(GLFWwindow*, GLFWwindowsizefun);
--glfwSetWindowSizeCallback_func glfwSetWindowSizeCallback_impl;
-+GFW_EXTERN glfwSetWindowSizeCallback_func glfwSetWindowSizeCallback_impl;
- #define glfwSetWindowSizeCallback glfwSetWindowSizeCallback_impl
-
- typedef GLFWwindowclosefun (*glfwSetWindowCloseCallback_func)(GLFWwindow*, GLFWwindowclosefun);
--glfwSetWindowCloseCallback_func glfwSetWindowCloseCallback_impl;
-+GFW_EXTERN glfwSetWindowCloseCallback_func glfwSetWindowCloseCallback_impl;
- #define glfwSetWindowCloseCallback glfwSetWindowCloseCallback_impl
-
- typedef GLFWwindowrefreshfun (*glfwSetWindowRefreshCallback_func)(GLFWwindow*, GLFWwindowrefreshfun);
--glfwSetWindowRefreshCallback_func glfwSetWindowRefreshCallback_impl;
-+GFW_EXTERN glfwSetWindowRefreshCallback_func glfwSetWindowRefreshCallback_impl;
- #define glfwSetWindowRefreshCallback glfwSetWindowRefreshCallback_impl
-
- typedef GLFWwindowfocusfun (*glfwSetWindowFocusCallback_func)(GLFWwindow*, GLFWwindowfocusfun);
--glfwSetWindowFocusCallback_func glfwSetWindowFocusCallback_impl;
-+GFW_EXTERN glfwSetWindowFocusCallback_func glfwSetWindowFocusCallback_impl;
- #define glfwSetWindowFocusCallback glfwSetWindowFocusCallback_impl
-
- typedef GLFWwindowocclusionfun (*glfwSetWindowOcclusionCallback_func)(GLFWwindow*, GLFWwindowocclusionfun);
--glfwSetWindowOcclusionCallback_func glfwSetWindowOcclusionCallback_impl;
-+GFW_EXTERN glfwSetWindowOcclusionCallback_func glfwSetWindowOcclusionCallback_impl;
- #define glfwSetWindowOcclusionCallback glfwSetWindowOcclusionCallback_impl
-
- typedef GLFWwindowiconifyfun (*glfwSetWindowIconifyCallback_func)(GLFWwindow*, GLFWwindowiconifyfun);
--glfwSetWindowIconifyCallback_func glfwSetWindowIconifyCallback_impl;
-+GFW_EXTERN glfwSetWindowIconifyCallback_func glfwSetWindowIconifyCallback_impl;
- #define glfwSetWindowIconifyCallback glfwSetWindowIconifyCallback_impl
-
- typedef GLFWwindowmaximizefun (*glfwSetWindowMaximizeCallback_func)(GLFWwindow*, GLFWwindowmaximizefun);
--glfwSetWindowMaximizeCallback_func glfwSetWindowMaximizeCallback_impl;
-+GFW_EXTERN glfwSetWindowMaximizeCallback_func glfwSetWindowMaximizeCallback_impl;
- #define glfwSetWindowMaximizeCallback glfwSetWindowMaximizeCallback_impl
-
- typedef GLFWframebuffersizefun (*glfwSetFramebufferSizeCallback_func)(GLFWwindow*, GLFWframebuffersizefun);
--glfwSetFramebufferSizeCallback_func glfwSetFramebufferSizeCallback_impl;
-+GFW_EXTERN glfwSetFramebufferSizeCallback_func glfwSetFramebufferSizeCallback_impl;
- #define glfwSetFramebufferSizeCallback glfwSetFramebufferSizeCallback_impl
-
- typedef GLFWwindowcontentscalefun (*glfwSetWindowContentScaleCallback_func)(GLFWwindow*, GLFWwindowcontentscalefun);
--glfwSetWindowContentScaleCallback_func glfwSetWindowContentScaleCallback_impl;
-+GFW_EXTERN glfwSetWindowContentScaleCallback_func glfwSetWindowContentScaleCallback_impl;
- #define glfwSetWindowContentScaleCallback glfwSetWindowContentScaleCallback_impl
-
- typedef void (*glfwPostEmptyEvent_func)(void);
--glfwPostEmptyEvent_func glfwPostEmptyEvent_impl;
-+GFW_EXTERN glfwPostEmptyEvent_func glfwPostEmptyEvent_impl;
- #define glfwPostEmptyEvent glfwPostEmptyEvent_impl
-
- typedef int (*glfwGetInputMode_func)(GLFWwindow*, int);
--glfwGetInputMode_func glfwGetInputMode_impl;
-+GFW_EXTERN glfwGetInputMode_func glfwGetInputMode_impl;
- #define glfwGetInputMode glfwGetInputMode_impl
-
- typedef void (*glfwSetInputMode_func)(GLFWwindow*, int, int);
--glfwSetInputMode_func glfwSetInputMode_impl;
-+GFW_EXTERN glfwSetInputMode_func glfwSetInputMode_impl;
- #define glfwSetInputMode glfwSetInputMode_impl
-
- typedef const char* (*glfwGetKeyName_func)(int, int);
--glfwGetKeyName_func glfwGetKeyName_impl;
-+GFW_EXTERN glfwGetKeyName_func glfwGetKeyName_impl;
- #define glfwGetKeyName glfwGetKeyName_impl
-
- typedef int (*glfwGetNativeKeyForKey_func)(int);
--glfwGetNativeKeyForKey_func glfwGetNativeKeyForKey_impl;
-+GFW_EXTERN glfwGetNativeKeyForKey_func glfwGetNativeKeyForKey_impl;
- #define glfwGetNativeKeyForKey glfwGetNativeKeyForKey_impl
-
- typedef int (*glfwGetKey_func)(GLFWwindow*, int);
--glfwGetKey_func glfwGetKey_impl;
-+GFW_EXTERN glfwGetKey_func glfwGetKey_impl;
- #define glfwGetKey glfwGetKey_impl
-
- typedef int (*glfwGetMouseButton_func)(GLFWwindow*, int);
--glfwGetMouseButton_func glfwGetMouseButton_impl;
-+GFW_EXTERN glfwGetMouseButton_func glfwGetMouseButton_impl;
- #define glfwGetMouseButton glfwGetMouseButton_impl
-
- typedef void (*glfwGetCursorPos_func)(GLFWwindow*, double*, double*);
--glfwGetCursorPos_func glfwGetCursorPos_impl;
-+GFW_EXTERN glfwGetCursorPos_func glfwGetCursorPos_impl;
- #define glfwGetCursorPos glfwGetCursorPos_impl
-
- typedef void (*glfwSetCursorPos_func)(GLFWwindow*, double, double);
--glfwSetCursorPos_func glfwSetCursorPos_impl;
-+GFW_EXTERN glfwSetCursorPos_func glfwSetCursorPos_impl;
- #define glfwSetCursorPos glfwSetCursorPos_impl
-
- typedef GLFWcursor* (*glfwCreateCursor_func)(const GLFWimage*, int, int, int);
--glfwCreateCursor_func glfwCreateCursor_impl;
-+GFW_EXTERN glfwCreateCursor_func glfwCreateCursor_impl;
- #define glfwCreateCursor glfwCreateCursor_impl
-
- typedef GLFWcursor* (*glfwCreateStandardCursor_func)(GLFWCursorShape);
--glfwCreateStandardCursor_func glfwCreateStandardCursor_impl;
-+GFW_EXTERN glfwCreateStandardCursor_func glfwCreateStandardCursor_impl;
- #define glfwCreateStandardCursor glfwCreateStandardCursor_impl
-
- typedef void (*glfwDestroyCursor_func)(GLFWcursor*);
--glfwDestroyCursor_func glfwDestroyCursor_impl;
-+GFW_EXTERN glfwDestroyCursor_func glfwDestroyCursor_impl;
- #define glfwDestroyCursor glfwDestroyCursor_impl
-
- typedef void (*glfwSetCursor_func)(GLFWwindow*, GLFWcursor*);
--glfwSetCursor_func glfwSetCursor_impl;
-+GFW_EXTERN glfwSetCursor_func glfwSetCursor_impl;
- #define glfwSetCursor glfwSetCursor_impl
-
- typedef GLFWkeyboardfun (*glfwSetKeyboardCallback_func)(GLFWwindow*, GLFWkeyboardfun);
--glfwSetKeyboardCallback_func glfwSetKeyboardCallback_impl;
-+GFW_EXTERN glfwSetKeyboardCallback_func glfwSetKeyboardCallback_impl;
- #define glfwSetKeyboardCallback glfwSetKeyboardCallback_impl
-
- typedef void (*glfwUpdateIMEState_func)(GLFWwindow*, int, int, int, int, int);
--glfwUpdateIMEState_func glfwUpdateIMEState_impl;
-+GFW_EXTERN glfwUpdateIMEState_func glfwUpdateIMEState_impl;
- #define glfwUpdateIMEState glfwUpdateIMEState_impl
-
- typedef GLFWmousebuttonfun (*glfwSetMouseButtonCallback_func)(GLFWwindow*, GLFWmousebuttonfun);
--glfwSetMouseButtonCallback_func glfwSetMouseButtonCallback_impl;
-+GFW_EXTERN glfwSetMouseButtonCallback_func glfwSetMouseButtonCallback_impl;
- #define glfwSetMouseButtonCallback glfwSetMouseButtonCallback_impl
-
- typedef GLFWcursorposfun (*glfwSetCursorPosCallback_func)(GLFWwindow*, GLFWcursorposfun);
--glfwSetCursorPosCallback_func glfwSetCursorPosCallback_impl;
-+GFW_EXTERN glfwSetCursorPosCallback_func glfwSetCursorPosCallback_impl;
- #define glfwSetCursorPosCallback glfwSetCursorPosCallback_impl
-
- typedef GLFWcursorenterfun (*glfwSetCursorEnterCallback_func)(GLFWwindow*, GLFWcursorenterfun);
--glfwSetCursorEnterCallback_func glfwSetCursorEnterCallback_impl;
-+GFW_EXTERN glfwSetCursorEnterCallback_func glfwSetCursorEnterCallback_impl;
- #define glfwSetCursorEnterCallback glfwSetCursorEnterCallback_impl
-
- typedef GLFWscrollfun (*glfwSetScrollCallback_func)(GLFWwindow*, GLFWscrollfun);
--glfwSetScrollCallback_func glfwSetScrollCallback_impl;
-+GFW_EXTERN glfwSetScrollCallback_func glfwSetScrollCallback_impl;
- #define glfwSetScrollCallback glfwSetScrollCallback_impl
-
- typedef GLFWdropfun (*glfwSetDropCallback_func)(GLFWwindow*, GLFWdropfun);
--glfwSetDropCallback_func glfwSetDropCallback_impl;
-+GFW_EXTERN glfwSetDropCallback_func glfwSetDropCallback_impl;
- #define glfwSetDropCallback glfwSetDropCallback_impl
-
- typedef GLFWliveresizefun (*glfwSetLiveResizeCallback_func)(GLFWwindow*, GLFWliveresizefun);
--glfwSetLiveResizeCallback_func glfwSetLiveResizeCallback_impl;
-+GFW_EXTERN glfwSetLiveResizeCallback_func glfwSetLiveResizeCallback_impl;
- #define glfwSetLiveResizeCallback glfwSetLiveResizeCallback_impl
-
- typedef int (*glfwJoystickPresent_func)(int);
--glfwJoystickPresent_func glfwJoystickPresent_impl;
-+GFW_EXTERN glfwJoystickPresent_func glfwJoystickPresent_impl;
- #define glfwJoystickPresent glfwJoystickPresent_impl
-
- typedef const float* (*glfwGetJoystickAxes_func)(int, int*);
--glfwGetJoystickAxes_func glfwGetJoystickAxes_impl;
-+GFW_EXTERN glfwGetJoystickAxes_func glfwGetJoystickAxes_impl;
- #define glfwGetJoystickAxes glfwGetJoystickAxes_impl
-
- typedef const unsigned char* (*glfwGetJoystickButtons_func)(int, int*);
--glfwGetJoystickButtons_func glfwGetJoystickButtons_impl;
-+GFW_EXTERN glfwGetJoystickButtons_func glfwGetJoystickButtons_impl;
- #define glfwGetJoystickButtons glfwGetJoystickButtons_impl
-
- typedef const unsigned char* (*glfwGetJoystickHats_func)(int, int*);
--glfwGetJoystickHats_func glfwGetJoystickHats_impl;
-+GFW_EXTERN glfwGetJoystickHats_func glfwGetJoystickHats_impl;
- #define glfwGetJoystickHats glfwGetJoystickHats_impl
-
- typedef const char* (*glfwGetJoystickName_func)(int);
--glfwGetJoystickName_func glfwGetJoystickName_impl;
-+GFW_EXTERN glfwGetJoystickName_func glfwGetJoystickName_impl;
- #define glfwGetJoystickName glfwGetJoystickName_impl
-
- typedef const char* (*glfwGetJoystickGUID_func)(int);
--glfwGetJoystickGUID_func glfwGetJoystickGUID_impl;
-+GFW_EXTERN glfwGetJoystickGUID_func glfwGetJoystickGUID_impl;
- #define glfwGetJoystickGUID glfwGetJoystickGUID_impl
-
- typedef void (*glfwSetJoystickUserPointer_func)(int, void*);
--glfwSetJoystickUserPointer_func glfwSetJoystickUserPointer_impl;
-+GFW_EXTERN glfwSetJoystickUserPointer_func glfwSetJoystickUserPointer_impl;
- #define glfwSetJoystickUserPointer glfwSetJoystickUserPointer_impl
-
- typedef void* (*glfwGetJoystickUserPointer_func)(int);
--glfwGetJoystickUserPointer_func glfwGetJoystickUserPointer_impl;
-+GFW_EXTERN glfwGetJoystickUserPointer_func glfwGetJoystickUserPointer_impl;
- #define glfwGetJoystickUserPointer glfwGetJoystickUserPointer_impl
-
- typedef int (*glfwJoystickIsGamepad_func)(int);
--glfwJoystickIsGamepad_func glfwJoystickIsGamepad_impl;
-+GFW_EXTERN glfwJoystickIsGamepad_func glfwJoystickIsGamepad_impl;
- #define glfwJoystickIsGamepad glfwJoystickIsGamepad_impl
-
- typedef GLFWjoystickfun (*glfwSetJoystickCallback_func)(GLFWjoystickfun);
--glfwSetJoystickCallback_func glfwSetJoystickCallback_impl;
-+GFW_EXTERN glfwSetJoystickCallback_func glfwSetJoystickCallback_impl;
- #define glfwSetJoystickCallback glfwSetJoystickCallback_impl
-
- typedef int (*glfwUpdateGamepadMappings_func)(const char*);
--glfwUpdateGamepadMappings_func glfwUpdateGamepadMappings_impl;
-+GFW_EXTERN glfwUpdateGamepadMappings_func glfwUpdateGamepadMappings_impl;
- #define glfwUpdateGamepadMappings glfwUpdateGamepadMappings_impl
-
- typedef const char* (*glfwGetGamepadName_func)(int);
--glfwGetGamepadName_func glfwGetGamepadName_impl;
-+GFW_EXTERN glfwGetGamepadName_func glfwGetGamepadName_impl;
- #define glfwGetGamepadName glfwGetGamepadName_impl
-
- typedef int (*glfwGetGamepadState_func)(int, GLFWgamepadstate*);
--glfwGetGamepadState_func glfwGetGamepadState_impl;
-+GFW_EXTERN glfwGetGamepadState_func glfwGetGamepadState_impl;
- #define glfwGetGamepadState glfwGetGamepadState_impl
-
- typedef void (*glfwSetClipboardString_func)(GLFWwindow*, const char*);
--glfwSetClipboardString_func glfwSetClipboardString_impl;
-+GFW_EXTERN glfwSetClipboardString_func glfwSetClipboardString_impl;
- #define glfwSetClipboardString glfwSetClipboardString_impl
-
- typedef const char* (*glfwGetClipboardString_func)(GLFWwindow*);
--glfwGetClipboardString_func glfwGetClipboardString_impl;
-+GFW_EXTERN glfwGetClipboardString_func glfwGetClipboardString_impl;
- #define glfwGetClipboardString glfwGetClipboardString_impl
-
- typedef monotonic_t (*glfwGetTime_func)(void);
--glfwGetTime_func glfwGetTime_impl;
-+GFW_EXTERN glfwGetTime_func glfwGetTime_impl;
- #define glfwGetTime glfwGetTime_impl
-
- typedef void (*glfwMakeContextCurrent_func)(GLFWwindow*);
--glfwMakeContextCurrent_func glfwMakeContextCurrent_impl;
-+GFW_EXTERN glfwMakeContextCurrent_func glfwMakeContextCurrent_impl;
- #define glfwMakeContextCurrent glfwMakeContextCurrent_impl
-
- typedef GLFWwindow* (*glfwGetCurrentContext_func)(void);
--glfwGetCurrentContext_func glfwGetCurrentContext_impl;
-+GFW_EXTERN glfwGetCurrentContext_func glfwGetCurrentContext_impl;
- #define glfwGetCurrentContext glfwGetCurrentContext_impl
-
- typedef void (*glfwSwapBuffers_func)(GLFWwindow*);
--glfwSwapBuffers_func glfwSwapBuffers_impl;
-+GFW_EXTERN glfwSwapBuffers_func glfwSwapBuffers_impl;
- #define glfwSwapBuffers glfwSwapBuffers_impl
-
- typedef void (*glfwSwapInterval_func)(int);
--glfwSwapInterval_func glfwSwapInterval_impl;
-+GFW_EXTERN glfwSwapInterval_func glfwSwapInterval_impl;
- #define glfwSwapInterval glfwSwapInterval_impl
-
- typedef int (*glfwExtensionSupported_func)(const char*);
--glfwExtensionSupported_func glfwExtensionSupported_impl;
-+GFW_EXTERN glfwExtensionSupported_func glfwExtensionSupported_impl;
- #define glfwExtensionSupported glfwExtensionSupported_impl
-
- typedef GLFWglproc (*glfwGetProcAddress_func)(const char*);
--glfwGetProcAddress_func glfwGetProcAddress_impl;
-+GFW_EXTERN glfwGetProcAddress_func glfwGetProcAddress_impl;
- #define glfwGetProcAddress glfwGetProcAddress_impl
-
- typedef int (*glfwVulkanSupported_func)(void);
--glfwVulkanSupported_func glfwVulkanSupported_impl;
-+GFW_EXTERN glfwVulkanSupported_func glfwVulkanSupported_impl;
- #define glfwVulkanSupported glfwVulkanSupported_impl
-
- typedef const char** (*glfwGetRequiredInstanceExtensions_func)(uint32_t*);
--glfwGetRequiredInstanceExtensions_func glfwGetRequiredInstanceExtensions_impl;
-+GFW_EXTERN glfwGetRequiredInstanceExtensions_func glfwGetRequiredInstanceExtensions_impl;
- #define glfwGetRequiredInstanceExtensions glfwGetRequiredInstanceExtensions_impl
-
- typedef void* (*glfwGetCocoaWindow_func)(GLFWwindow*);
--glfwGetCocoaWindow_func glfwGetCocoaWindow_impl;
-+GFW_EXTERN glfwGetCocoaWindow_func glfwGetCocoaWindow_impl;
- #define glfwGetCocoaWindow glfwGetCocoaWindow_impl
-
- typedef void* (*glfwGetNSGLContext_func)(GLFWwindow*);
--glfwGetNSGLContext_func glfwGetNSGLContext_impl;
-+GFW_EXTERN glfwGetNSGLContext_func glfwGetNSGLContext_impl;
- #define glfwGetNSGLContext glfwGetNSGLContext_impl
-
- typedef uint32_t (*glfwGetCocoaMonitor_func)(GLFWmonitor*);
--glfwGetCocoaMonitor_func glfwGetCocoaMonitor_impl;
-+GFW_EXTERN glfwGetCocoaMonitor_func glfwGetCocoaMonitor_impl;
- #define glfwGetCocoaMonitor glfwGetCocoaMonitor_impl
-
- typedef GLFWcocoatextinputfilterfun (*glfwSetCocoaTextInputFilter_func)(GLFWwindow*, GLFWcocoatextinputfilterfun);
--glfwSetCocoaTextInputFilter_func glfwSetCocoaTextInputFilter_impl;
-+GFW_EXTERN glfwSetCocoaTextInputFilter_func glfwSetCocoaTextInputFilter_impl;
- #define glfwSetCocoaTextInputFilter glfwSetCocoaTextInputFilter_impl
-
- typedef GLFWcocoatogglefullscreenfun (*glfwSetCocoaToggleFullscreenIntercept_func)(GLFWwindow*, GLFWcocoatogglefullscreenfun);
--glfwSetCocoaToggleFullscreenIntercept_func glfwSetCocoaToggleFullscreenIntercept_impl;
-+GFW_EXTERN glfwSetCocoaToggleFullscreenIntercept_func glfwSetCocoaToggleFullscreenIntercept_impl;
- #define glfwSetCocoaToggleFullscreenIntercept glfwSetCocoaToggleFullscreenIntercept_impl
-
- typedef GLFWapplicationshouldhandlereopenfun (*glfwSetApplicationShouldHandleReopen_func)(GLFWapplicationshouldhandlereopenfun);
--glfwSetApplicationShouldHandleReopen_func glfwSetApplicationShouldHandleReopen_impl;
-+GFW_EXTERN glfwSetApplicationShouldHandleReopen_func glfwSetApplicationShouldHandleReopen_impl;
- #define glfwSetApplicationShouldHandleReopen glfwSetApplicationShouldHandleReopen_impl
-
- typedef GLFWapplicationwillfinishlaunchingfun (*glfwSetApplicationWillFinishLaunching_func)(GLFWapplicationwillfinishlaunchingfun);
--glfwSetApplicationWillFinishLaunching_func glfwSetApplicationWillFinishLaunching_impl;
-+GFW_EXTERN glfwSetApplicationWillFinishLaunching_func glfwSetApplicationWillFinishLaunching_impl;
- #define glfwSetApplicationWillFinishLaunching glfwSetApplicationWillFinishLaunching_impl
-
- typedef void (*glfwGetCocoaKeyEquivalent_func)(int, int, char*, size_t, int*);
--glfwGetCocoaKeyEquivalent_func glfwGetCocoaKeyEquivalent_impl;
-+GFW_EXTERN glfwGetCocoaKeyEquivalent_func glfwGetCocoaKeyEquivalent_impl;
- #define glfwGetCocoaKeyEquivalent glfwGetCocoaKeyEquivalent_impl
-
- typedef void (*glfwCocoaRequestRenderFrame_func)(GLFWwindow*, GLFWcocoarenderframefun);
--glfwCocoaRequestRenderFrame_func glfwCocoaRequestRenderFrame_impl;
-+GFW_EXTERN glfwCocoaRequestRenderFrame_func glfwCocoaRequestRenderFrame_impl;
- #define glfwCocoaRequestRenderFrame glfwCocoaRequestRenderFrame_impl
-
- typedef void* (*glfwGetX11Display_func)(void);
--glfwGetX11Display_func glfwGetX11Display_impl;
-+GFW_EXTERN glfwGetX11Display_func glfwGetX11Display_impl;
- #define glfwGetX11Display glfwGetX11Display_impl
-
- typedef int32_t (*glfwGetX11Window_func)(GLFWwindow*);
--glfwGetX11Window_func glfwGetX11Window_impl;
-+GFW_EXTERN glfwGetX11Window_func glfwGetX11Window_impl;
- #define glfwGetX11Window glfwGetX11Window_impl
-
- typedef void (*glfwSetPrimarySelectionString_func)(GLFWwindow*, const char*);
--glfwSetPrimarySelectionString_func glfwSetPrimarySelectionString_impl;
-+GFW_EXTERN glfwSetPrimarySelectionString_func glfwSetPrimarySelectionString_impl;
- #define glfwSetPrimarySelectionString glfwSetPrimarySelectionString_impl
-
- typedef const char* (*glfwGetPrimarySelectionString_func)(GLFWwindow*);
--glfwGetPrimarySelectionString_func glfwGetPrimarySelectionString_impl;
-+GFW_EXTERN glfwGetPrimarySelectionString_func glfwGetPrimarySelectionString_impl;
- #define glfwGetPrimarySelectionString glfwGetPrimarySelectionString_impl
-
- typedef int (*glfwGetNativeKeyForName_func)(const char*, int);
--glfwGetNativeKeyForName_func glfwGetNativeKeyForName_impl;
-+GFW_EXTERN glfwGetNativeKeyForName_func glfwGetNativeKeyForName_impl;
- #define glfwGetNativeKeyForName glfwGetNativeKeyForName_impl
-
- typedef void (*glfwRequestWaylandFrameEvent_func)(GLFWwindow*, unsigned long long, GLFWwaylandframecallbackfunc);
--glfwRequestWaylandFrameEvent_func glfwRequestWaylandFrameEvent_impl;
-+GFW_EXTERN glfwRequestWaylandFrameEvent_func glfwRequestWaylandFrameEvent_impl;
- #define glfwRequestWaylandFrameEvent glfwRequestWaylandFrameEvent_impl
-
- typedef unsigned long long (*glfwDBusUserNotify_func)(const char*, const char*, const char*, const char*, const char*, int32_t, GLFWDBusnotificationcreatedfun, void*);
--glfwDBusUserNotify_func glfwDBusUserNotify_impl;
-+GFW_EXTERN glfwDBusUserNotify_func glfwDBusUserNotify_impl;
- #define glfwDBusUserNotify glfwDBusUserNotify_impl
-
- typedef void (*glfwDBusSetUserNotificationHandler_func)(GLFWDBusnotificationactivatedfun);
--glfwDBusSetUserNotificationHandler_func glfwDBusSetUserNotificationHandler_impl;
-+GFW_EXTERN glfwDBusSetUserNotificationHandler_func glfwDBusSetUserNotificationHandler_impl;
- #define glfwDBusSetUserNotificationHandler glfwDBusSetUserNotificationHandler_impl
-
- const char* load_glfw(const char* path);
-
-From 6dbdf72f40571e8a1ed1787ada4e08597e45ac75 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 17:55:38 +0530
-Subject: [PATCH 08/11] CoreText: When matching fonts prefer
- non-expanded/condensed variants
-
----
- kitty/core_text.m | 13 ++++++++-----
- kitty/fast_data_types.pyi | 3 +++
- kitty/fonts/core_text.py | 5 +++--
- 3 files changed, 14 insertions(+), 7 deletions(-)
-
-diff --git a/kitty/core_text.m b/kitty/core_text.m
-index 29036ea2f..229e8dc54 100644
---- a/kitty/core_text.m
-+++ b/kitty/core_text.m
-@@ -92,10 +92,10 @@
- NSString *style = (NSString *) CTFontDescriptorCopyAttribute(descriptor, kCTFontStyleNameAttribute);
- NSDictionary *traits = (NSDictionary *) CTFontDescriptorCopyAttribute(descriptor, kCTFontTraitsAttribute);
- unsigned int straits = [traits[(id)kCTFontSymbolicTrait] unsignedIntValue];
-- NSNumber *weightVal = traits[(id)kCTFontWeightTrait];
-- NSNumber *widthVal = traits[(id)kCTFontWidthTrait];
-+ float *weightVal = [traits[(id)kCTFontWeightTrait] floatValue];
-+ float widthVal = [traits[(id)kCTFontWidthTrait] floatValue];
-
-- PyObject *ans = Py_BuildValue("{ssssssss sOsOsO sfsfsI}",
-+ PyObject *ans = Py_BuildValue("{ssssssss sOsOsOsOsOsO sfsfsI}",
- "path", [[url path] UTF8String],
- "postscript_name", [psName UTF8String],
- "family", [family UTF8String],
-@@ -104,9 +104,12 @@
- "bold", (straits & kCTFontBoldTrait) != 0 ? Py_True : Py_False,
- "italic", (straits & kCTFontItalicTrait) != 0 ? Py_True : Py_False,
- "monospace", (straits & kCTFontMonoSpaceTrait) != 0 ? Py_True : Py_False,
-+ "expanded", (straits & kCTFontExpandedTrait) != 0 ? Py_True : Py_False,
-+ "condensed", (straits & kCTFontCondensedTrait) != 0 ? Py_True : Py_False,
-+ "color_glyphs", (straits & kCTFontColorGlyphsTrait) != 0 ? Py_True : Py_False,
-
-- "weight", [weightVal floatValue],
-- "width", [widthVal floatValue],
-+ "weight", weightVal,
-+ "width", widthVal,
- "traits", straits
- );
- [url release];
-diff --git a/kitty/fast_data_types.pyi b/kitty/fast_data_types.pyi
-index 4749e0c50..9333a8eaa 100644
---- a/kitty/fast_data_types.pyi
-+++ b/kitty/fast_data_types.pyi
-@@ -438,6 +438,9 @@ class CoreTextFont(TypedDict):
- style: str
- bold: bool
- italic: bool
-+ expanded: bool
-+ condensed: bool
-+ color_glyphs: bool
- monospace: bool
- weight: float
- width: float
-diff --git a/kitty/fonts/core_text.py b/kitty/fonts/core_text.py
-index 20567a3a1..5061b0fb2 100644
---- a/kitty/fonts/core_text.py
-+++ b/kitty/fonts/core_text.py
-@@ -54,12 +54,13 @@ def find_best_match(family: str, bold: bool = False, italic: bool = False) -> Co
- q = re.sub(r'\s+', ' ', family.lower())
- font_map = all_fonts_map()
-
-- def score(candidate: CoreTextFont) -> Tuple[int, int]:
-+ def score(candidate: CoreTextFont) -> Tuple[int, int, int]:
- style_match = 1 if candidate['bold'] == bold and candidate[
- 'italic'
- ] == italic else 0
- monospace_match = 1 if candidate['monospace'] else 0
-- return style_match, monospace_match
-+ is_regular_width = not candidate['expanded'] and not candidate['condensed']
-+ return style_match, monospace_match, 1 if is_regular_width else 0
-
- # First look for an exact match
- for selector in ('ps_map', 'full_map'):
-
-From 21c561043197f145fe7a478fdf078c4546c25914 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 18:02:44 +0530
-Subject: [PATCH 09/11] ...
-
----
- kitty/core_text.m | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/kitty/core_text.m b/kitty/core_text.m
-index 229e8dc54..23d1bcf5b 100644
---- a/kitty/core_text.m
-+++ b/kitty/core_text.m
-@@ -92,7 +92,7 @@
- NSString *style = (NSString *) CTFontDescriptorCopyAttribute(descriptor, kCTFontStyleNameAttribute);
- NSDictionary *traits = (NSDictionary *) CTFontDescriptorCopyAttribute(descriptor, kCTFontTraitsAttribute);
- unsigned int straits = [traits[(id)kCTFontSymbolicTrait] unsignedIntValue];
-- float *weightVal = [traits[(id)kCTFontWeightTrait] floatValue];
-+ float weightVal = [traits[(id)kCTFontWeightTrait] floatValue];
- float widthVal = [traits[(id)kCTFontWidthTrait] floatValue];
-
- PyObject *ans = Py_BuildValue("{ssssssss sOsOsOsOsOsO sfsfsI}",
-
-From a07369ce69660a940431fc5297940391d23a4803 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 18:14:14 +0530
-Subject: [PATCH 10/11] Update changelog
-
----
- docs/changelog.rst | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/docs/changelog.rst b/docs/changelog.rst
-index e9e137b43..c683c99ad 100644
---- a/docs/changelog.rst
-+++ b/docs/changelog.rst
-@@ -12,6 +12,9 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
- - Fix a regression in 0.17 that caused tab bar background to be rendered after
- the last tab as well (:iss:`2464`)
-
-+- macOS: Fix a regression in 0.17 that caused incorrect variants to be
-+ automatically selected for some fonts (:iss:`2462`)
-+
-
- 0.17.0 [2020-03-24]
- --------------------
-
-From 0547102bdd6ce3b71cf53f2cb75b2f85692789f5 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 18:33:32 +0530
-Subject: [PATCH 11/11] Fix #2468
-
----
- setup.py | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/setup.py b/setup.py
-index 917d29e6a..350d5e1fe 100755
---- a/setup.py
-+++ b/setup.py
-@@ -141,9 +141,12 @@ def cc_version() -> Tuple[str, Tuple[int, int]]:
- else:
- cc = 'cc'
- raw = subprocess.check_output([cc, '-dumpversion']).decode('utf-8')
-- ver_ = raw.split('.')[:2]
-+ ver_ = raw.strip().split('.')[:2]
- try:
-- ver = int(ver_[0]), int(ver_[1])
-+ if len(ver_) == 1:
-+ ver = int(ver_[0]), 0
-+ else:
-+ ver = int(ver_[0]), int(ver_[1])
- except Exception:
- ver = (0, 0)
- return cc, ver
diff --git a/kitty.spec b/kitty.spec
index 6e5d628..08e1366 100644
--- a/kitty.spec
+++ b/kitty.spec
@@ -3,7 +3,7 @@
%global build_ldflags %{build_ldflags} -flto
Name: kitty
-Version: 0.17.0
+Version: 0.17.1
Release: 1%{?dist}
Summary: Cross-platform, fast, feature full, GPU based terminal emulator
ExcludeArch: s390x ppc64le
@@ -18,16 +18,6 @@ Source0: https://github.com/kovidgoyal/kitty/archive/v%{version}/%{name}-
# * https://github.com/kovidgoyal/kitty/pull/2088
Source1: https://raw.githubusercontent.com/kovidgoyal/kitty/46c0951751444e4f499400...
-# Failed to compile with new GCC 10
-# * https://github.com/kovidgoyal/kitty/issues/2466
-#
-# Build error if compile with --debug
-# * https://github.com/kovidgoyal/kitty/issues/2468
-#
-# Some tests not passed on aarch64 and ppc64le arches
-# * https://github.com/kovidgoyal/kitty/issues/2469
-Patch0: https://github.com/kovidgoyal/kitty/compare/v0.17.0...master.patch#/kitty...
-
BuildRequires: desktop-file-utils
BuildRequires: gcc
BuildRequires: libappstream-glib
@@ -186,6 +176,9 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/*.desktop
%changelog
+* Tue Mar 24 2020 Artem Polishchuk <ego.cordatus(a)gmail.com> - 0.17.1-1
+- Update to 0.17.1
+
* Tue Mar 24 2020 Artem Polishchuk <ego.cordatus(a)gmail.com> - 0.17.0-1
- Update to 0.17.0
- Exclude arch ppc64le
diff --git a/sources b/sources
index 14af472..44d6632 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (kitty-0.17.0.tar.gz) = 30718d143da7f7825f992e90cd38d2743e03821c1d0bddac3cdebb7d308848f9dd271c203e9615d9ea77c7cc0c9621dd2c53d845f19a5f1d12afe63179996dd2
+SHA512 (kitty-0.17.1.tar.gz) = e7de00bbbba2172f3e7dba1809135b044f20f89ee156b1c6b7121a13f7589413cc9b2a264b30d2ab3e8cb9265a5291f3c932961b034e216735ec6704c5445200
commit 4a152008149967db6fa3bb2028719aac1da69fed
Author: Artem Polishchuk <ego.cordatus(a)gmail.com>
Date: Tue Mar 24 16:25:53 2020 +0200
Update to 0.17.0
Exclude arch ppc64le
diff --git a/compile-with-debug-fix.patch b/compile-with-debug-fix.patch
deleted file mode 100644
index b0c5304..0000000
--- a/compile-with-debug-fix.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 0547102bdd6ce3b71cf53f2cb75b2f85692789f5 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 18:33:32 +0530
-Subject: [PATCH] Fix #2468
-
----
- setup.py | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/setup.py b/setup.py
-index 917d29e6a..350d5e1fe 100755
---- a/setup.py
-+++ b/setup.py
-@@ -141,9 +141,12 @@ def cc_version() -> Tuple[str, Tuple[int, int]]:
- else:
- cc = 'cc'
- raw = subprocess.check_output([cc, '-dumpversion']).decode('utf-8')
-- ver_ = raw.split('.')[:2]
-+ ver_ = raw.strip().split('.')[:2]
- try:
-- ver = int(ver_[0]), int(ver_[1])
-+ if len(ver_) == 1:
-+ ver = int(ver_[0]), 0
-+ else:
-+ ver = int(ver_[0]), int(ver_[1])
- except Exception:
- ver = (0, 0)
- return cc, ver
diff --git a/kitty-gcc10.patch b/kitty-gcc10.patch
deleted file mode 100644
index a21216f..0000000
--- a/kitty-gcc10.patch
+++ /dev/null
@@ -1,750 +0,0 @@
-From 76a6bba64310024c2780ff26e5bbcd3f8b520b38 Mon Sep 17 00:00:00 2001
-From: Kovid Goyal <kovid(a)kovidgoyal.net>
-Date: Tue, 24 Mar 2020 17:07:37 +0530
-Subject: [PATCH] Fix #2466
-
----
- glfw/glfw.py | 6 +-
- kitty/glfw-wrapper.c | 1 +
- kitty/glfw-wrapper.h | 275 ++++++++++++++++++++++---------------------
- 3 files changed, 145 insertions(+), 137 deletions(-)
-
-diff --git a/glfw/glfw.py b/glfw/glfw.py
-index 77e2dee68..41c36daaa 100755
---- a/glfw/glfw.py
-+++ b/glfw/glfw.py
-@@ -165,7 +165,7 @@ def __init__(self, declaration: str, check_fail: bool = True):
- self.args = [Arg('void v')]
-
- def declaration(self) -> str:
-- return 'typedef {restype} (*{name}_func)({args});\n{name}_func {name}_impl;\n#define {name} {name}_impl'.format(
-+ return 'typedef {restype} (*{name}_func)({args});\nGFW_EXTERN {name}_func {name}_impl;\n#define {name} {name}_impl'.format(
- restype=self.restype,
- name=self.name,
- args=', '.join(a.type for a in self.args)
-@@ -233,6 +233,9 @@ def generate_wrappers(glfw_header: str) -> None:
- #include <stdint.h>
- #include "monotonic.h"
-
-+#ifndef GFW_EXTERN
-+#define GFW_EXTERN extern
-+#endif
- {}
-
- typedef int (* GLFWcocoatextinputfilterfun)(int,int,unsigned int,unsigned long);
-@@ -251,6 +254,7 @@ def generate_wrappers(glfw_header: str) -> None:
- f.write(header)
-
- code = '''
-+#define GFW_EXTERN
- #include "data-types.h"
- #include "glfw-wrapper.h"
- #include <dlfcn.h>
-diff --git a/kitty/glfw-wrapper.c b/kitty/glfw-wrapper.c
-index 1159529bf..3833977ee 100644
---- a/kitty/glfw-wrapper.c
-+++ b/kitty/glfw-wrapper.c
-@@ -1,4 +1,5 @@
-
-+#define GFW_EXTERN
- #include "data-types.h"
- #include "glfw-wrapper.h"
- #include <dlfcn.h>
-diff --git a/kitty/glfw-wrapper.h b/kitty/glfw-wrapper.h
-index ac4629f3a..b7a816761 100644
---- a/kitty/glfw-wrapper.h
-+++ b/kitty/glfw-wrapper.h
-@@ -9,6 +9,9 @@
- #include <stdint.h>
- #include "monotonic.h"
-
-+#ifndef GFW_EXTERN
-+#define GFW_EXTERN extern
-+#endif
-
-
- /*! @name GLFW version macros
-@@ -1587,547 +1590,547 @@ typedef void (*GLFWwaylandframecallbackfunc)(unsigned long long id);
- typedef void (*GLFWDBusnotificationcreatedfun)(unsigned long long, uint32_t, void*);
- typedef void (*GLFWDBusnotificationactivatedfun)(uint32_t, const char*);
- typedef int (*glfwInit_func)(monotonic_t);
--glfwInit_func glfwInit_impl;
-+GFW_EXTERN glfwInit_func glfwInit_impl;
- #define glfwInit glfwInit_impl
-
- typedef void (*glfwRunMainLoop_func)(GLFWtickcallback, void*);
--glfwRunMainLoop_func glfwRunMainLoop_impl;
-+GFW_EXTERN glfwRunMainLoop_func glfwRunMainLoop_impl;
- #define glfwRunMainLoop glfwRunMainLoop_impl
-
- typedef void (*glfwStopMainLoop_func)(void);
--glfwStopMainLoop_func glfwStopMainLoop_impl;
-+GFW_EXTERN glfwStopMainLoop_func glfwStopMainLoop_impl;
- #define glfwStopMainLoop glfwStopMainLoop_impl
-
- typedef unsigned long long (*glfwAddTimer_func)(monotonic_t, bool, GLFWuserdatafun, void *, GLFWuserdatafun);
--glfwAddTimer_func glfwAddTimer_impl;
-+GFW_EXTERN glfwAddTimer_func glfwAddTimer_impl;
- #define glfwAddTimer glfwAddTimer_impl
-
- typedef void (*glfwUpdateTimer_func)(unsigned long long, monotonic_t, bool);
--glfwUpdateTimer_func glfwUpdateTimer_impl;
-+GFW_EXTERN glfwUpdateTimer_func glfwUpdateTimer_impl;
- #define glfwUpdateTimer glfwUpdateTimer_impl
-
- typedef void (*glfwRemoveTimer_func)(unsigned long);
--glfwRemoveTimer_func glfwRemoveTimer_impl;
-+GFW_EXTERN glfwRemoveTimer_func glfwRemoveTimer_impl;
- #define glfwRemoveTimer glfwRemoveTimer_impl
-
- typedef void (*glfwTerminate_func)(void);
--glfwTerminate_func glfwTerminate_impl;
-+GFW_EXTERN glfwTerminate_func glfwTerminate_impl;
- #define glfwTerminate glfwTerminate_impl
-
- typedef void (*glfwInitHint_func)(int, int);
--glfwInitHint_func glfwInitHint_impl;
-+GFW_EXTERN glfwInitHint_func glfwInitHint_impl;
- #define glfwInitHint glfwInitHint_impl
-
- typedef void (*glfwGetVersion_func)(int*, int*, int*);
--glfwGetVersion_func glfwGetVersion_impl;
-+GFW_EXTERN glfwGetVersion_func glfwGetVersion_impl;
- #define glfwGetVersion glfwGetVersion_impl
-
- typedef const char* (*glfwGetVersionString_func)(void);
--glfwGetVersionString_func glfwGetVersionString_impl;
-+GFW_EXTERN glfwGetVersionString_func glfwGetVersionString_impl;
- #define glfwGetVersionString glfwGetVersionString_impl
-
- typedef int (*glfwGetError_func)(const char**);
--glfwGetError_func glfwGetError_impl;
-+GFW_EXTERN glfwGetError_func glfwGetError_impl;
- #define glfwGetError glfwGetError_impl
-
- typedef GLFWerrorfun (*glfwSetErrorCallback_func)(GLFWerrorfun);
--glfwSetErrorCallback_func glfwSetErrorCallback_impl;
-+GFW_EXTERN glfwSetErrorCallback_func glfwSetErrorCallback_impl;
- #define glfwSetErrorCallback glfwSetErrorCallback_impl
-
- typedef GLFWmonitor** (*glfwGetMonitors_func)(int*);
--glfwGetMonitors_func glfwGetMonitors_impl;
-+GFW_EXTERN glfwGetMonitors_func glfwGetMonitors_impl;
- #define glfwGetMonitors glfwGetMonitors_impl
-
- typedef GLFWmonitor* (*glfwGetPrimaryMonitor_func)(void);
--glfwGetPrimaryMonitor_func glfwGetPrimaryMonitor_impl;
-+GFW_EXTERN glfwGetPrimaryMonitor_func glfwGetPrimaryMonitor_impl;
- #define glfwGetPrimaryMonitor glfwGetPrimaryMonitor_impl
-
- typedef void (*glfwGetMonitorPos_func)(GLFWmonitor*, int*, int*);
--glfwGetMonitorPos_func glfwGetMonitorPos_impl;
-+GFW_EXTERN glfwGetMonitorPos_func glfwGetMonitorPos_impl;
- #define glfwGetMonitorPos glfwGetMonitorPos_impl
-
- typedef void (*glfwGetMonitorWorkarea_func)(GLFWmonitor*, int*, int*, int*, int*);
--glfwGetMonitorWorkarea_func glfwGetMonitorWorkarea_impl;
-+GFW_EXTERN glfwGetMonitorWorkarea_func glfwGetMonitorWorkarea_impl;
- #define glfwGetMonitorWorkarea glfwGetMonitorWorkarea_impl
-
- typedef void (*glfwGetMonitorPhysicalSize_func)(GLFWmonitor*, int*, int*);
--glfwGetMonitorPhysicalSize_func glfwGetMonitorPhysicalSize_impl;
-+GFW_EXTERN glfwGetMonitorPhysicalSize_func glfwGetMonitorPhysicalSize_impl;
- #define glfwGetMonitorPhysicalSize glfwGetMonitorPhysicalSize_impl
-
- typedef void (*glfwGetMonitorContentScale_func)(GLFWmonitor*, float*, float*);
--glfwGetMonitorContentScale_func glfwGetMonitorContentScale_impl;
-+GFW_EXTERN glfwGetMonitorContentScale_func glfwGetMonitorContentScale_impl;
- #define glfwGetMonitorContentScale glfwGetMonitorContentScale_impl
-
- typedef const char* (*glfwGetMonitorName_func)(GLFWmonitor*);
--glfwGetMonitorName_func glfwGetMonitorName_impl;
-+GFW_EXTERN glfwGetMonitorName_func glfwGetMonitorName_impl;
- #define glfwGetMonitorName glfwGetMonitorName_impl
-
- typedef void (*glfwSetMonitorUserPointer_func)(GLFWmonitor*, void*);
--glfwSetMonitorUserPointer_func glfwSetMonitorUserPointer_impl;
-+GFW_EXTERN glfwSetMonitorUserPointer_func glfwSetMonitorUserPointer_impl;
- #define glfwSetMonitorUserPointer glfwSetMonitorUserPointer_impl
-
- typedef void* (*glfwGetMonitorUserPointer_func)(GLFWmonitor*);
--glfwGetMonitorUserPointer_func glfwGetMonitorUserPointer_impl;
-+GFW_EXTERN glfwGetMonitorUserPointer_func glfwGetMonitorUserPointer_impl;
- #define glfwGetMonitorUserPointer glfwGetMonitorUserPointer_impl
-
- typedef GLFWmonitorfun (*glfwSetMonitorCallback_func)(GLFWmonitorfun);
--glfwSetMonitorCallback_func glfwSetMonitorCallback_impl;
-+GFW_EXTERN glfwSetMonitorCallback_func glfwSetMonitorCallback_impl;
- #define glfwSetMonitorCallback glfwSetMonitorCallback_impl
-
- typedef const GLFWvidmode* (*glfwGetVideoModes_func)(GLFWmonitor*, int*);
--glfwGetVideoModes_func glfwGetVideoModes_impl;
-+GFW_EXTERN glfwGetVideoModes_func glfwGetVideoModes_impl;
- #define glfwGetVideoModes glfwGetVideoModes_impl
-
- typedef const GLFWvidmode* (*glfwGetVideoMode_func)(GLFWmonitor*);
--glfwGetVideoMode_func glfwGetVideoMode_impl;
-+GFW_EXTERN glfwGetVideoMode_func glfwGetVideoMode_impl;
- #define glfwGetVideoMode glfwGetVideoMode_impl
-
- typedef void (*glfwSetGamma_func)(GLFWmonitor*, float);
--glfwSetGamma_func glfwSetGamma_impl;
-+GFW_EXTERN glfwSetGamma_func glfwSetGamma_impl;
- #define glfwSetGamma glfwSetGamma_impl
-
- typedef const GLFWgammaramp* (*glfwGetGammaRamp_func)(GLFWmonitor*);
--glfwGetGammaRamp_func glfwGetGammaRamp_impl;
-+GFW_EXTERN glfwGetGammaRamp_func glfwGetGammaRamp_impl;
- #define glfwGetGammaRamp glfwGetGammaRamp_impl
-
- typedef void (*glfwSetGammaRamp_func)(GLFWmonitor*, const GLFWgammaramp*);
--glfwSetGammaRamp_func glfwSetGammaRamp_impl;
-+GFW_EXTERN glfwSetGammaRamp_func glfwSetGammaRamp_impl;
- #define glfwSetGammaRamp glfwSetGammaRamp_impl
-
- typedef void (*glfwDefaultWindowHints_func)(void);
--glfwDefaultWindowHints_func glfwDefaultWindowHints_impl;
-+GFW_EXTERN glfwDefaultWindowHints_func glfwDefaultWindowHints_impl;
- #define glfwDefaultWindowHints glfwDefaultWindowHints_impl
-
- typedef void (*glfwWindowHint_func)(int, int);
--glfwWindowHint_func glfwWindowHint_impl;
-+GFW_EXTERN glfwWindowHint_func glfwWindowHint_impl;
- #define glfwWindowHint glfwWindowHint_impl
-
- typedef void (*glfwWindowHintString_func)(int, const char*);
--glfwWindowHintString_func glfwWindowHintString_impl;
-+GFW_EXTERN glfwWindowHintString_func glfwWindowHintString_impl;
- #define glfwWindowHintString glfwWindowHintString_impl
-
- typedef GLFWwindow* (*glfwCreateWindow_func)(int, int, const char*, GLFWmonitor*, GLFWwindow*);
--glfwCreateWindow_func glfwCreateWindow_impl;
-+GFW_EXTERN glfwCreateWindow_func glfwCreateWindow_impl;
- #define glfwCreateWindow glfwCreateWindow_impl
-
- typedef bool (*glfwToggleFullscreen_func)(GLFWwindow*, unsigned int);
--glfwToggleFullscreen_func glfwToggleFullscreen_impl;
-+GFW_EXTERN glfwToggleFullscreen_func glfwToggleFullscreen_impl;
- #define glfwToggleFullscreen glfwToggleFullscreen_impl
-
- typedef void (*glfwDestroyWindow_func)(GLFWwindow*);
--glfwDestroyWindow_func glfwDestroyWindow_impl;
-+GFW_EXTERN glfwDestroyWindow_func glfwDestroyWindow_impl;
- #define glfwDestroyWindow glfwDestroyWindow_impl
-
- typedef int (*glfwWindowShouldClose_func)(GLFWwindow*);
--glfwWindowShouldClose_func glfwWindowShouldClose_impl;
-+GFW_EXTERN glfwWindowShouldClose_func glfwWindowShouldClose_impl;
- #define glfwWindowShouldClose glfwWindowShouldClose_impl
-
- typedef void (*glfwSetWindowShouldClose_func)(GLFWwindow*, int);
--glfwSetWindowShouldClose_func glfwSetWindowShouldClose_impl;
-+GFW_EXTERN glfwSetWindowShouldClose_func glfwSetWindowShouldClose_impl;
- #define glfwSetWindowShouldClose glfwSetWindowShouldClose_impl
-
- typedef void (*glfwSetWindowTitle_func)(GLFWwindow*, const char*);
--glfwSetWindowTitle_func glfwSetWindowTitle_impl;
-+GFW_EXTERN glfwSetWindowTitle_func glfwSetWindowTitle_impl;
- #define glfwSetWindowTitle glfwSetWindowTitle_impl
-
- typedef void (*glfwSetWindowIcon_func)(GLFWwindow*, int, const GLFWimage*);
--glfwSetWindowIcon_func glfwSetWindowIcon_impl;
-+GFW_EXTERN glfwSetWindowIcon_func glfwSetWindowIcon_impl;
- #define glfwSetWindowIcon glfwSetWindowIcon_impl
-
- typedef void (*glfwGetWindowPos_func)(GLFWwindow*, int*, int*);
--glfwGetWindowPos_func glfwGetWindowPos_impl;
-+GFW_EXTERN glfwGetWindowPos_func glfwGetWindowPos_impl;
- #define glfwGetWindowPos glfwGetWindowPos_impl
-
- typedef void (*glfwSetWindowPos_func)(GLFWwindow*, int, int);
--glfwSetWindowPos_func glfwSetWindowPos_impl;
-+GFW_EXTERN glfwSetWindowPos_func glfwSetWindowPos_impl;
- #define glfwSetWindowPos glfwSetWindowPos_impl
-
- typedef void (*glfwGetWindowSize_func)(GLFWwindow*, int*, int*);
--glfwGetWindowSize_func glfwGetWindowSize_impl;
-+GFW_EXTERN glfwGetWindowSize_func glfwGetWindowSize_impl;
- #define glfwGetWindowSize glfwGetWindowSize_impl
-
- typedef void (*glfwSetWindowSizeLimits_func)(GLFWwindow*, int, int, int, int);
--glfwSetWindowSizeLimits_func glfwSetWindowSizeLimits_impl;
-+GFW_EXTERN glfwSetWindowSizeLimits_func glfwSetWindowSizeLimits_impl;
- #define glfwSetWindowSizeLimits glfwSetWindowSizeLimits_impl
-
- typedef void (*glfwSetWindowSizeIncrements_func)(GLFWwindow*, int, int);
--glfwSetWindowSizeIncrements_func glfwSetWindowSizeIncrements_impl;
-+GFW_EXTERN glfwSetWindowSizeIncrements_func glfwSetWindowSizeIncrements_impl;
- #define glfwSetWindowSizeIncrements glfwSetWindowSizeIncrements_impl
-
- typedef void (*glfwSetWindowAspectRatio_func)(GLFWwindow*, int, int);
--glfwSetWindowAspectRatio_func glfwSetWindowAspectRatio_impl;
-+GFW_EXTERN glfwSetWindowAspectRatio_func glfwSetWindowAspectRatio_impl;
- #define glfwSetWindowAspectRatio glfwSetWindowAspectRatio_impl
-
- typedef void (*glfwSetWindowSize_func)(GLFWwindow*, int, int);
--glfwSetWindowSize_func glfwSetWindowSize_impl;
-+GFW_EXTERN glfwSetWindowSize_func glfwSetWindowSize_impl;
- #define glfwSetWindowSize glfwSetWindowSize_impl
-
- typedef void (*glfwGetFramebufferSize_func)(GLFWwindow*, int*, int*);
--glfwGetFramebufferSize_func glfwGetFramebufferSize_impl;
-+GFW_EXTERN glfwGetFramebufferSize_func glfwGetFramebufferSize_impl;
- #define glfwGetFramebufferSize glfwGetFramebufferSize_impl
-
- typedef void (*glfwGetWindowFrameSize_func)(GLFWwindow*, int*, int*, int*, int*);
--glfwGetWindowFrameSize_func glfwGetWindowFrameSize_impl;
-+GFW_EXTERN glfwGetWindowFrameSize_func glfwGetWindowFrameSize_impl;
- #define glfwGetWindowFrameSize glfwGetWindowFrameSize_impl
-
- typedef void (*glfwGetWindowContentScale_func)(GLFWwindow*, float*, float*);
--glfwGetWindowContentScale_func glfwGetWindowContentScale_impl;
-+GFW_EXTERN glfwGetWindowContentScale_func glfwGetWindowContentScale_impl;
- #define glfwGetWindowContentScale glfwGetWindowContentScale_impl
-
- typedef monotonic_t (*glfwGetDoubleClickInterval_func)(GLFWwindow*);
--glfwGetDoubleClickInterval_func glfwGetDoubleClickInterval_impl;
-+GFW_EXTERN glfwGetDoubleClickInterval_func glfwGetDoubleClickInterval_impl;
- #define glfwGetDoubleClickInterval glfwGetDoubleClickInterval_impl
-
- typedef float (*glfwGetWindowOpacity_func)(GLFWwindow*);
--glfwGetWindowOpacity_func glfwGetWindowOpacity_impl;
-+GFW_EXTERN glfwGetWindowOpacity_func glfwGetWindowOpacity_impl;
- #define glfwGetWindowOpacity glfwGetWindowOpacity_impl
-
- typedef void (*glfwSetWindowOpacity_func)(GLFWwindow*, float);
--glfwSetWindowOpacity_func glfwSetWindowOpacity_impl;
-+GFW_EXTERN glfwSetWindowOpacity_func glfwSetWindowOpacity_impl;
- #define glfwSetWindowOpacity glfwSetWindowOpacity_impl
-
- typedef void (*glfwIconifyWindow_func)(GLFWwindow*);
--glfwIconifyWindow_func glfwIconifyWindow_impl;
-+GFW_EXTERN glfwIconifyWindow_func glfwIconifyWindow_impl;
- #define glfwIconifyWindow glfwIconifyWindow_impl
-
- typedef void (*glfwRestoreWindow_func)(GLFWwindow*);
--glfwRestoreWindow_func glfwRestoreWindow_impl;
-+GFW_EXTERN glfwRestoreWindow_func glfwRestoreWindow_impl;
- #define glfwRestoreWindow glfwRestoreWindow_impl
-
- typedef void (*glfwMaximizeWindow_func)(GLFWwindow*);
--glfwMaximizeWindow_func glfwMaximizeWindow_impl;
-+GFW_EXTERN glfwMaximizeWindow_func glfwMaximizeWindow_impl;
- #define glfwMaximizeWindow glfwMaximizeWindow_impl
-
- typedef void (*glfwShowWindow_func)(GLFWwindow*);
--glfwShowWindow_func glfwShowWindow_impl;
-+GFW_EXTERN glfwShowWindow_func glfwShowWindow_impl;
- #define glfwShowWindow glfwShowWindow_impl
-
- typedef void (*glfwHideWindow_func)(GLFWwindow*);
--glfwHideWindow_func glfwHideWindow_impl;
-+GFW_EXTERN glfwHideWindow_func glfwHideWindow_impl;
- #define glfwHideWindow glfwHideWindow_impl
-
- typedef void (*glfwFocusWindow_func)(GLFWwindow*);
--glfwFocusWindow_func glfwFocusWindow_impl;
-+GFW_EXTERN glfwFocusWindow_func glfwFocusWindow_impl;
- #define glfwFocusWindow glfwFocusWindow_impl
-
- typedef void (*glfwRequestWindowAttention_func)(GLFWwindow*);
--glfwRequestWindowAttention_func glfwRequestWindowAttention_impl;
-+GFW_EXTERN glfwRequestWindowAttention_func glfwRequestWindowAttention_impl;
- #define glfwRequestWindowAttention glfwRequestWindowAttention_impl
-
- typedef int (*glfwWindowBell_func)(GLFWwindow*);
--glfwWindowBell_func glfwWindowBell_impl;
-+GFW_EXTERN glfwWindowBell_func glfwWindowBell_impl;
- #define glfwWindowBell glfwWindowBell_impl
-
- typedef GLFWmonitor* (*glfwGetWindowMonitor_func)(GLFWwindow*);
--glfwGetWindowMonitor_func glfwGetWindowMonitor_impl;
-+GFW_EXTERN glfwGetWindowMonitor_func glfwGetWindowMonitor_impl;
- #define glfwGetWindowMonitor glfwGetWindowMonitor_impl
-
- typedef void (*glfwSetWindowMonitor_func)(GLFWwindow*, GLFWmonitor*, int, int, int, int, int);
--glfwSetWindowMonitor_func glfwSetWindowMonitor_impl;
-+GFW_EXTERN glfwSetWindowMonitor_func glfwSetWindowMonitor_impl;
- #define glfwSetWindowMonitor glfwSetWindowMonitor_impl
-
- typedef int (*glfwGetWindowAttrib_func)(GLFWwindow*, int);
--glfwGetWindowAttrib_func glfwGetWindowAttrib_impl;
-+GFW_EXTERN glfwGetWindowAttrib_func glfwGetWindowAttrib_impl;
- #define glfwGetWindowAttrib glfwGetWindowAttrib_impl
-
- typedef void (*glfwSetWindowAttrib_func)(GLFWwindow*, int, int);
--glfwSetWindowAttrib_func glfwSetWindowAttrib_impl;
-+GFW_EXTERN glfwSetWindowAttrib_func glfwSetWindowAttrib_impl;
- #define glfwSetWindowAttrib glfwSetWindowAttrib_impl
-
- typedef void (*glfwSetWindowUserPointer_func)(GLFWwindow*, void*);
--glfwSetWindowUserPointer_func glfwSetWindowUserPointer_impl;
-+GFW_EXTERN glfwSetWindowUserPointer_func glfwSetWindowUserPointer_impl;
- #define glfwSetWindowUserPointer glfwSetWindowUserPointer_impl
-
- typedef void* (*glfwGetWindowUserPointer_func)(GLFWwindow*);
--glfwGetWindowUserPointer_func glfwGetWindowUserPointer_impl;
-+GFW_EXTERN glfwGetWindowUserPointer_func glfwGetWindowUserPointer_impl;
- #define glfwGetWindowUserPointer glfwGetWindowUserPointer_impl
-
- typedef GLFWwindowposfun (*glfwSetWindowPosCallback_func)(GLFWwindow*, GLFWwindowposfun);
--glfwSetWindowPosCallback_func glfwSetWindowPosCallback_impl;
-+GFW_EXTERN glfwSetWindowPosCallback_func glfwSetWindowPosCallback_impl;
- #define glfwSetWindowPosCallback glfwSetWindowPosCallback_impl
-
- typedef GLFWwindowsizefun (*glfwSetWindowSizeCallback_func)(GLFWwindow*, GLFWwindowsizefun);
--glfwSetWindowSizeCallback_func glfwSetWindowSizeCallback_impl;
-+GFW_EXTERN glfwSetWindowSizeCallback_func glfwSetWindowSizeCallback_impl;
- #define glfwSetWindowSizeCallback glfwSetWindowSizeCallback_impl
-
- typedef GLFWwindowclosefun (*glfwSetWindowCloseCallback_func)(GLFWwindow*, GLFWwindowclosefun);
--glfwSetWindowCloseCallback_func glfwSetWindowCloseCallback_impl;
-+GFW_EXTERN glfwSetWindowCloseCallback_func glfwSetWindowCloseCallback_impl;
- #define glfwSetWindowCloseCallback glfwSetWindowCloseCallback_impl
-
- typedef GLFWwindowrefreshfun (*glfwSetWindowRefreshCallback_func)(GLFWwindow*, GLFWwindowrefreshfun);
--glfwSetWindowRefreshCallback_func glfwSetWindowRefreshCallback_impl;
-+GFW_EXTERN glfwSetWindowRefreshCallback_func glfwSetWindowRefreshCallback_impl;
- #define glfwSetWindowRefreshCallback glfwSetWindowRefreshCallback_impl
-
- typedef GLFWwindowfocusfun (*glfwSetWindowFocusCallback_func)(GLFWwindow*, GLFWwindowfocusfun);
--glfwSetWindowFocusCallback_func glfwSetWindowFocusCallback_impl;
-+GFW_EXTERN glfwSetWindowFocusCallback_func glfwSetWindowFocusCallback_impl;
- #define glfwSetWindowFocusCallback glfwSetWindowFocusCallback_impl
-
- typedef GLFWwindowocclusionfun (*glfwSetWindowOcclusionCallback_func)(GLFWwindow*, GLFWwindowocclusionfun);
--glfwSetWindowOcclusionCallback_func glfwSetWindowOcclusionCallback_impl;
-+GFW_EXTERN glfwSetWindowOcclusionCallback_func glfwSetWindowOcclusionCallback_impl;
- #define glfwSetWindowOcclusionCallback glfwSetWindowOcclusionCallback_impl
-
- typedef GLFWwindowiconifyfun (*glfwSetWindowIconifyCallback_func)(GLFWwindow*, GLFWwindowiconifyfun);
--glfwSetWindowIconifyCallback_func glfwSetWindowIconifyCallback_impl;
-+GFW_EXTERN glfwSetWindowIconifyCallback_func glfwSetWindowIconifyCallback_impl;
- #define glfwSetWindowIconifyCallback glfwSetWindowIconifyCallback_impl
-
- typedef GLFWwindowmaximizefun (*glfwSetWindowMaximizeCallback_func)(GLFWwindow*, GLFWwindowmaximizefun);
--glfwSetWindowMaximizeCallback_func glfwSetWindowMaximizeCallback_impl;
-+GFW_EXTERN glfwSetWindowMaximizeCallback_func glfwSetWindowMaximizeCallback_impl;
- #define glfwSetWindowMaximizeCallback glfwSetWindowMaximizeCallback_impl
-
- typedef GLFWframebuffersizefun (*glfwSetFramebufferSizeCallback_func)(GLFWwindow*, GLFWframebuffersizefun);
--glfwSetFramebufferSizeCallback_func glfwSetFramebufferSizeCallback_impl;
-+GFW_EXTERN glfwSetFramebufferSizeCallback_func glfwSetFramebufferSizeCallback_impl;
- #define glfwSetFramebufferSizeCallback glfwSetFramebufferSizeCallback_impl
-
- typedef GLFWwindowcontentscalefun (*glfwSetWindowContentScaleCallback_func)(GLFWwindow*, GLFWwindowcontentscalefun);
--glfwSetWindowContentScaleCallback_func glfwSetWindowContentScaleCallback_impl;
-+GFW_EXTERN glfwSetWindowContentScaleCallback_func glfwSetWindowContentScaleCallback_impl;
- #define glfwSetWindowContentScaleCallback glfwSetWindowContentScaleCallback_impl
-
- typedef void (*glfwPostEmptyEvent_func)(void);
--glfwPostEmptyEvent_func glfwPostEmptyEvent_impl;
-+GFW_EXTERN glfwPostEmptyEvent_func glfwPostEmptyEvent_impl;
- #define glfwPostEmptyEvent glfwPostEmptyEvent_impl
-
- typedef int (*glfwGetInputMode_func)(GLFWwindow*, int);
--glfwGetInputMode_func glfwGetInputMode_impl;
-+GFW_EXTERN glfwGetInputMode_func glfwGetInputMode_impl;
- #define glfwGetInputMode glfwGetInputMode_impl
-
- typedef void (*glfwSetInputMode_func)(GLFWwindow*, int, int);
--glfwSetInputMode_func glfwSetInputMode_impl;
-+GFW_EXTERN glfwSetInputMode_func glfwSetInputMode_impl;
- #define glfwSetInputMode glfwSetInputMode_impl
-
- typedef const char* (*glfwGetKeyName_func)(int, int);
--glfwGetKeyName_func glfwGetKeyName_impl;
-+GFW_EXTERN glfwGetKeyName_func glfwGetKeyName_impl;
- #define glfwGetKeyName glfwGetKeyName_impl
-
- typedef int (*glfwGetNativeKeyForKey_func)(int);
--glfwGetNativeKeyForKey_func glfwGetNativeKeyForKey_impl;
-+GFW_EXTERN glfwGetNativeKeyForKey_func glfwGetNativeKeyForKey_impl;
- #define glfwGetNativeKeyForKey glfwGetNativeKeyForKey_impl
-
- typedef int (*glfwGetKey_func)(GLFWwindow*, int);
--glfwGetKey_func glfwGetKey_impl;
-+GFW_EXTERN glfwGetKey_func glfwGetKey_impl;
- #define glfwGetKey glfwGetKey_impl
-
- typedef int (*glfwGetMouseButton_func)(GLFWwindow*, int);
--glfwGetMouseButton_func glfwGetMouseButton_impl;
-+GFW_EXTERN glfwGetMouseButton_func glfwGetMouseButton_impl;
- #define glfwGetMouseButton glfwGetMouseButton_impl
-
- typedef void (*glfwGetCursorPos_func)(GLFWwindow*, double*, double*);
--glfwGetCursorPos_func glfwGetCursorPos_impl;
-+GFW_EXTERN glfwGetCursorPos_func glfwGetCursorPos_impl;
- #define glfwGetCursorPos glfwGetCursorPos_impl
-
- typedef void (*glfwSetCursorPos_func)(GLFWwindow*, double, double);
--glfwSetCursorPos_func glfwSetCursorPos_impl;
-+GFW_EXTERN glfwSetCursorPos_func glfwSetCursorPos_impl;
- #define glfwSetCursorPos glfwSetCursorPos_impl
-
- typedef GLFWcursor* (*glfwCreateCursor_func)(const GLFWimage*, int, int, int);
--glfwCreateCursor_func glfwCreateCursor_impl;
-+GFW_EXTERN glfwCreateCursor_func glfwCreateCursor_impl;
- #define glfwCreateCursor glfwCreateCursor_impl
-
- typedef GLFWcursor* (*glfwCreateStandardCursor_func)(GLFWCursorShape);
--glfwCreateStandardCursor_func glfwCreateStandardCursor_impl;
-+GFW_EXTERN glfwCreateStandardCursor_func glfwCreateStandardCursor_impl;
- #define glfwCreateStandardCursor glfwCreateStandardCursor_impl
-
- typedef void (*glfwDestroyCursor_func)(GLFWcursor*);
--glfwDestroyCursor_func glfwDestroyCursor_impl;
-+GFW_EXTERN glfwDestroyCursor_func glfwDestroyCursor_impl;
- #define glfwDestroyCursor glfwDestroyCursor_impl
-
- typedef void (*glfwSetCursor_func)(GLFWwindow*, GLFWcursor*);
--glfwSetCursor_func glfwSetCursor_impl;
-+GFW_EXTERN glfwSetCursor_func glfwSetCursor_impl;
- #define glfwSetCursor glfwSetCursor_impl
-
- typedef GLFWkeyboardfun (*glfwSetKeyboardCallback_func)(GLFWwindow*, GLFWkeyboardfun);
--glfwSetKeyboardCallback_func glfwSetKeyboardCallback_impl;
-+GFW_EXTERN glfwSetKeyboardCallback_func glfwSetKeyboardCallback_impl;
- #define glfwSetKeyboardCallback glfwSetKeyboardCallback_impl
-
- typedef void (*glfwUpdateIMEState_func)(GLFWwindow*, int, int, int, int, int);
--glfwUpdateIMEState_func glfwUpdateIMEState_impl;
-+GFW_EXTERN glfwUpdateIMEState_func glfwUpdateIMEState_impl;
- #define glfwUpdateIMEState glfwUpdateIMEState_impl
-
- typedef GLFWmousebuttonfun (*glfwSetMouseButtonCallback_func)(GLFWwindow*, GLFWmousebuttonfun);
--glfwSetMouseButtonCallback_func glfwSetMouseButtonCallback_impl;
-+GFW_EXTERN glfwSetMouseButtonCallback_func glfwSetMouseButtonCallback_impl;
- #define glfwSetMouseButtonCallback glfwSetMouseButtonCallback_impl
-
- typedef GLFWcursorposfun (*glfwSetCursorPosCallback_func)(GLFWwindow*, GLFWcursorposfun);
--glfwSetCursorPosCallback_func glfwSetCursorPosCallback_impl;
-+GFW_EXTERN glfwSetCursorPosCallback_func glfwSetCursorPosCallback_impl;
- #define glfwSetCursorPosCallback glfwSetCursorPosCallback_impl
-
- typedef GLFWcursorenterfun (*glfwSetCursorEnterCallback_func)(GLFWwindow*, GLFWcursorenterfun);
--glfwSetCursorEnterCallback_func glfwSetCursorEnterCallback_impl;
-+GFW_EXTERN glfwSetCursorEnterCallback_func glfwSetCursorEnterCallback_impl;
- #define glfwSetCursorEnterCallback glfwSetCursorEnterCallback_impl
-
- typedef GLFWscrollfun (*glfwSetScrollCallback_func)(GLFWwindow*, GLFWscrollfun);
--glfwSetScrollCallback_func glfwSetScrollCallback_impl;
-+GFW_EXTERN glfwSetScrollCallback_func glfwSetScrollCallback_impl;
- #define glfwSetScrollCallback glfwSetScrollCallback_impl
-
- typedef GLFWdropfun (*glfwSetDropCallback_func)(GLFWwindow*, GLFWdropfun);
--glfwSetDropCallback_func glfwSetDropCallback_impl;
-+GFW_EXTERN glfwSetDropCallback_func glfwSetDropCallback_impl;
- #define glfwSetDropCallback glfwSetDropCallback_impl
-
- typedef GLFWliveresizefun (*glfwSetLiveResizeCallback_func)(GLFWwindow*, GLFWliveresizefun);
--glfwSetLiveResizeCallback_func glfwSetLiveResizeCallback_impl;
-+GFW_EXTERN glfwSetLiveResizeCallback_func glfwSetLiveResizeCallback_impl;
- #define glfwSetLiveResizeCallback glfwSetLiveResizeCallback_impl
-
- typedef int (*glfwJoystickPresent_func)(int);
--glfwJoystickPresent_func glfwJoystickPresent_impl;
-+GFW_EXTERN glfwJoystickPresent_func glfwJoystickPresent_impl;
- #define glfwJoystickPresent glfwJoystickPresent_impl
-
- typedef const float* (*glfwGetJoystickAxes_func)(int, int*);
--glfwGetJoystickAxes_func glfwGetJoystickAxes_impl;
-+GFW_EXTERN glfwGetJoystickAxes_func glfwGetJoystickAxes_impl;
- #define glfwGetJoystickAxes glfwGetJoystickAxes_impl
-
- typedef const unsigned char* (*glfwGetJoystickButtons_func)(int, int*);
--glfwGetJoystickButtons_func glfwGetJoystickButtons_impl;
-+GFW_EXTERN glfwGetJoystickButtons_func glfwGetJoystickButtons_impl;
- #define glfwGetJoystickButtons glfwGetJoystickButtons_impl
-
- typedef const unsigned char* (*glfwGetJoystickHats_func)(int, int*);
--glfwGetJoystickHats_func glfwGetJoystickHats_impl;
-+GFW_EXTERN glfwGetJoystickHats_func glfwGetJoystickHats_impl;
- #define glfwGetJoystickHats glfwGetJoystickHats_impl
-
- typedef const char* (*glfwGetJoystickName_func)(int);
--glfwGetJoystickName_func glfwGetJoystickName_impl;
-+GFW_EXTERN glfwGetJoystickName_func glfwGetJoystickName_impl;
- #define glfwGetJoystickName glfwGetJoystickName_impl
-
- typedef const char* (*glfwGetJoystickGUID_func)(int);
--glfwGetJoystickGUID_func glfwGetJoystickGUID_impl;
-+GFW_EXTERN glfwGetJoystickGUID_func glfwGetJoystickGUID_impl;
- #define glfwGetJoystickGUID glfwGetJoystickGUID_impl
-
- typedef void (*glfwSetJoystickUserPointer_func)(int, void*);
--glfwSetJoystickUserPointer_func glfwSetJoystickUserPointer_impl;
-+GFW_EXTERN glfwSetJoystickUserPointer_func glfwSetJoystickUserPointer_impl;
- #define glfwSetJoystickUserPointer glfwSetJoystickUserPointer_impl
-
- typedef void* (*glfwGetJoystickUserPointer_func)(int);
--glfwGetJoystickUserPointer_func glfwGetJoystickUserPointer_impl;
-+GFW_EXTERN glfwGetJoystickUserPointer_func glfwGetJoystickUserPointer_impl;
- #define glfwGetJoystickUserPointer glfwGetJoystickUserPointer_impl
-
- typedef int (*glfwJoystickIsGamepad_func)(int);
--glfwJoystickIsGamepad_func glfwJoystickIsGamepad_impl;
-+GFW_EXTERN glfwJoystickIsGamepad_func glfwJoystickIsGamepad_impl;
- #define glfwJoystickIsGamepad glfwJoystickIsGamepad_impl
-
- typedef GLFWjoystickfun (*glfwSetJoystickCallback_func)(GLFWjoystickfun);
--glfwSetJoystickCallback_func glfwSetJoystickCallback_impl;
-+GFW_EXTERN glfwSetJoystickCallback_func glfwSetJoystickCallback_impl;
- #define glfwSetJoystickCallback glfwSetJoystickCallback_impl
-
- typedef int (*glfwUpdateGamepadMappings_func)(const char*);
--glfwUpdateGamepadMappings_func glfwUpdateGamepadMappings_impl;
-+GFW_EXTERN glfwUpdateGamepadMappings_func glfwUpdateGamepadMappings_impl;
- #define glfwUpdateGamepadMappings glfwUpdateGamepadMappings_impl
-
- typedef const char* (*glfwGetGamepadName_func)(int);
--glfwGetGamepadName_func glfwGetGamepadName_impl;
-+GFW_EXTERN glfwGetGamepadName_func glfwGetGamepadName_impl;
- #define glfwGetGamepadName glfwGetGamepadName_impl
-
- typedef int (*glfwGetGamepadState_func)(int, GLFWgamepadstate*);
--glfwGetGamepadState_func glfwGetGamepadState_impl;
-+GFW_EXTERN glfwGetGamepadState_func glfwGetGamepadState_impl;
- #define glfwGetGamepadState glfwGetGamepadState_impl
-
- typedef void (*glfwSetClipboardString_func)(GLFWwindow*, const char*);
--glfwSetClipboardString_func glfwSetClipboardString_impl;
-+GFW_EXTERN glfwSetClipboardString_func glfwSetClipboardString_impl;
- #define glfwSetClipboardString glfwSetClipboardString_impl
-
- typedef const char* (*glfwGetClipboardString_func)(GLFWwindow*);
--glfwGetClipboardString_func glfwGetClipboardString_impl;
-+GFW_EXTERN glfwGetClipboardString_func glfwGetClipboardString_impl;
- #define glfwGetClipboardString glfwGetClipboardString_impl
-
- typedef monotonic_t (*glfwGetTime_func)(void);
--glfwGetTime_func glfwGetTime_impl;
-+GFW_EXTERN glfwGetTime_func glfwGetTime_impl;
- #define glfwGetTime glfwGetTime_impl
-
- typedef void (*glfwMakeContextCurrent_func)(GLFWwindow*);
--glfwMakeContextCurrent_func glfwMakeContextCurrent_impl;
-+GFW_EXTERN glfwMakeContextCurrent_func glfwMakeContextCurrent_impl;
- #define glfwMakeContextCurrent glfwMakeContextCurrent_impl
-
- typedef GLFWwindow* (*glfwGetCurrentContext_func)(void);
--glfwGetCurrentContext_func glfwGetCurrentContext_impl;
-+GFW_EXTERN glfwGetCurrentContext_func glfwGetCurrentContext_impl;
- #define glfwGetCurrentContext glfwGetCurrentContext_impl
-
- typedef void (*glfwSwapBuffers_func)(GLFWwindow*);
--glfwSwapBuffers_func glfwSwapBuffers_impl;
-+GFW_EXTERN glfwSwapBuffers_func glfwSwapBuffers_impl;
- #define glfwSwapBuffers glfwSwapBuffers_impl
-
- typedef void (*glfwSwapInterval_func)(int);
--glfwSwapInterval_func glfwSwapInterval_impl;
-+GFW_EXTERN glfwSwapInterval_func glfwSwapInterval_impl;
- #define glfwSwapInterval glfwSwapInterval_impl
-
- typedef int (*glfwExtensionSupported_func)(const char*);
--glfwExtensionSupported_func glfwExtensionSupported_impl;
-+GFW_EXTERN glfwExtensionSupported_func glfwExtensionSupported_impl;
- #define glfwExtensionSupported glfwExtensionSupported_impl
-
- typedef GLFWglproc (*glfwGetProcAddress_func)(const char*);
--glfwGetProcAddress_func glfwGetProcAddress_impl;
-+GFW_EXTERN glfwGetProcAddress_func glfwGetProcAddress_impl;
- #define glfwGetProcAddress glfwGetProcAddress_impl
-
- typedef int (*glfwVulkanSupported_func)(void);
--glfwVulkanSupported_func glfwVulkanSupported_impl;
-+GFW_EXTERN glfwVulkanSupported_func glfwVulkanSupported_impl;
- #define glfwVulkanSupported glfwVulkanSupported_impl
-
- typedef const char** (*glfwGetRequiredInstanceExtensions_func)(uint32_t*);
--glfwGetRequiredInstanceExtensions_func glfwGetRequiredInstanceExtensions_impl;
-+GFW_EXTERN glfwGetRequiredInstanceExtensions_func glfwGetRequiredInstanceExtensions_impl;
- #define glfwGetRequiredInstanceExtensions glfwGetRequiredInstanceExtensions_impl
-
- typedef void* (*glfwGetCocoaWindow_func)(GLFWwindow*);
--glfwGetCocoaWindow_func glfwGetCocoaWindow_impl;
-+GFW_EXTERN glfwGetCocoaWindow_func glfwGetCocoaWindow_impl;
- #define glfwGetCocoaWindow glfwGetCocoaWindow_impl
-
- typedef void* (*glfwGetNSGLContext_func)(GLFWwindow*);
--glfwGetNSGLContext_func glfwGetNSGLContext_impl;
-+GFW_EXTERN glfwGetNSGLContext_func glfwGetNSGLContext_impl;
- #define glfwGetNSGLContext glfwGetNSGLContext_impl
-
- typedef uint32_t (*glfwGetCocoaMonitor_func)(GLFWmonitor*);
--glfwGetCocoaMonitor_func glfwGetCocoaMonitor_impl;
-+GFW_EXTERN glfwGetCocoaMonitor_func glfwGetCocoaMonitor_impl;
- #define glfwGetCocoaMonitor glfwGetCocoaMonitor_impl
-
- typedef GLFWcocoatextinputfilterfun (*glfwSetCocoaTextInputFilter_func)(GLFWwindow*, GLFWcocoatextinputfilterfun);
--glfwSetCocoaTextInputFilter_func glfwSetCocoaTextInputFilter_impl;
-+GFW_EXTERN glfwSetCocoaTextInputFilter_func glfwSetCocoaTextInputFilter_impl;
- #define glfwSetCocoaTextInputFilter glfwSetCocoaTextInputFilter_impl
-
- typedef GLFWcocoatogglefullscreenfun (*glfwSetCocoaToggleFullscreenIntercept_func)(GLFWwindow*, GLFWcocoatogglefullscreenfun);
--glfwSetCocoaToggleFullscreenIntercept_func glfwSetCocoaToggleFullscreenIntercept_impl;
-+GFW_EXTERN glfwSetCocoaToggleFullscreenIntercept_func glfwSetCocoaToggleFullscreenIntercept_impl;
- #define glfwSetCocoaToggleFullscreenIntercept glfwSetCocoaToggleFullscreenIntercept_impl
-
- typedef GLFWapplicationshouldhandlereopenfun (*glfwSetApplicationShouldHandleReopen_func)(GLFWapplicationshouldhandlereopenfun);
--glfwSetApplicationShouldHandleReopen_func glfwSetApplicationShouldHandleReopen_impl;
-+GFW_EXTERN glfwSetApplicationShouldHandleReopen_func glfwSetApplicationShouldHandleReopen_impl;
- #define glfwSetApplicationShouldHandleReopen glfwSetApplicationShouldHandleReopen_impl
-
- typedef GLFWapplicationwillfinishlaunchingfun (*glfwSetApplicationWillFinishLaunching_func)(GLFWapplicationwillfinishlaunchingfun);
--glfwSetApplicationWillFinishLaunching_func glfwSetApplicationWillFinishLaunching_impl;
-+GFW_EXTERN glfwSetApplicationWillFinishLaunching_func glfwSetApplicationWillFinishLaunching_impl;
- #define glfwSetApplicationWillFinishLaunching glfwSetApplicationWillFinishLaunching_impl
-
- typedef void (*glfwGetCocoaKeyEquivalent_func)(int, int, char*, size_t, int*);
--glfwGetCocoaKeyEquivalent_func glfwGetCocoaKeyEquivalent_impl;
-+GFW_EXTERN glfwGetCocoaKeyEquivalent_func glfwGetCocoaKeyEquivalent_impl;
- #define glfwGetCocoaKeyEquivalent glfwGetCocoaKeyEquivalent_impl
-
- typedef void (*glfwCocoaRequestRenderFrame_func)(GLFWwindow*, GLFWcocoarenderframefun);
--glfwCocoaRequestRenderFrame_func glfwCocoaRequestRenderFrame_impl;
-+GFW_EXTERN glfwCocoaRequestRenderFrame_func glfwCocoaRequestRenderFrame_impl;
- #define glfwCocoaRequestRenderFrame glfwCocoaRequestRenderFrame_impl
-
- typedef void* (*glfwGetX11Display_func)(void);
--glfwGetX11Display_func glfwGetX11Display_impl;
-+GFW_EXTERN glfwGetX11Display_func glfwGetX11Display_impl;
- #define glfwGetX11Display glfwGetX11Display_impl
-
- typedef int32_t (*glfwGetX11Window_func)(GLFWwindow*);
--glfwGetX11Window_func glfwGetX11Window_impl;
-+GFW_EXTERN glfwGetX11Window_func glfwGetX11Window_impl;
- #define glfwGetX11Window glfwGetX11Window_impl
-
- typedef void (*glfwSetPrimarySelectionString_func)(GLFWwindow*, const char*);
--glfwSetPrimarySelectionString_func glfwSetPrimarySelectionString_impl;
-+GFW_EXTERN glfwSetPrimarySelectionString_func glfwSetPrimarySelectionString_impl;
- #define glfwSetPrimarySelectionString glfwSetPrimarySelectionString_impl
-
- typedef const char* (*glfwGetPrimarySelectionString_func)(GLFWwindow*);
--glfwGetPrimarySelectionString_func glfwGetPrimarySelectionString_impl;
-+GFW_EXTERN glfwGetPrimarySelectionString_func glfwGetPrimarySelectionString_impl;
- #define glfwGetPrimarySelectionString glfwGetPrimarySelectionString_impl
-
- typedef int (*glfwGetNativeKeyForName_func)(const char*, int);
--glfwGetNativeKeyForName_func glfwGetNativeKeyForName_impl;
-+GFW_EXTERN glfwGetNativeKeyForName_func glfwGetNativeKeyForName_impl;
- #define glfwGetNativeKeyForName glfwGetNativeKeyForName_impl
-
- typedef void (*glfwRequestWaylandFrameEvent_func)(GLFWwindow*, unsigned long long, GLFWwaylandframecallbackfunc);
--glfwRequestWaylandFrameEvent_func glfwRequestWaylandFrameEvent_impl;
-+GFW_EXTERN glfwRequestWaylandFrameEvent_func glfwRequestWaylandFrameEvent_impl;
- #define glfwRequestWaylandFrameEvent glfwRequestWaylandFrameEvent_impl
-
- typedef unsigned long long (*glfwDBusUserNotify_func)(const char*, const char*, const char*, const char*, const char*, int32_t, GLFWDBusnotificationcreatedfun, void*);
--glfwDBusUserNotify_func glfwDBusUserNotify_impl;
-+GFW_EXTERN glfwDBusUserNotify_func glfwDBusUserNotify_impl;
- #define glfwDBusUserNotify glfwDBusUserNotify_impl
-
- typedef void (*glfwDBusSetUserNotificationHandler_func)(GLFWDBusnotificationactivatedfun);
--glfwDBusSetUserNotificationHandler_func glfwDBusSetUserNotificationHandler_impl;
-+GFW_EXTERN glfwDBusSetUserNotificationHandler_func glfwDBusSetUserNotificationHandler_impl;
- #define glfwDBusSetUserNotificationHandler glfwDBusSetUserNotificationHandler_impl
-
- const char* load_glfw(const char* path);
diff --git a/kitty-make-kitty-build-again.patch b/kitty-make-kitty-build-again.patch
new file mode 100644
index 0000000..a26545e
--- /dev/null
+++ b/kitty-make-kitty-build-again.patch
@@ -0,0 +1,1100 @@
+From 037111715a78a946f9913bbdecb95d3d377d73b0 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 11:34:29 +0530
+Subject: [PATCH 01/11] ...
+
+---
+ docs/layouts.rst | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/docs/layouts.rst b/docs/layouts.rst
+index 933db11ad..c6673b724 100644
+--- a/docs/layouts.rst
++++ b/docs/layouts.rst
+@@ -24,7 +24,7 @@ other in arbitrary arrangements, based on *Layouts*, see below for examples:
+
+ There are many different layouts available. They are all enabled by default,
+ you can switch layouts using :sc:`next_layout`. To control which layouts
+-are available use :opt:`enabled_layouts` the first listed layout becomes
++are available use :opt:`enabled_layouts`, the first listed layout becomes
+ the default. Individual layouts and how to use them are described below.
+
+ .. contents::
+
+From 33a84a609ccc5f21f487214a06b73848ea009551 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 11:35:34 +0530
+Subject: [PATCH 02/11] ...
+
+---
+ docs/changelog.rst | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/docs/changelog.rst b/docs/changelog.rst
+index cb1283211..f89a770aa 100644
+--- a/docs/changelog.rst
++++ b/docs/changelog.rst
+@@ -7,7 +7,7 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
+ 0.17.0 [2020-03-24]
+ --------------------
+
+-- A new :ref:`splits_layout` to arrange windows in arbitrary splits
++- :ref:`splits_layout` to arrange windows in arbitrary splits
+ (:iss:`2308`)
+
+ - Add support for specifying a background image, see :opt:`background_image`
+
+From c4f7c5c1cd337af14ac4a2c49ff5eeccbaec329f Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 11:58:30 +0530
+Subject: [PATCH 03/11] More explanation for OSC 52 extension
+
+---
+ docs/protocol-extensions.rst | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/docs/protocol-extensions.rst b/docs/protocol-extensions.rst
+index c91bdfc68..1a9bc0ae6 100644
+--- a/docs/protocol-extensions.rst
++++ b/docs/protocol-extensions.rst
+@@ -219,6 +219,11 @@ first, for example::
+ <ESC>]52;c;!<ESC>\
+
+ Here ``!`` is not valid base64 encoded text, so it clears the clipboard.
++Further, since it is invalid, it should be ignored by terminal emulators
++that do not support this extension, thereby making it safe to use, simply
++always send it before starting a new OSC 52 paste, even if you aren't chunking
++up large pastes, that way kitty wont concatenate your paste, and it will have
++no ill-effects in other terminal emulators.
+
+ In case you're using software that can't be easily adapted to this
+ protocol extension, it can be disabled by specifying ``no-append`` to the
+
+From 5227b1f98b5353a1a0f4e58ae19335ffa89257e3 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 15:53:13 +0530
+Subject: [PATCH 04/11] Fix :opt:`cursor_underline_thickness` not working
+
+Fixes #2465
+---
+ docs/changelog.rst | 7 +++++++
+ kitty/fonts.c | 2 +-
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/docs/changelog.rst b/docs/changelog.rst
+index f89a770aa..3bd8e3579 100644
+--- a/docs/changelog.rst
++++ b/docs/changelog.rst
+@@ -4,6 +4,13 @@ Changelog
+ |kitty| is a feature full, cross-platform, *fast*, GPU based terminal emulator.
+ To update |kitty|, :doc:`follow the instructions <binary>`.
+
++0.17.1 [future]
++--------------------
++
++- Fix :opt:`cursor_underline_thickness` not working (:iss:`2465`)
++
++
++- :ref:`splits_layout` to arrange windows in arbitrary splits
+ 0.17.0 [2020-03-24]
+ --------------------
+
+diff --git a/kitty/fonts.c b/kitty/fonts.c
+index 54e697665..b045587f5 100644
+--- a/kitty/fonts.c
++++ b/kitty/fonts.c
+@@ -1243,7 +1243,7 @@ send_prerendered_sprites(FontGroup *fg) {
+ current_send_sprite_to_gpu((FONTS_DATA_HANDLE)fg, x, y, z, fg->canvas);
+ do_increment(fg, &error);
+ if (error != 0) { sprite_map_set_error(error); PyErr_Print(); fatal("Failed"); }
+- PyObject *args = PyObject_CallFunction(prerender_function, "IIIIIffdd", fg->cell_width, fg->cell_height, fg->baseline, fg->underline_position, fg->underline_thickness, OPT(cursor_beam_thickness), fg->logical_dpi_x, fg->logical_dpi_y);
++ PyObject *args = PyObject_CallFunction(prerender_function, "IIIIIffdd", fg->cell_width, fg->cell_height, fg->baseline, fg->underline_position, fg->underline_thickness, OPT(cursor_beam_thickness), OPT(cursor_underline_thickness), fg->logical_dpi_x, fg->logical_dpi_y);
+ if (args == NULL) { PyErr_Print(); fatal("Failed to pre-render cells"); }
+ for (ssize_t i = 0; i < PyTuple_GET_SIZE(args) - 1; i++) {
+ x = fg->sprite_tracker.x; y = fg->sprite_tracker.y; z = fg->sprite_tracker.z;
+
+From 0d87b8fac5168171493cb0d8cef85d60e564c0b0 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 16:05:02 +0530
+Subject: [PATCH 05/11] Fix a regression in 0.17 that caused tab bar background
+ to be rendered after the last tab as well
+
+Fixes #2464
+---
+ docs/changelog.rst | 3 +++
+ kitty/tab_bar.py | 5 ++++-
+ 2 files changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/docs/changelog.rst b/docs/changelog.rst
+index 3bd8e3579..e5f189f2b 100644
+--- a/docs/changelog.rst
++++ b/docs/changelog.rst
+@@ -9,6 +9,9 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
+
+ - Fix :opt:`cursor_underline_thickness` not working (:iss:`2465`)
+
++- Fix a regression in 0.17 that caused tab bar background to be rendered after
++ the last tab as well (:iss:`2464`)
++
+
+ - :ref:`splits_layout` to arrange windows in arbitrary splits
+ 0.17.0 [2020-03-24]
+diff --git a/kitty/tab_bar.py b/kitty/tab_bar.py
+index 1b111eaa0..3d97741b9 100644
+--- a/kitty/tab_bar.py
++++ b/kitty/tab_bar.py
+@@ -66,6 +66,8 @@ def draw_title(draw_data: DrawData, screen: Screen, tab: TabBarData, index: int)
+
+
+ def draw_tab_with_separator(draw_data: DrawData, screen: Screen, tab: TabBarData, before: int, max_title_length: int, index: int, is_last: bool) -> int:
++ tab_bg = draw_data.active_bg if tab.is_active else draw_data.inactive_bg
++ screen.cursor.bg = as_rgb(color_as_int(tab_bg))
+ if draw_data.leading_spaces:
+ screen.draw(' ' * draw_data.leading_spaces)
+ draw_title(draw_data, screen, tab, index)
+@@ -138,6 +140,7 @@ def draw_tab_with_powerline(draw_data: DrawData, screen: Screen, tab: TabBarData
+ screen.draw(' ')
+ start_draw = 1
+
++ screen.cursor.bg = tab_bg
+ if min_title_length >= max_title_length:
+ screen.draw('')
+ else:
+@@ -179,7 +182,7 @@ def __init__(self, os_window_id: int, opts: Options):
+ s.color_profile.update_ansi_color_table(build_ansi_color_table(opts))
+ s.color_profile.set_configured_colors(
+ color_as_int(opts.inactive_tab_foreground),
+- color_as_int(opts.inactive_tab_background)
++ color_as_int(opts.background)
+ )
+ self.blank_rects: Tuple[Rect, ...] = ()
+ sep = opts.tab_separator
+
+From b0b8222a9672bd3865d0b42f9005e797cabd570c Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 17:04:17 +0530
+Subject: [PATCH 06/11] ...
+
+---
+ docs/changelog.rst | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/docs/changelog.rst b/docs/changelog.rst
+index e5f189f2b..e9e137b43 100644
+--- a/docs/changelog.rst
++++ b/docs/changelog.rst
+@@ -13,7 +13,6 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
+ the last tab as well (:iss:`2464`)
+
+
+-- :ref:`splits_layout` to arrange windows in arbitrary splits
+ 0.17.0 [2020-03-24]
+ --------------------
+
+
+From 76a6bba64310024c2780ff26e5bbcd3f8b520b38 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 17:07:37 +0530
+Subject: [PATCH 07/11] Fix #2466
+
+---
+ glfw/glfw.py | 6 +-
+ kitty/glfw-wrapper.c | 1 +
+ kitty/glfw-wrapper.h | 275 ++++++++++++++++++++++---------------------
+ 3 files changed, 145 insertions(+), 137 deletions(-)
+
+diff --git a/glfw/glfw.py b/glfw/glfw.py
+index 77e2dee68..41c36daaa 100755
+--- a/glfw/glfw.py
++++ b/glfw/glfw.py
+@@ -165,7 +165,7 @@ def __init__(self, declaration: str, check_fail: bool = True):
+ self.args = [Arg('void v')]
+
+ def declaration(self) -> str:
+- return 'typedef {restype} (*{name}_func)({args});\n{name}_func {name}_impl;\n#define {name} {name}_impl'.format(
++ return 'typedef {restype} (*{name}_func)({args});\nGFW_EXTERN {name}_func {name}_impl;\n#define {name} {name}_impl'.format(
+ restype=self.restype,
+ name=self.name,
+ args=', '.join(a.type for a in self.args)
+@@ -233,6 +233,9 @@ def generate_wrappers(glfw_header: str) -> None:
+ #include <stdint.h>
+ #include "monotonic.h"
+
++#ifndef GFW_EXTERN
++#define GFW_EXTERN extern
++#endif
+ {}
+
+ typedef int (* GLFWcocoatextinputfilterfun)(int,int,unsigned int,unsigned long);
+@@ -251,6 +254,7 @@ def generate_wrappers(glfw_header: str) -> None:
+ f.write(header)
+
+ code = '''
++#define GFW_EXTERN
+ #include "data-types.h"
+ #include "glfw-wrapper.h"
+ #include <dlfcn.h>
+diff --git a/kitty/glfw-wrapper.c b/kitty/glfw-wrapper.c
+index 1159529bf..3833977ee 100644
+--- a/kitty/glfw-wrapper.c
++++ b/kitty/glfw-wrapper.c
+@@ -1,4 +1,5 @@
+
++#define GFW_EXTERN
+ #include "data-types.h"
+ #include "glfw-wrapper.h"
+ #include <dlfcn.h>
+diff --git a/kitty/glfw-wrapper.h b/kitty/glfw-wrapper.h
+index ac4629f3a..b7a816761 100644
+--- a/kitty/glfw-wrapper.h
++++ b/kitty/glfw-wrapper.h
+@@ -9,6 +9,9 @@
+ #include <stdint.h>
+ #include "monotonic.h"
+
++#ifndef GFW_EXTERN
++#define GFW_EXTERN extern
++#endif
+
+
+ /*! @name GLFW version macros
+@@ -1587,547 +1590,547 @@ typedef void (*GLFWwaylandframecallbackfunc)(unsigned long long id);
+ typedef void (*GLFWDBusnotificationcreatedfun)(unsigned long long, uint32_t, void*);
+ typedef void (*GLFWDBusnotificationactivatedfun)(uint32_t, const char*);
+ typedef int (*glfwInit_func)(monotonic_t);
+-glfwInit_func glfwInit_impl;
++GFW_EXTERN glfwInit_func glfwInit_impl;
+ #define glfwInit glfwInit_impl
+
+ typedef void (*glfwRunMainLoop_func)(GLFWtickcallback, void*);
+-glfwRunMainLoop_func glfwRunMainLoop_impl;
++GFW_EXTERN glfwRunMainLoop_func glfwRunMainLoop_impl;
+ #define glfwRunMainLoop glfwRunMainLoop_impl
+
+ typedef void (*glfwStopMainLoop_func)(void);
+-glfwStopMainLoop_func glfwStopMainLoop_impl;
++GFW_EXTERN glfwStopMainLoop_func glfwStopMainLoop_impl;
+ #define glfwStopMainLoop glfwStopMainLoop_impl
+
+ typedef unsigned long long (*glfwAddTimer_func)(monotonic_t, bool, GLFWuserdatafun, void *, GLFWuserdatafun);
+-glfwAddTimer_func glfwAddTimer_impl;
++GFW_EXTERN glfwAddTimer_func glfwAddTimer_impl;
+ #define glfwAddTimer glfwAddTimer_impl
+
+ typedef void (*glfwUpdateTimer_func)(unsigned long long, monotonic_t, bool);
+-glfwUpdateTimer_func glfwUpdateTimer_impl;
++GFW_EXTERN glfwUpdateTimer_func glfwUpdateTimer_impl;
+ #define glfwUpdateTimer glfwUpdateTimer_impl
+
+ typedef void (*glfwRemoveTimer_func)(unsigned long);
+-glfwRemoveTimer_func glfwRemoveTimer_impl;
++GFW_EXTERN glfwRemoveTimer_func glfwRemoveTimer_impl;
+ #define glfwRemoveTimer glfwRemoveTimer_impl
+
+ typedef void (*glfwTerminate_func)(void);
+-glfwTerminate_func glfwTerminate_impl;
++GFW_EXTERN glfwTerminate_func glfwTerminate_impl;
+ #define glfwTerminate glfwTerminate_impl
+
+ typedef void (*glfwInitHint_func)(int, int);
+-glfwInitHint_func glfwInitHint_impl;
++GFW_EXTERN glfwInitHint_func glfwInitHint_impl;
+ #define glfwInitHint glfwInitHint_impl
+
+ typedef void (*glfwGetVersion_func)(int*, int*, int*);
+-glfwGetVersion_func glfwGetVersion_impl;
++GFW_EXTERN glfwGetVersion_func glfwGetVersion_impl;
+ #define glfwGetVersion glfwGetVersion_impl
+
+ typedef const char* (*glfwGetVersionString_func)(void);
+-glfwGetVersionString_func glfwGetVersionString_impl;
++GFW_EXTERN glfwGetVersionString_func glfwGetVersionString_impl;
+ #define glfwGetVersionString glfwGetVersionString_impl
+
+ typedef int (*glfwGetError_func)(const char**);
+-glfwGetError_func glfwGetError_impl;
++GFW_EXTERN glfwGetError_func glfwGetError_impl;
+ #define glfwGetError glfwGetError_impl
+
+ typedef GLFWerrorfun (*glfwSetErrorCallback_func)(GLFWerrorfun);
+-glfwSetErrorCallback_func glfwSetErrorCallback_impl;
++GFW_EXTERN glfwSetErrorCallback_func glfwSetErrorCallback_impl;
+ #define glfwSetErrorCallback glfwSetErrorCallback_impl
+
+ typedef GLFWmonitor** (*glfwGetMonitors_func)(int*);
+-glfwGetMonitors_func glfwGetMonitors_impl;
++GFW_EXTERN glfwGetMonitors_func glfwGetMonitors_impl;
+ #define glfwGetMonitors glfwGetMonitors_impl
+
+ typedef GLFWmonitor* (*glfwGetPrimaryMonitor_func)(void);
+-glfwGetPrimaryMonitor_func glfwGetPrimaryMonitor_impl;
++GFW_EXTERN glfwGetPrimaryMonitor_func glfwGetPrimaryMonitor_impl;
+ #define glfwGetPrimaryMonitor glfwGetPrimaryMonitor_impl
+
+ typedef void (*glfwGetMonitorPos_func)(GLFWmonitor*, int*, int*);
+-glfwGetMonitorPos_func glfwGetMonitorPos_impl;
++GFW_EXTERN glfwGetMonitorPos_func glfwGetMonitorPos_impl;
+ #define glfwGetMonitorPos glfwGetMonitorPos_impl
+
+ typedef void (*glfwGetMonitorWorkarea_func)(GLFWmonitor*, int*, int*, int*, int*);
+-glfwGetMonitorWorkarea_func glfwGetMonitorWorkarea_impl;
++GFW_EXTERN glfwGetMonitorWorkarea_func glfwGetMonitorWorkarea_impl;
+ #define glfwGetMonitorWorkarea glfwGetMonitorWorkarea_impl
+
+ typedef void (*glfwGetMonitorPhysicalSize_func)(GLFWmonitor*, int*, int*);
+-glfwGetMonitorPhysicalSize_func glfwGetMonitorPhysicalSize_impl;
++GFW_EXTERN glfwGetMonitorPhysicalSize_func glfwGetMonitorPhysicalSize_impl;
+ #define glfwGetMonitorPhysicalSize glfwGetMonitorPhysicalSize_impl
+
+ typedef void (*glfwGetMonitorContentScale_func)(GLFWmonitor*, float*, float*);
+-glfwGetMonitorContentScale_func glfwGetMonitorContentScale_impl;
++GFW_EXTERN glfwGetMonitorContentScale_func glfwGetMonitorContentScale_impl;
+ #define glfwGetMonitorContentScale glfwGetMonitorContentScale_impl
+
+ typedef const char* (*glfwGetMonitorName_func)(GLFWmonitor*);
+-glfwGetMonitorName_func glfwGetMonitorName_impl;
++GFW_EXTERN glfwGetMonitorName_func glfwGetMonitorName_impl;
+ #define glfwGetMonitorName glfwGetMonitorName_impl
+
+ typedef void (*glfwSetMonitorUserPointer_func)(GLFWmonitor*, void*);
+-glfwSetMonitorUserPointer_func glfwSetMonitorUserPointer_impl;
++GFW_EXTERN glfwSetMonitorUserPointer_func glfwSetMonitorUserPointer_impl;
+ #define glfwSetMonitorUserPointer glfwSetMonitorUserPointer_impl
+
+ typedef void* (*glfwGetMonitorUserPointer_func)(GLFWmonitor*);
+-glfwGetMonitorUserPointer_func glfwGetMonitorUserPointer_impl;
++GFW_EXTERN glfwGetMonitorUserPointer_func glfwGetMonitorUserPointer_impl;
+ #define glfwGetMonitorUserPointer glfwGetMonitorUserPointer_impl
+
+ typedef GLFWmonitorfun (*glfwSetMonitorCallback_func)(GLFWmonitorfun);
+-glfwSetMonitorCallback_func glfwSetMonitorCallback_impl;
++GFW_EXTERN glfwSetMonitorCallback_func glfwSetMonitorCallback_impl;
+ #define glfwSetMonitorCallback glfwSetMonitorCallback_impl
+
+ typedef const GLFWvidmode* (*glfwGetVideoModes_func)(GLFWmonitor*, int*);
+-glfwGetVideoModes_func glfwGetVideoModes_impl;
++GFW_EXTERN glfwGetVideoModes_func glfwGetVideoModes_impl;
+ #define glfwGetVideoModes glfwGetVideoModes_impl
+
+ typedef const GLFWvidmode* (*glfwGetVideoMode_func)(GLFWmonitor*);
+-glfwGetVideoMode_func glfwGetVideoMode_impl;
++GFW_EXTERN glfwGetVideoMode_func glfwGetVideoMode_impl;
+ #define glfwGetVideoMode glfwGetVideoMode_impl
+
+ typedef void (*glfwSetGamma_func)(GLFWmonitor*, float);
+-glfwSetGamma_func glfwSetGamma_impl;
++GFW_EXTERN glfwSetGamma_func glfwSetGamma_impl;
+ #define glfwSetGamma glfwSetGamma_impl
+
+ typedef const GLFWgammaramp* (*glfwGetGammaRamp_func)(GLFWmonitor*);
+-glfwGetGammaRamp_func glfwGetGammaRamp_impl;
++GFW_EXTERN glfwGetGammaRamp_func glfwGetGammaRamp_impl;
+ #define glfwGetGammaRamp glfwGetGammaRamp_impl
+
+ typedef void (*glfwSetGammaRamp_func)(GLFWmonitor*, const GLFWgammaramp*);
+-glfwSetGammaRamp_func glfwSetGammaRamp_impl;
++GFW_EXTERN glfwSetGammaRamp_func glfwSetGammaRamp_impl;
+ #define glfwSetGammaRamp glfwSetGammaRamp_impl
+
+ typedef void (*glfwDefaultWindowHints_func)(void);
+-glfwDefaultWindowHints_func glfwDefaultWindowHints_impl;
++GFW_EXTERN glfwDefaultWindowHints_func glfwDefaultWindowHints_impl;
+ #define glfwDefaultWindowHints glfwDefaultWindowHints_impl
+
+ typedef void (*glfwWindowHint_func)(int, int);
+-glfwWindowHint_func glfwWindowHint_impl;
++GFW_EXTERN glfwWindowHint_func glfwWindowHint_impl;
+ #define glfwWindowHint glfwWindowHint_impl
+
+ typedef void (*glfwWindowHintString_func)(int, const char*);
+-glfwWindowHintString_func glfwWindowHintString_impl;
++GFW_EXTERN glfwWindowHintString_func glfwWindowHintString_impl;
+ #define glfwWindowHintString glfwWindowHintString_impl
+
+ typedef GLFWwindow* (*glfwCreateWindow_func)(int, int, const char*, GLFWmonitor*, GLFWwindow*);
+-glfwCreateWindow_func glfwCreateWindow_impl;
++GFW_EXTERN glfwCreateWindow_func glfwCreateWindow_impl;
+ #define glfwCreateWindow glfwCreateWindow_impl
+
+ typedef bool (*glfwToggleFullscreen_func)(GLFWwindow*, unsigned int);
+-glfwToggleFullscreen_func glfwToggleFullscreen_impl;
++GFW_EXTERN glfwToggleFullscreen_func glfwToggleFullscreen_impl;
+ #define glfwToggleFullscreen glfwToggleFullscreen_impl
+
+ typedef void (*glfwDestroyWindow_func)(GLFWwindow*);
+-glfwDestroyWindow_func glfwDestroyWindow_impl;
++GFW_EXTERN glfwDestroyWindow_func glfwDestroyWindow_impl;
+ #define glfwDestroyWindow glfwDestroyWindow_impl
+
+ typedef int (*glfwWindowShouldClose_func)(GLFWwindow*);
+-glfwWindowShouldClose_func glfwWindowShouldClose_impl;
++GFW_EXTERN glfwWindowShouldClose_func glfwWindowShouldClose_impl;
+ #define glfwWindowShouldClose glfwWindowShouldClose_impl
+
+ typedef void (*glfwSetWindowShouldClose_func)(GLFWwindow*, int);
+-glfwSetWindowShouldClose_func glfwSetWindowShouldClose_impl;
++GFW_EXTERN glfwSetWindowShouldClose_func glfwSetWindowShouldClose_impl;
+ #define glfwSetWindowShouldClose glfwSetWindowShouldClose_impl
+
+ typedef void (*glfwSetWindowTitle_func)(GLFWwindow*, const char*);
+-glfwSetWindowTitle_func glfwSetWindowTitle_impl;
++GFW_EXTERN glfwSetWindowTitle_func glfwSetWindowTitle_impl;
+ #define glfwSetWindowTitle glfwSetWindowTitle_impl
+
+ typedef void (*glfwSetWindowIcon_func)(GLFWwindow*, int, const GLFWimage*);
+-glfwSetWindowIcon_func glfwSetWindowIcon_impl;
++GFW_EXTERN glfwSetWindowIcon_func glfwSetWindowIcon_impl;
+ #define glfwSetWindowIcon glfwSetWindowIcon_impl
+
+ typedef void (*glfwGetWindowPos_func)(GLFWwindow*, int*, int*);
+-glfwGetWindowPos_func glfwGetWindowPos_impl;
++GFW_EXTERN glfwGetWindowPos_func glfwGetWindowPos_impl;
+ #define glfwGetWindowPos glfwGetWindowPos_impl
+
+ typedef void (*glfwSetWindowPos_func)(GLFWwindow*, int, int);
+-glfwSetWindowPos_func glfwSetWindowPos_impl;
++GFW_EXTERN glfwSetWindowPos_func glfwSetWindowPos_impl;
+ #define glfwSetWindowPos glfwSetWindowPos_impl
+
+ typedef void (*glfwGetWindowSize_func)(GLFWwindow*, int*, int*);
+-glfwGetWindowSize_func glfwGetWindowSize_impl;
++GFW_EXTERN glfwGetWindowSize_func glfwGetWindowSize_impl;
+ #define glfwGetWindowSize glfwGetWindowSize_impl
+
+ typedef void (*glfwSetWindowSizeLimits_func)(GLFWwindow*, int, int, int, int);
+-glfwSetWindowSizeLimits_func glfwSetWindowSizeLimits_impl;
++GFW_EXTERN glfwSetWindowSizeLimits_func glfwSetWindowSizeLimits_impl;
+ #define glfwSetWindowSizeLimits glfwSetWindowSizeLimits_impl
+
+ typedef void (*glfwSetWindowSizeIncrements_func)(GLFWwindow*, int, int);
+-glfwSetWindowSizeIncrements_func glfwSetWindowSizeIncrements_impl;
++GFW_EXTERN glfwSetWindowSizeIncrements_func glfwSetWindowSizeIncrements_impl;
+ #define glfwSetWindowSizeIncrements glfwSetWindowSizeIncrements_impl
+
+ typedef void (*glfwSetWindowAspectRatio_func)(GLFWwindow*, int, int);
+-glfwSetWindowAspectRatio_func glfwSetWindowAspectRatio_impl;
++GFW_EXTERN glfwSetWindowAspectRatio_func glfwSetWindowAspectRatio_impl;
+ #define glfwSetWindowAspectRatio glfwSetWindowAspectRatio_impl
+
+ typedef void (*glfwSetWindowSize_func)(GLFWwindow*, int, int);
+-glfwSetWindowSize_func glfwSetWindowSize_impl;
++GFW_EXTERN glfwSetWindowSize_func glfwSetWindowSize_impl;
+ #define glfwSetWindowSize glfwSetWindowSize_impl
+
+ typedef void (*glfwGetFramebufferSize_func)(GLFWwindow*, int*, int*);
+-glfwGetFramebufferSize_func glfwGetFramebufferSize_impl;
++GFW_EXTERN glfwGetFramebufferSize_func glfwGetFramebufferSize_impl;
+ #define glfwGetFramebufferSize glfwGetFramebufferSize_impl
+
+ typedef void (*glfwGetWindowFrameSize_func)(GLFWwindow*, int*, int*, int*, int*);
+-glfwGetWindowFrameSize_func glfwGetWindowFrameSize_impl;
++GFW_EXTERN glfwGetWindowFrameSize_func glfwGetWindowFrameSize_impl;
+ #define glfwGetWindowFrameSize glfwGetWindowFrameSize_impl
+
+ typedef void (*glfwGetWindowContentScale_func)(GLFWwindow*, float*, float*);
+-glfwGetWindowContentScale_func glfwGetWindowContentScale_impl;
++GFW_EXTERN glfwGetWindowContentScale_func glfwGetWindowContentScale_impl;
+ #define glfwGetWindowContentScale glfwGetWindowContentScale_impl
+
+ typedef monotonic_t (*glfwGetDoubleClickInterval_func)(GLFWwindow*);
+-glfwGetDoubleClickInterval_func glfwGetDoubleClickInterval_impl;
++GFW_EXTERN glfwGetDoubleClickInterval_func glfwGetDoubleClickInterval_impl;
+ #define glfwGetDoubleClickInterval glfwGetDoubleClickInterval_impl
+
+ typedef float (*glfwGetWindowOpacity_func)(GLFWwindow*);
+-glfwGetWindowOpacity_func glfwGetWindowOpacity_impl;
++GFW_EXTERN glfwGetWindowOpacity_func glfwGetWindowOpacity_impl;
+ #define glfwGetWindowOpacity glfwGetWindowOpacity_impl
+
+ typedef void (*glfwSetWindowOpacity_func)(GLFWwindow*, float);
+-glfwSetWindowOpacity_func glfwSetWindowOpacity_impl;
++GFW_EXTERN glfwSetWindowOpacity_func glfwSetWindowOpacity_impl;
+ #define glfwSetWindowOpacity glfwSetWindowOpacity_impl
+
+ typedef void (*glfwIconifyWindow_func)(GLFWwindow*);
+-glfwIconifyWindow_func glfwIconifyWindow_impl;
++GFW_EXTERN glfwIconifyWindow_func glfwIconifyWindow_impl;
+ #define glfwIconifyWindow glfwIconifyWindow_impl
+
+ typedef void (*glfwRestoreWindow_func)(GLFWwindow*);
+-glfwRestoreWindow_func glfwRestoreWindow_impl;
++GFW_EXTERN glfwRestoreWindow_func glfwRestoreWindow_impl;
+ #define glfwRestoreWindow glfwRestoreWindow_impl
+
+ typedef void (*glfwMaximizeWindow_func)(GLFWwindow*);
+-glfwMaximizeWindow_func glfwMaximizeWindow_impl;
++GFW_EXTERN glfwMaximizeWindow_func glfwMaximizeWindow_impl;
+ #define glfwMaximizeWindow glfwMaximizeWindow_impl
+
+ typedef void (*glfwShowWindow_func)(GLFWwindow*);
+-glfwShowWindow_func glfwShowWindow_impl;
++GFW_EXTERN glfwShowWindow_func glfwShowWindow_impl;
+ #define glfwShowWindow glfwShowWindow_impl
+
+ typedef void (*glfwHideWindow_func)(GLFWwindow*);
+-glfwHideWindow_func glfwHideWindow_impl;
++GFW_EXTERN glfwHideWindow_func glfwHideWindow_impl;
+ #define glfwHideWindow glfwHideWindow_impl
+
+ typedef void (*glfwFocusWindow_func)(GLFWwindow*);
+-glfwFocusWindow_func glfwFocusWindow_impl;
++GFW_EXTERN glfwFocusWindow_func glfwFocusWindow_impl;
+ #define glfwFocusWindow glfwFocusWindow_impl
+
+ typedef void (*glfwRequestWindowAttention_func)(GLFWwindow*);
+-glfwRequestWindowAttention_func glfwRequestWindowAttention_impl;
++GFW_EXTERN glfwRequestWindowAttention_func glfwRequestWindowAttention_impl;
+ #define glfwRequestWindowAttention glfwRequestWindowAttention_impl
+
+ typedef int (*glfwWindowBell_func)(GLFWwindow*);
+-glfwWindowBell_func glfwWindowBell_impl;
++GFW_EXTERN glfwWindowBell_func glfwWindowBell_impl;
+ #define glfwWindowBell glfwWindowBell_impl
+
+ typedef GLFWmonitor* (*glfwGetWindowMonitor_func)(GLFWwindow*);
+-glfwGetWindowMonitor_func glfwGetWindowMonitor_impl;
++GFW_EXTERN glfwGetWindowMonitor_func glfwGetWindowMonitor_impl;
+ #define glfwGetWindowMonitor glfwGetWindowMonitor_impl
+
+ typedef void (*glfwSetWindowMonitor_func)(GLFWwindow*, GLFWmonitor*, int, int, int, int, int);
+-glfwSetWindowMonitor_func glfwSetWindowMonitor_impl;
++GFW_EXTERN glfwSetWindowMonitor_func glfwSetWindowMonitor_impl;
+ #define glfwSetWindowMonitor glfwSetWindowMonitor_impl
+
+ typedef int (*glfwGetWindowAttrib_func)(GLFWwindow*, int);
+-glfwGetWindowAttrib_func glfwGetWindowAttrib_impl;
++GFW_EXTERN glfwGetWindowAttrib_func glfwGetWindowAttrib_impl;
+ #define glfwGetWindowAttrib glfwGetWindowAttrib_impl
+
+ typedef void (*glfwSetWindowAttrib_func)(GLFWwindow*, int, int);
+-glfwSetWindowAttrib_func glfwSetWindowAttrib_impl;
++GFW_EXTERN glfwSetWindowAttrib_func glfwSetWindowAttrib_impl;
+ #define glfwSetWindowAttrib glfwSetWindowAttrib_impl
+
+ typedef void (*glfwSetWindowUserPointer_func)(GLFWwindow*, void*);
+-glfwSetWindowUserPointer_func glfwSetWindowUserPointer_impl;
++GFW_EXTERN glfwSetWindowUserPointer_func glfwSetWindowUserPointer_impl;
+ #define glfwSetWindowUserPointer glfwSetWindowUserPointer_impl
+
+ typedef void* (*glfwGetWindowUserPointer_func)(GLFWwindow*);
+-glfwGetWindowUserPointer_func glfwGetWindowUserPointer_impl;
++GFW_EXTERN glfwGetWindowUserPointer_func glfwGetWindowUserPointer_impl;
+ #define glfwGetWindowUserPointer glfwGetWindowUserPointer_impl
+
+ typedef GLFWwindowposfun (*glfwSetWindowPosCallback_func)(GLFWwindow*, GLFWwindowposfun);
+-glfwSetWindowPosCallback_func glfwSetWindowPosCallback_impl;
++GFW_EXTERN glfwSetWindowPosCallback_func glfwSetWindowPosCallback_impl;
+ #define glfwSetWindowPosCallback glfwSetWindowPosCallback_impl
+
+ typedef GLFWwindowsizefun (*glfwSetWindowSizeCallback_func)(GLFWwindow*, GLFWwindowsizefun);
+-glfwSetWindowSizeCallback_func glfwSetWindowSizeCallback_impl;
++GFW_EXTERN glfwSetWindowSizeCallback_func glfwSetWindowSizeCallback_impl;
+ #define glfwSetWindowSizeCallback glfwSetWindowSizeCallback_impl
+
+ typedef GLFWwindowclosefun (*glfwSetWindowCloseCallback_func)(GLFWwindow*, GLFWwindowclosefun);
+-glfwSetWindowCloseCallback_func glfwSetWindowCloseCallback_impl;
++GFW_EXTERN glfwSetWindowCloseCallback_func glfwSetWindowCloseCallback_impl;
+ #define glfwSetWindowCloseCallback glfwSetWindowCloseCallback_impl
+
+ typedef GLFWwindowrefreshfun (*glfwSetWindowRefreshCallback_func)(GLFWwindow*, GLFWwindowrefreshfun);
+-glfwSetWindowRefreshCallback_func glfwSetWindowRefreshCallback_impl;
++GFW_EXTERN glfwSetWindowRefreshCallback_func glfwSetWindowRefreshCallback_impl;
+ #define glfwSetWindowRefreshCallback glfwSetWindowRefreshCallback_impl
+
+ typedef GLFWwindowfocusfun (*glfwSetWindowFocusCallback_func)(GLFWwindow*, GLFWwindowfocusfun);
+-glfwSetWindowFocusCallback_func glfwSetWindowFocusCallback_impl;
++GFW_EXTERN glfwSetWindowFocusCallback_func glfwSetWindowFocusCallback_impl;
+ #define glfwSetWindowFocusCallback glfwSetWindowFocusCallback_impl
+
+ typedef GLFWwindowocclusionfun (*glfwSetWindowOcclusionCallback_func)(GLFWwindow*, GLFWwindowocclusionfun);
+-glfwSetWindowOcclusionCallback_func glfwSetWindowOcclusionCallback_impl;
++GFW_EXTERN glfwSetWindowOcclusionCallback_func glfwSetWindowOcclusionCallback_impl;
+ #define glfwSetWindowOcclusionCallback glfwSetWindowOcclusionCallback_impl
+
+ typedef GLFWwindowiconifyfun (*glfwSetWindowIconifyCallback_func)(GLFWwindow*, GLFWwindowiconifyfun);
+-glfwSetWindowIconifyCallback_func glfwSetWindowIconifyCallback_impl;
++GFW_EXTERN glfwSetWindowIconifyCallback_func glfwSetWindowIconifyCallback_impl;
+ #define glfwSetWindowIconifyCallback glfwSetWindowIconifyCallback_impl
+
+ typedef GLFWwindowmaximizefun (*glfwSetWindowMaximizeCallback_func)(GLFWwindow*, GLFWwindowmaximizefun);
+-glfwSetWindowMaximizeCallback_func glfwSetWindowMaximizeCallback_impl;
++GFW_EXTERN glfwSetWindowMaximizeCallback_func glfwSetWindowMaximizeCallback_impl;
+ #define glfwSetWindowMaximizeCallback glfwSetWindowMaximizeCallback_impl
+
+ typedef GLFWframebuffersizefun (*glfwSetFramebufferSizeCallback_func)(GLFWwindow*, GLFWframebuffersizefun);
+-glfwSetFramebufferSizeCallback_func glfwSetFramebufferSizeCallback_impl;
++GFW_EXTERN glfwSetFramebufferSizeCallback_func glfwSetFramebufferSizeCallback_impl;
+ #define glfwSetFramebufferSizeCallback glfwSetFramebufferSizeCallback_impl
+
+ typedef GLFWwindowcontentscalefun (*glfwSetWindowContentScaleCallback_func)(GLFWwindow*, GLFWwindowcontentscalefun);
+-glfwSetWindowContentScaleCallback_func glfwSetWindowContentScaleCallback_impl;
++GFW_EXTERN glfwSetWindowContentScaleCallback_func glfwSetWindowContentScaleCallback_impl;
+ #define glfwSetWindowContentScaleCallback glfwSetWindowContentScaleCallback_impl
+
+ typedef void (*glfwPostEmptyEvent_func)(void);
+-glfwPostEmptyEvent_func glfwPostEmptyEvent_impl;
++GFW_EXTERN glfwPostEmptyEvent_func glfwPostEmptyEvent_impl;
+ #define glfwPostEmptyEvent glfwPostEmptyEvent_impl
+
+ typedef int (*glfwGetInputMode_func)(GLFWwindow*, int);
+-glfwGetInputMode_func glfwGetInputMode_impl;
++GFW_EXTERN glfwGetInputMode_func glfwGetInputMode_impl;
+ #define glfwGetInputMode glfwGetInputMode_impl
+
+ typedef void (*glfwSetInputMode_func)(GLFWwindow*, int, int);
+-glfwSetInputMode_func glfwSetInputMode_impl;
++GFW_EXTERN glfwSetInputMode_func glfwSetInputMode_impl;
+ #define glfwSetInputMode glfwSetInputMode_impl
+
+ typedef const char* (*glfwGetKeyName_func)(int, int);
+-glfwGetKeyName_func glfwGetKeyName_impl;
++GFW_EXTERN glfwGetKeyName_func glfwGetKeyName_impl;
+ #define glfwGetKeyName glfwGetKeyName_impl
+
+ typedef int (*glfwGetNativeKeyForKey_func)(int);
+-glfwGetNativeKeyForKey_func glfwGetNativeKeyForKey_impl;
++GFW_EXTERN glfwGetNativeKeyForKey_func glfwGetNativeKeyForKey_impl;
+ #define glfwGetNativeKeyForKey glfwGetNativeKeyForKey_impl
+
+ typedef int (*glfwGetKey_func)(GLFWwindow*, int);
+-glfwGetKey_func glfwGetKey_impl;
++GFW_EXTERN glfwGetKey_func glfwGetKey_impl;
+ #define glfwGetKey glfwGetKey_impl
+
+ typedef int (*glfwGetMouseButton_func)(GLFWwindow*, int);
+-glfwGetMouseButton_func glfwGetMouseButton_impl;
++GFW_EXTERN glfwGetMouseButton_func glfwGetMouseButton_impl;
+ #define glfwGetMouseButton glfwGetMouseButton_impl
+
+ typedef void (*glfwGetCursorPos_func)(GLFWwindow*, double*, double*);
+-glfwGetCursorPos_func glfwGetCursorPos_impl;
++GFW_EXTERN glfwGetCursorPos_func glfwGetCursorPos_impl;
+ #define glfwGetCursorPos glfwGetCursorPos_impl
+
+ typedef void (*glfwSetCursorPos_func)(GLFWwindow*, double, double);
+-glfwSetCursorPos_func glfwSetCursorPos_impl;
++GFW_EXTERN glfwSetCursorPos_func glfwSetCursorPos_impl;
+ #define glfwSetCursorPos glfwSetCursorPos_impl
+
+ typedef GLFWcursor* (*glfwCreateCursor_func)(const GLFWimage*, int, int, int);
+-glfwCreateCursor_func glfwCreateCursor_impl;
++GFW_EXTERN glfwCreateCursor_func glfwCreateCursor_impl;
+ #define glfwCreateCursor glfwCreateCursor_impl
+
+ typedef GLFWcursor* (*glfwCreateStandardCursor_func)(GLFWCursorShape);
+-glfwCreateStandardCursor_func glfwCreateStandardCursor_impl;
++GFW_EXTERN glfwCreateStandardCursor_func glfwCreateStandardCursor_impl;
+ #define glfwCreateStandardCursor glfwCreateStandardCursor_impl
+
+ typedef void (*glfwDestroyCursor_func)(GLFWcursor*);
+-glfwDestroyCursor_func glfwDestroyCursor_impl;
++GFW_EXTERN glfwDestroyCursor_func glfwDestroyCursor_impl;
+ #define glfwDestroyCursor glfwDestroyCursor_impl
+
+ typedef void (*glfwSetCursor_func)(GLFWwindow*, GLFWcursor*);
+-glfwSetCursor_func glfwSetCursor_impl;
++GFW_EXTERN glfwSetCursor_func glfwSetCursor_impl;
+ #define glfwSetCursor glfwSetCursor_impl
+
+ typedef GLFWkeyboardfun (*glfwSetKeyboardCallback_func)(GLFWwindow*, GLFWkeyboardfun);
+-glfwSetKeyboardCallback_func glfwSetKeyboardCallback_impl;
++GFW_EXTERN glfwSetKeyboardCallback_func glfwSetKeyboardCallback_impl;
+ #define glfwSetKeyboardCallback glfwSetKeyboardCallback_impl
+
+ typedef void (*glfwUpdateIMEState_func)(GLFWwindow*, int, int, int, int, int);
+-glfwUpdateIMEState_func glfwUpdateIMEState_impl;
++GFW_EXTERN glfwUpdateIMEState_func glfwUpdateIMEState_impl;
+ #define glfwUpdateIMEState glfwUpdateIMEState_impl
+
+ typedef GLFWmousebuttonfun (*glfwSetMouseButtonCallback_func)(GLFWwindow*, GLFWmousebuttonfun);
+-glfwSetMouseButtonCallback_func glfwSetMouseButtonCallback_impl;
++GFW_EXTERN glfwSetMouseButtonCallback_func glfwSetMouseButtonCallback_impl;
+ #define glfwSetMouseButtonCallback glfwSetMouseButtonCallback_impl
+
+ typedef GLFWcursorposfun (*glfwSetCursorPosCallback_func)(GLFWwindow*, GLFWcursorposfun);
+-glfwSetCursorPosCallback_func glfwSetCursorPosCallback_impl;
++GFW_EXTERN glfwSetCursorPosCallback_func glfwSetCursorPosCallback_impl;
+ #define glfwSetCursorPosCallback glfwSetCursorPosCallback_impl
+
+ typedef GLFWcursorenterfun (*glfwSetCursorEnterCallback_func)(GLFWwindow*, GLFWcursorenterfun);
+-glfwSetCursorEnterCallback_func glfwSetCursorEnterCallback_impl;
++GFW_EXTERN glfwSetCursorEnterCallback_func glfwSetCursorEnterCallback_impl;
+ #define glfwSetCursorEnterCallback glfwSetCursorEnterCallback_impl
+
+ typedef GLFWscrollfun (*glfwSetScrollCallback_func)(GLFWwindow*, GLFWscrollfun);
+-glfwSetScrollCallback_func glfwSetScrollCallback_impl;
++GFW_EXTERN glfwSetScrollCallback_func glfwSetScrollCallback_impl;
+ #define glfwSetScrollCallback glfwSetScrollCallback_impl
+
+ typedef GLFWdropfun (*glfwSetDropCallback_func)(GLFWwindow*, GLFWdropfun);
+-glfwSetDropCallback_func glfwSetDropCallback_impl;
++GFW_EXTERN glfwSetDropCallback_func glfwSetDropCallback_impl;
+ #define glfwSetDropCallback glfwSetDropCallback_impl
+
+ typedef GLFWliveresizefun (*glfwSetLiveResizeCallback_func)(GLFWwindow*, GLFWliveresizefun);
+-glfwSetLiveResizeCallback_func glfwSetLiveResizeCallback_impl;
++GFW_EXTERN glfwSetLiveResizeCallback_func glfwSetLiveResizeCallback_impl;
+ #define glfwSetLiveResizeCallback glfwSetLiveResizeCallback_impl
+
+ typedef int (*glfwJoystickPresent_func)(int);
+-glfwJoystickPresent_func glfwJoystickPresent_impl;
++GFW_EXTERN glfwJoystickPresent_func glfwJoystickPresent_impl;
+ #define glfwJoystickPresent glfwJoystickPresent_impl
+
+ typedef const float* (*glfwGetJoystickAxes_func)(int, int*);
+-glfwGetJoystickAxes_func glfwGetJoystickAxes_impl;
++GFW_EXTERN glfwGetJoystickAxes_func glfwGetJoystickAxes_impl;
+ #define glfwGetJoystickAxes glfwGetJoystickAxes_impl
+
+ typedef const unsigned char* (*glfwGetJoystickButtons_func)(int, int*);
+-glfwGetJoystickButtons_func glfwGetJoystickButtons_impl;
++GFW_EXTERN glfwGetJoystickButtons_func glfwGetJoystickButtons_impl;
+ #define glfwGetJoystickButtons glfwGetJoystickButtons_impl
+
+ typedef const unsigned char* (*glfwGetJoystickHats_func)(int, int*);
+-glfwGetJoystickHats_func glfwGetJoystickHats_impl;
++GFW_EXTERN glfwGetJoystickHats_func glfwGetJoystickHats_impl;
+ #define glfwGetJoystickHats glfwGetJoystickHats_impl
+
+ typedef const char* (*glfwGetJoystickName_func)(int);
+-glfwGetJoystickName_func glfwGetJoystickName_impl;
++GFW_EXTERN glfwGetJoystickName_func glfwGetJoystickName_impl;
+ #define glfwGetJoystickName glfwGetJoystickName_impl
+
+ typedef const char* (*glfwGetJoystickGUID_func)(int);
+-glfwGetJoystickGUID_func glfwGetJoystickGUID_impl;
++GFW_EXTERN glfwGetJoystickGUID_func glfwGetJoystickGUID_impl;
+ #define glfwGetJoystickGUID glfwGetJoystickGUID_impl
+
+ typedef void (*glfwSetJoystickUserPointer_func)(int, void*);
+-glfwSetJoystickUserPointer_func glfwSetJoystickUserPointer_impl;
++GFW_EXTERN glfwSetJoystickUserPointer_func glfwSetJoystickUserPointer_impl;
+ #define glfwSetJoystickUserPointer glfwSetJoystickUserPointer_impl
+
+ typedef void* (*glfwGetJoystickUserPointer_func)(int);
+-glfwGetJoystickUserPointer_func glfwGetJoystickUserPointer_impl;
++GFW_EXTERN glfwGetJoystickUserPointer_func glfwGetJoystickUserPointer_impl;
+ #define glfwGetJoystickUserPointer glfwGetJoystickUserPointer_impl
+
+ typedef int (*glfwJoystickIsGamepad_func)(int);
+-glfwJoystickIsGamepad_func glfwJoystickIsGamepad_impl;
++GFW_EXTERN glfwJoystickIsGamepad_func glfwJoystickIsGamepad_impl;
+ #define glfwJoystickIsGamepad glfwJoystickIsGamepad_impl
+
+ typedef GLFWjoystickfun (*glfwSetJoystickCallback_func)(GLFWjoystickfun);
+-glfwSetJoystickCallback_func glfwSetJoystickCallback_impl;
++GFW_EXTERN glfwSetJoystickCallback_func glfwSetJoystickCallback_impl;
+ #define glfwSetJoystickCallback glfwSetJoystickCallback_impl
+
+ typedef int (*glfwUpdateGamepadMappings_func)(const char*);
+-glfwUpdateGamepadMappings_func glfwUpdateGamepadMappings_impl;
++GFW_EXTERN glfwUpdateGamepadMappings_func glfwUpdateGamepadMappings_impl;
+ #define glfwUpdateGamepadMappings glfwUpdateGamepadMappings_impl
+
+ typedef const char* (*glfwGetGamepadName_func)(int);
+-glfwGetGamepadName_func glfwGetGamepadName_impl;
++GFW_EXTERN glfwGetGamepadName_func glfwGetGamepadName_impl;
+ #define glfwGetGamepadName glfwGetGamepadName_impl
+
+ typedef int (*glfwGetGamepadState_func)(int, GLFWgamepadstate*);
+-glfwGetGamepadState_func glfwGetGamepadState_impl;
++GFW_EXTERN glfwGetGamepadState_func glfwGetGamepadState_impl;
+ #define glfwGetGamepadState glfwGetGamepadState_impl
+
+ typedef void (*glfwSetClipboardString_func)(GLFWwindow*, const char*);
+-glfwSetClipboardString_func glfwSetClipboardString_impl;
++GFW_EXTERN glfwSetClipboardString_func glfwSetClipboardString_impl;
+ #define glfwSetClipboardString glfwSetClipboardString_impl
+
+ typedef const char* (*glfwGetClipboardString_func)(GLFWwindow*);
+-glfwGetClipboardString_func glfwGetClipboardString_impl;
++GFW_EXTERN glfwGetClipboardString_func glfwGetClipboardString_impl;
+ #define glfwGetClipboardString glfwGetClipboardString_impl
+
+ typedef monotonic_t (*glfwGetTime_func)(void);
+-glfwGetTime_func glfwGetTime_impl;
++GFW_EXTERN glfwGetTime_func glfwGetTime_impl;
+ #define glfwGetTime glfwGetTime_impl
+
+ typedef void (*glfwMakeContextCurrent_func)(GLFWwindow*);
+-glfwMakeContextCurrent_func glfwMakeContextCurrent_impl;
++GFW_EXTERN glfwMakeContextCurrent_func glfwMakeContextCurrent_impl;
+ #define glfwMakeContextCurrent glfwMakeContextCurrent_impl
+
+ typedef GLFWwindow* (*glfwGetCurrentContext_func)(void);
+-glfwGetCurrentContext_func glfwGetCurrentContext_impl;
++GFW_EXTERN glfwGetCurrentContext_func glfwGetCurrentContext_impl;
+ #define glfwGetCurrentContext glfwGetCurrentContext_impl
+
+ typedef void (*glfwSwapBuffers_func)(GLFWwindow*);
+-glfwSwapBuffers_func glfwSwapBuffers_impl;
++GFW_EXTERN glfwSwapBuffers_func glfwSwapBuffers_impl;
+ #define glfwSwapBuffers glfwSwapBuffers_impl
+
+ typedef void (*glfwSwapInterval_func)(int);
+-glfwSwapInterval_func glfwSwapInterval_impl;
++GFW_EXTERN glfwSwapInterval_func glfwSwapInterval_impl;
+ #define glfwSwapInterval glfwSwapInterval_impl
+
+ typedef int (*glfwExtensionSupported_func)(const char*);
+-glfwExtensionSupported_func glfwExtensionSupported_impl;
++GFW_EXTERN glfwExtensionSupported_func glfwExtensionSupported_impl;
+ #define glfwExtensionSupported glfwExtensionSupported_impl
+
+ typedef GLFWglproc (*glfwGetProcAddress_func)(const char*);
+-glfwGetProcAddress_func glfwGetProcAddress_impl;
++GFW_EXTERN glfwGetProcAddress_func glfwGetProcAddress_impl;
+ #define glfwGetProcAddress glfwGetProcAddress_impl
+
+ typedef int (*glfwVulkanSupported_func)(void);
+-glfwVulkanSupported_func glfwVulkanSupported_impl;
++GFW_EXTERN glfwVulkanSupported_func glfwVulkanSupported_impl;
+ #define glfwVulkanSupported glfwVulkanSupported_impl
+
+ typedef const char** (*glfwGetRequiredInstanceExtensions_func)(uint32_t*);
+-glfwGetRequiredInstanceExtensions_func glfwGetRequiredInstanceExtensions_impl;
++GFW_EXTERN glfwGetRequiredInstanceExtensions_func glfwGetRequiredInstanceExtensions_impl;
+ #define glfwGetRequiredInstanceExtensions glfwGetRequiredInstanceExtensions_impl
+
+ typedef void* (*glfwGetCocoaWindow_func)(GLFWwindow*);
+-glfwGetCocoaWindow_func glfwGetCocoaWindow_impl;
++GFW_EXTERN glfwGetCocoaWindow_func glfwGetCocoaWindow_impl;
+ #define glfwGetCocoaWindow glfwGetCocoaWindow_impl
+
+ typedef void* (*glfwGetNSGLContext_func)(GLFWwindow*);
+-glfwGetNSGLContext_func glfwGetNSGLContext_impl;
++GFW_EXTERN glfwGetNSGLContext_func glfwGetNSGLContext_impl;
+ #define glfwGetNSGLContext glfwGetNSGLContext_impl
+
+ typedef uint32_t (*glfwGetCocoaMonitor_func)(GLFWmonitor*);
+-glfwGetCocoaMonitor_func glfwGetCocoaMonitor_impl;
++GFW_EXTERN glfwGetCocoaMonitor_func glfwGetCocoaMonitor_impl;
+ #define glfwGetCocoaMonitor glfwGetCocoaMonitor_impl
+
+ typedef GLFWcocoatextinputfilterfun (*glfwSetCocoaTextInputFilter_func)(GLFWwindow*, GLFWcocoatextinputfilterfun);
+-glfwSetCocoaTextInputFilter_func glfwSetCocoaTextInputFilter_impl;
++GFW_EXTERN glfwSetCocoaTextInputFilter_func glfwSetCocoaTextInputFilter_impl;
+ #define glfwSetCocoaTextInputFilter glfwSetCocoaTextInputFilter_impl
+
+ typedef GLFWcocoatogglefullscreenfun (*glfwSetCocoaToggleFullscreenIntercept_func)(GLFWwindow*, GLFWcocoatogglefullscreenfun);
+-glfwSetCocoaToggleFullscreenIntercept_func glfwSetCocoaToggleFullscreenIntercept_impl;
++GFW_EXTERN glfwSetCocoaToggleFullscreenIntercept_func glfwSetCocoaToggleFullscreenIntercept_impl;
+ #define glfwSetCocoaToggleFullscreenIntercept glfwSetCocoaToggleFullscreenIntercept_impl
+
+ typedef GLFWapplicationshouldhandlereopenfun (*glfwSetApplicationShouldHandleReopen_func)(GLFWapplicationshouldhandlereopenfun);
+-glfwSetApplicationShouldHandleReopen_func glfwSetApplicationShouldHandleReopen_impl;
++GFW_EXTERN glfwSetApplicationShouldHandleReopen_func glfwSetApplicationShouldHandleReopen_impl;
+ #define glfwSetApplicationShouldHandleReopen glfwSetApplicationShouldHandleReopen_impl
+
+ typedef GLFWapplicationwillfinishlaunchingfun (*glfwSetApplicationWillFinishLaunching_func)(GLFWapplicationwillfinishlaunchingfun);
+-glfwSetApplicationWillFinishLaunching_func glfwSetApplicationWillFinishLaunching_impl;
++GFW_EXTERN glfwSetApplicationWillFinishLaunching_func glfwSetApplicationWillFinishLaunching_impl;
+ #define glfwSetApplicationWillFinishLaunching glfwSetApplicationWillFinishLaunching_impl
+
+ typedef void (*glfwGetCocoaKeyEquivalent_func)(int, int, char*, size_t, int*);
+-glfwGetCocoaKeyEquivalent_func glfwGetCocoaKeyEquivalent_impl;
++GFW_EXTERN glfwGetCocoaKeyEquivalent_func glfwGetCocoaKeyEquivalent_impl;
+ #define glfwGetCocoaKeyEquivalent glfwGetCocoaKeyEquivalent_impl
+
+ typedef void (*glfwCocoaRequestRenderFrame_func)(GLFWwindow*, GLFWcocoarenderframefun);
+-glfwCocoaRequestRenderFrame_func glfwCocoaRequestRenderFrame_impl;
++GFW_EXTERN glfwCocoaRequestRenderFrame_func glfwCocoaRequestRenderFrame_impl;
+ #define glfwCocoaRequestRenderFrame glfwCocoaRequestRenderFrame_impl
+
+ typedef void* (*glfwGetX11Display_func)(void);
+-glfwGetX11Display_func glfwGetX11Display_impl;
++GFW_EXTERN glfwGetX11Display_func glfwGetX11Display_impl;
+ #define glfwGetX11Display glfwGetX11Display_impl
+
+ typedef int32_t (*glfwGetX11Window_func)(GLFWwindow*);
+-glfwGetX11Window_func glfwGetX11Window_impl;
++GFW_EXTERN glfwGetX11Window_func glfwGetX11Window_impl;
+ #define glfwGetX11Window glfwGetX11Window_impl
+
+ typedef void (*glfwSetPrimarySelectionString_func)(GLFWwindow*, const char*);
+-glfwSetPrimarySelectionString_func glfwSetPrimarySelectionString_impl;
++GFW_EXTERN glfwSetPrimarySelectionString_func glfwSetPrimarySelectionString_impl;
+ #define glfwSetPrimarySelectionString glfwSetPrimarySelectionString_impl
+
+ typedef const char* (*glfwGetPrimarySelectionString_func)(GLFWwindow*);
+-glfwGetPrimarySelectionString_func glfwGetPrimarySelectionString_impl;
++GFW_EXTERN glfwGetPrimarySelectionString_func glfwGetPrimarySelectionString_impl;
+ #define glfwGetPrimarySelectionString glfwGetPrimarySelectionString_impl
+
+ typedef int (*glfwGetNativeKeyForName_func)(const char*, int);
+-glfwGetNativeKeyForName_func glfwGetNativeKeyForName_impl;
++GFW_EXTERN glfwGetNativeKeyForName_func glfwGetNativeKeyForName_impl;
+ #define glfwGetNativeKeyForName glfwGetNativeKeyForName_impl
+
+ typedef void (*glfwRequestWaylandFrameEvent_func)(GLFWwindow*, unsigned long long, GLFWwaylandframecallbackfunc);
+-glfwRequestWaylandFrameEvent_func glfwRequestWaylandFrameEvent_impl;
++GFW_EXTERN glfwRequestWaylandFrameEvent_func glfwRequestWaylandFrameEvent_impl;
+ #define glfwRequestWaylandFrameEvent glfwRequestWaylandFrameEvent_impl
+
+ typedef unsigned long long (*glfwDBusUserNotify_func)(const char*, const char*, const char*, const char*, const char*, int32_t, GLFWDBusnotificationcreatedfun, void*);
+-glfwDBusUserNotify_func glfwDBusUserNotify_impl;
++GFW_EXTERN glfwDBusUserNotify_func glfwDBusUserNotify_impl;
+ #define glfwDBusUserNotify glfwDBusUserNotify_impl
+
+ typedef void (*glfwDBusSetUserNotificationHandler_func)(GLFWDBusnotificationactivatedfun);
+-glfwDBusSetUserNotificationHandler_func glfwDBusSetUserNotificationHandler_impl;
++GFW_EXTERN glfwDBusSetUserNotificationHandler_func glfwDBusSetUserNotificationHandler_impl;
+ #define glfwDBusSetUserNotificationHandler glfwDBusSetUserNotificationHandler_impl
+
+ const char* load_glfw(const char* path);
+
+From 6dbdf72f40571e8a1ed1787ada4e08597e45ac75 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 17:55:38 +0530
+Subject: [PATCH 08/11] CoreText: When matching fonts prefer
+ non-expanded/condensed variants
+
+---
+ kitty/core_text.m | 13 ++++++++-----
+ kitty/fast_data_types.pyi | 3 +++
+ kitty/fonts/core_text.py | 5 +++--
+ 3 files changed, 14 insertions(+), 7 deletions(-)
+
+diff --git a/kitty/core_text.m b/kitty/core_text.m
+index 29036ea2f..229e8dc54 100644
+--- a/kitty/core_text.m
++++ b/kitty/core_text.m
+@@ -92,10 +92,10 @@
+ NSString *style = (NSString *) CTFontDescriptorCopyAttribute(descriptor, kCTFontStyleNameAttribute);
+ NSDictionary *traits = (NSDictionary *) CTFontDescriptorCopyAttribute(descriptor, kCTFontTraitsAttribute);
+ unsigned int straits = [traits[(id)kCTFontSymbolicTrait] unsignedIntValue];
+- NSNumber *weightVal = traits[(id)kCTFontWeightTrait];
+- NSNumber *widthVal = traits[(id)kCTFontWidthTrait];
++ float *weightVal = [traits[(id)kCTFontWeightTrait] floatValue];
++ float widthVal = [traits[(id)kCTFontWidthTrait] floatValue];
+
+- PyObject *ans = Py_BuildValue("{ssssssss sOsOsO sfsfsI}",
++ PyObject *ans = Py_BuildValue("{ssssssss sOsOsOsOsOsO sfsfsI}",
+ "path", [[url path] UTF8String],
+ "postscript_name", [psName UTF8String],
+ "family", [family UTF8String],
+@@ -104,9 +104,12 @@
+ "bold", (straits & kCTFontBoldTrait) != 0 ? Py_True : Py_False,
+ "italic", (straits & kCTFontItalicTrait) != 0 ? Py_True : Py_False,
+ "monospace", (straits & kCTFontMonoSpaceTrait) != 0 ? Py_True : Py_False,
++ "expanded", (straits & kCTFontExpandedTrait) != 0 ? Py_True : Py_False,
++ "condensed", (straits & kCTFontCondensedTrait) != 0 ? Py_True : Py_False,
++ "color_glyphs", (straits & kCTFontColorGlyphsTrait) != 0 ? Py_True : Py_False,
+
+- "weight", [weightVal floatValue],
+- "width", [widthVal floatValue],
++ "weight", weightVal,
++ "width", widthVal,
+ "traits", straits
+ );
+ [url release];
+diff --git a/kitty/fast_data_types.pyi b/kitty/fast_data_types.pyi
+index 4749e0c50..9333a8eaa 100644
+--- a/kitty/fast_data_types.pyi
++++ b/kitty/fast_data_types.pyi
+@@ -438,6 +438,9 @@ class CoreTextFont(TypedDict):
+ style: str
+ bold: bool
+ italic: bool
++ expanded: bool
++ condensed: bool
++ color_glyphs: bool
+ monospace: bool
+ weight: float
+ width: float
+diff --git a/kitty/fonts/core_text.py b/kitty/fonts/core_text.py
+index 20567a3a1..5061b0fb2 100644
+--- a/kitty/fonts/core_text.py
++++ b/kitty/fonts/core_text.py
+@@ -54,12 +54,13 @@ def find_best_match(family: str, bold: bool = False, italic: bool = False) -> Co
+ q = re.sub(r'\s+', ' ', family.lower())
+ font_map = all_fonts_map()
+
+- def score(candidate: CoreTextFont) -> Tuple[int, int]:
++ def score(candidate: CoreTextFont) -> Tuple[int, int, int]:
+ style_match = 1 if candidate['bold'] == bold and candidate[
+ 'italic'
+ ] == italic else 0
+ monospace_match = 1 if candidate['monospace'] else 0
+- return style_match, monospace_match
++ is_regular_width = not candidate['expanded'] and not candidate['condensed']
++ return style_match, monospace_match, 1 if is_regular_width else 0
+
+ # First look for an exact match
+ for selector in ('ps_map', 'full_map'):
+
+From 21c561043197f145fe7a478fdf078c4546c25914 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 18:02:44 +0530
+Subject: [PATCH 09/11] ...
+
+---
+ kitty/core_text.m | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/kitty/core_text.m b/kitty/core_text.m
+index 229e8dc54..23d1bcf5b 100644
+--- a/kitty/core_text.m
++++ b/kitty/core_text.m
+@@ -92,7 +92,7 @@
+ NSString *style = (NSString *) CTFontDescriptorCopyAttribute(descriptor, kCTFontStyleNameAttribute);
+ NSDictionary *traits = (NSDictionary *) CTFontDescriptorCopyAttribute(descriptor, kCTFontTraitsAttribute);
+ unsigned int straits = [traits[(id)kCTFontSymbolicTrait] unsignedIntValue];
+- float *weightVal = [traits[(id)kCTFontWeightTrait] floatValue];
++ float weightVal = [traits[(id)kCTFontWeightTrait] floatValue];
+ float widthVal = [traits[(id)kCTFontWidthTrait] floatValue];
+
+ PyObject *ans = Py_BuildValue("{ssssssss sOsOsOsOsOsO sfsfsI}",
+
+From a07369ce69660a940431fc5297940391d23a4803 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 18:14:14 +0530
+Subject: [PATCH 10/11] Update changelog
+
+---
+ docs/changelog.rst | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/docs/changelog.rst b/docs/changelog.rst
+index e9e137b43..c683c99ad 100644
+--- a/docs/changelog.rst
++++ b/docs/changelog.rst
+@@ -12,6 +12,9 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
+ - Fix a regression in 0.17 that caused tab bar background to be rendered after
+ the last tab as well (:iss:`2464`)
+
++- macOS: Fix a regression in 0.17 that caused incorrect variants to be
++ automatically selected for some fonts (:iss:`2462`)
++
+
+ 0.17.0 [2020-03-24]
+ --------------------
+
+From 0547102bdd6ce3b71cf53f2cb75b2f85692789f5 Mon Sep 17 00:00:00 2001
+From: Kovid Goyal <kovid(a)kovidgoyal.net>
+Date: Tue, 24 Mar 2020 18:33:32 +0530
+Subject: [PATCH 11/11] Fix #2468
+
+---
+ setup.py | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 917d29e6a..350d5e1fe 100755
+--- a/setup.py
++++ b/setup.py
+@@ -141,9 +141,12 @@ def cc_version() -> Tuple[str, Tuple[int, int]]:
+ else:
+ cc = 'cc'
+ raw = subprocess.check_output([cc, '-dumpversion']).decode('utf-8')
+- ver_ = raw.split('.')[:2]
++ ver_ = raw.strip().split('.')[:2]
+ try:
+- ver = int(ver_[0]), int(ver_[1])
++ if len(ver_) == 1:
++ ver = int(ver_[0]), 0
++ else:
++ ver = int(ver_[0]), int(ver_[1])
+ except Exception:
+ ver = (0, 0)
+ return cc, ver
diff --git a/kitty.spec b/kitty.spec
index 0b6373e..6e5d628 100644
--- a/kitty.spec
+++ b/kitty.spec
@@ -6,9 +6,7 @@ Name: kitty
Version: 0.17.0
Release: 1%{?dist}
Summary: Cross-platform, fast, feature full, GPU based terminal emulator
-
-# https://pagure.io/koji/issue/1679
-ExcludeArch: s390x
+ExcludeArch: s390x ppc64le
# BSD: docs/_templates/searchbox.html
# zlib: glfw/
@@ -22,11 +20,13 @@ Source1: https://raw.githubusercontent.com/kovidgoyal/kitty/46c0951751444
# Failed to compile with new GCC 10
# * https://github.com/kovidgoyal/kitty/issues/2466
-Patch0: https://github.com/kovidgoyal/kitty/commit/76a6bba64310024c2780ff26e5bbcd...
-
+#
# Build error if compile with --debug
# * https://github.com/kovidgoyal/kitty/issues/2468
-Patch1: https://github.com/kovidgoyal/kitty/commit/0547102bdd6ce3b71cf53f2cb75b2f...
+#
+# Some tests not passed on aarch64 and ppc64le arches
+# * https://github.com/kovidgoyal/kitty/issues/2469
+Patch0: https://github.com/kovidgoyal/kitty/compare/v0.17.0...master.patch#/kitty...
BuildRequires: desktop-file-utils
BuildRequires: gcc
@@ -160,13 +160,7 @@ rm %{buildroot}%{_datadir}/doc/%{name}/html/.buildinfo \
%check
-
-# Some tests not passed on aarch64 and ppc64le arches
-# * https://github.com/kovidgoyal/kitty/issues/2469
-%ifarch armv7hl i686 86_64
%{__python3} setup.py test --prefix=%{buildroot}%{_prefix}
-%endif
-
appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.appdata.xml
desktop-file-validate %{buildroot}/%{_datadir}/applications/*.desktop
@@ -194,6 +188,7 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/*.desktop
%changelog
* Tue Mar 24 2020 Artem Polishchuk <ego.cordatus(a)gmail.com> - 0.17.0-1
- Update to 0.17.0
+- Exclude arch ppc64le
* Mon Mar 09 2020 Artem Polishchuk <ego.cordatus(a)gmail.com> - 0.16.0-3
- Fix AppData description - #1811657
commit 81e78947f3d251e8c9aa4b5f27adcfc0e49cc143
Author: Artem Polishchuk <ego.cordatus(a)gmail.com>
Date: Tue Mar 24 15:38:59 2020 +0200
Skip tests for armv7hl, i686, 86_64
diff --git a/kitty.spec b/kitty.spec
index 7d0eb6c..0b6373e 100644
--- a/kitty.spec
+++ b/kitty.spec
@@ -160,7 +160,13 @@ rm %{buildroot}%{_datadir}/doc/%{name}/html/.buildinfo \
%check
+
+# Some tests not passed on aarch64 and ppc64le arches
+# * https://github.com/kovidgoyal/kitty/issues/2469
+%ifarch armv7hl i686 86_64
%{__python3} setup.py test --prefix=%{buildroot}%{_prefix}
+%endif
+
appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.appdata.xml
desktop-file-validate %{buildroot}/%{_datadir}/applications/*.desktop
4 years, 1 month
Architecture specific change in rpms/HepMC3.git
by githook-noreply@fedoraproject.org
The package rpms/HepMC3.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/HepMC3.git/commit/?id=2fd51707f0e....
Change:
+%ifnarch s390x
Thanks.
Full change:
============
commit 2fd51707f0e66908b209a9ca04663287160c1f35
Author: Mattias Ellert <mattias.ellert(a)physics.uu.se>
Date: Tue Mar 24 15:34:40 2020 +0100
Update to version 3.2.1
Drop patches accepted upstream or previously backported
Fix glitches in the generation of the HepMC3-config script
Add additional Python 3 version package for EPEL 7
(cmake configuration now supports multiple Python 3 versions)
Use new cmake configuration options -DHEPMC3_ROOTIO_INSTALL_LIBDIR and
-DHEPMC3_BUILD_STATIC_LIBS and simplify spec file accordingly
.egg-info filenames are now correct - auto generated provides work
diff --git a/HepMC3-arm-memory.patch b/HepMC3-arm-memory.patch
index 8fb0713..c06fef4 100644
--- a/HepMC3-arm-memory.patch
+++ b/HepMC3-arm-memory.patch
@@ -1,13 +1,14 @@
-diff -ur HepMC3-3.2.0.orig/python/CMakeLists.txt HepMC3-3.2.0/python/CMakeLists.txt
---- HepMC3-3.2.0.orig/python/CMakeLists.txt 2019-11-27 11:20:01.000000000 +0100
-+++ HepMC3-3.2.0/python/CMakeLists.txt 2019-12-02 14:44:49.752598636 +0100
-@@ -141,6 +141,9 @@
+diff -ur HepMC3-3.2.1.orig/python/CMakeLists.txt HepMC3-3.2.1/python/CMakeLists.txt
+--- HepMC3-3.2.1.orig/python/CMakeLists.txt 2020-03-17 11:38:25.000000000 +0100
++++ HepMC3-3.2.1/python/CMakeLists.txt 2020-03-22 15:30:35.572891013 +0100
+@@ -199,6 +199,10 @@
endif()
endif()
+if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g1")
+endif()
-
++
if ( Python_LIBRARIES AND Python_INCLUDE_DIRS AND Python_EXECUTABLE AND ((${Python_VERSION_MAJOR} STREQUAL ${ver} AND ${verminor} STREQUAL "X") OR "${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}" STREQUAL "${ver}.${verminor}" ))
message(STATUS "HepMC3 python: Python verson ${ver}.${verminor} found in ${Python_EXECUTABLE}. Python bindings generation is possible.")
+
diff --git a/HepMC3-config.patch b/HepMC3-config.patch
new file mode 100644
index 0000000..dba83ed
--- /dev/null
+++ b/HepMC3-config.patch
@@ -0,0 +1,190 @@
+From 4888b9d8a8f60f5a77b9ce102913ac74500af701 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Sun, 22 Mar 2020 22:44:11 +0100
+Subject: [PATCH] Use configure_package_config_file instead of configure_file
+ to generate HepMC3-config - it handles absolute paths properly.
+
+Use HEPMC3_ROOTIO_INSTALL_LIBDIR when generating HepMC3Config.cmake
+---
+ CMakeLists.txt | 29 +++++++++++++--------
+ HepMC3-config.in | 36 ++++++++++++++-------------
+ cmake/Templates/HepMC3Config.cmake.in | 8 +++---
+ 3 files changed, 41 insertions(+), 32 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index a63b916..2c452b8 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -217,34 +217,41 @@ endif()
+ install(TARGETS HepMC3_static DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libs)
+ endif()
+
+-configure_file(HepMC3-config.in ${PROJECT_BINARY_DIR}/outputs/${CMAKE_INSTALL_BINDIR}/HepMC3-config )
+-
+-
+ install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT devel)
+
+-install(FILES ${PROJECT_BINARY_DIR}/outputs/${CMAKE_INSTALL_BINDIR}/HepMC3-config DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libs PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+-
+ # Generate config CMake files to be used by other projects
+ #
+
+ include(CMakePackageConfigHelpers)
+
+-set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR})
+-set(LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR})
+ set(INTERFACES_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/HepMC3/interfaces)
+ set(CONFIG_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/HepMC3/cmake)
+
+-configure_package_config_file(cmake/Templates/HepMC3Config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/outputs/share/HepMC3/cmake/HepMC3Config.cmake
+- INSTALL_DESTINATION ${CONFIG_INSTALL_DIR}
+- PATH_VARS INCLUDE_INSTALL_DIR LIB_INSTALL_DIR
+- INTERFACES_INSTALL_DIR)
++configure_package_config_file(cmake/Templates/HepMC3Config.cmake.in
++ ${CMAKE_CURRENT_BINARY_DIR}/outputs/share/HepMC3/cmake/HepMC3Config.cmake
++ INSTALL_DESTINATION ${CONFIG_INSTALL_DIR}
++ PATH_VARS CMAKE_INSTALL_INCLUDEDIR
++ CMAKE_INSTALL_LIBDIR
++ HEPMC3_ROOTIO_INSTALL_LIBDIR
++ INTERFACES_INSTALL_DIR)
+
+ write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/outputs/share/HepMC3/cmake/HepMC3Config-version.cmake COMPATIBILITY SameMajorVersion)
+
++configure_package_config_file(HepMC3-config.in
++ ${CMAKE_CURRENT_BINARY_DIR}/outputs/bin/HepMC3-config
++ INSTALL_DESTINATION ${CMAKE_INSTALL_BINDIR}
++ PATH_VARS CMAKE_INSTALL_INCLUDEDIR
++ CMAKE_INSTALL_LIBDIR
++ HEPMC3_ROOTIO_INSTALL_LIBDIR)
++
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/outputs/share/HepMC3/cmake/HepMC3Config.cmake
+ ${CMAKE_CURRENT_BINARY_DIR}/outputs/share/HepMC3/cmake/HepMC3Config-version.cmake
+ DESTINATION ${CONFIG_INSTALL_DIR} COMPONENT devel)
+
++install(FILES ${CMAKE_CURRENT_BINARY_DIR}/outputs/bin/HepMC3-config
++ DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libs
++ PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
++
+ ########################################################################
+ ## Optional packages
+ ########################################################################
+diff --git a/HepMC3-config.in b/HepMC3-config.in
+index 7db10f6..46d5ab6 100755
+--- a/HepMC3-config.in
++++ b/HepMC3-config.in
+@@ -5,13 +5,13 @@
+ ## @configure_input@
+ #The line below assures at least some relocation.
+ if [ "$(uname)" == "Darwin" ]; then
+-prefix=$(dirname $(dirname $(greadlink -f $0)))
++PACKAGE_PREFIX_DIR=$(dirname $(dirname $(greadlink -f $0)))
+ else
+-prefix=$(dirname $(dirname $(readlink -f $0)))
++PACKAGE_PREFIX_DIR=$(dirname $(dirname $(readlink -f $0)))
+ fi
+ tmp=$(echo $* | egrep -- '--\<help\>|-\<h\>')
+ if test $# -eq 0 || test -n "$tmp"; then
+- echo "${PROJECT_NAME}-config: configuration tool for the ${PROJECT_NAME} library"
++ echo "@PROJECT_NAME@-config: configuration tool for the @PROJECT_NAME@ library"
+ echo
+ echo "Usage: $( basename $0 ) [--help|-h] | "
+ echo " [--{prefix,libdir,includedir}] | "
+@@ -21,55 +21,57 @@ if test $# -eq 0 || test -n "$tmp"; then
+ echo " --help | -h : show this help message"
+ echo
+ echo " --prefix : show the installation prefix"
+- echo " --includedir : show the path to the directory containing the ${PROJECT_NAME} headers"
+- echo " --libdir : show the path to the directory containing the ${PROJECT_NAME} libraries"
++ echo " --includedir : show the path to the directory containing the @PROJECT_NAME@ headers"
++ echo " --libdir : show the path to the directory containing the @PROJECT_NAME@ libraries"
+ echo
+ echo " --cflags|--cppflags : returns a '-I' string for insertion into CPPFLAGS or CXXFLAGS"
+- echo " --ldflags|libs : returns a '-L/-l' string for insertion into LIBS or LIBADD"
++ echo " --ldflags|--libs : returns a '-L/-l' string for insertion into LIBS or LIBADD"
+ echo " --rootIO : returns a '-L/-l' string for insertion into LIBS or LIBADD with rootIO support"
+ echo " --search : returns a '-L/-l' string for insertion into LIBS or LIBADD with search support"
+ echo " --static : returns a string for insertion into LIBS or LIBADD"
+ echo
+- echo " --version : returns the ${PROJECT_NAME} release version number"
++ echo " --version : returns the @PROJECT_NAME@ release version number"
+ exit 0
+ fi
+
+ OUT=""
+
+ tmp=$( echo "$*" | egrep -- '--\<prefix\>')
+-test -n "$tmp" && OUT="$OUT $prefix"
++test -n "$tmp" && OUT="$OUT ${PACKAGE_PREFIX_DIR}"
+
+ tmp=$( echo "$*" | egrep -- '--\<includedir\>')
+-test -n "$tmp" && OUT="$OUT $prefix/${CMAKE_INSTALL_INCLUDEDIR}"
++test -n "$tmp" && OUT="$OUT @PACKAGE_CMAKE_INSTALL_INCLUDEDIR@"
+
+ tmp=$( echo "$*" | egrep -- '--\<libdir\>')
+-test -n "$tmp" && OUT="$OUT $prefix/${CMAKE_INSTALL_LIBDIR}"
++test -n "$tmp" && OUT="$OUT @PACKAGE_CMAKE_INSTALL_LIBDIR@"
+
+ tmp=$( echo "$*" | egrep -- '--\<cflags|cppflags|cxxflags\>')
+-test -n "$tmp" && OUT="$OUT -I$prefix/${CMAKE_INSTALL_INCLUDEDIR}"
++test -n "$tmp" && OUT="$OUT -I@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@"
+
+
+ tmp=$( echo "$*" | egrep -- '--\<static\>')
+ if test -n "$tmp"; then
+
+ tmp=$( echo "$*" | egrep -- '--\<ldflags|libs\>')
+-OUT="$OUT $prefix/${CMAKE_INSTALL_LIBDIR}/libHepMC3_static.a -lHepMC3"
++OUT="$OUT @PACKAGE_CMAKE_INSTALL_LIBDIR(a)/libHepMC3_static.a"
+
+ tmp=$( echo "$*" | egrep -- '--\<search\>')
+-test -n "$tmp" && OUT="$OUT -L$prefix/${CMAKE_INSTALL_LIBDIR}/libHepMC3search_static.a -lHepMC3search"
++test -n "$tmp" && OUT="$OUT @PACKAGE_CMAKE_INSTALL_LIBDIR(a)/libHepMC3search_static.a"
+
+ else
++
+ tmp=$( echo "$*" | egrep -- '--\<ldflags|libs\>')
+-test -n "$tmp" && OUT="$OUT -L$prefix/${CMAKE_INSTALL_LIBDIR} -lHepMC3"
++test -n "$tmp" && OUT="$OUT -L@PACKAGE_CMAKE_INSTALL_LIBDIR@ -lHepMC3"
+
+ tmp=$( echo "$*" | egrep -- '--\<search\>')
+-test -n "$tmp" && OUT="$OUT -L$prefix/${CMAKE_INSTALL_LIBDIR} -lHepMC3search"
++test -n "$tmp" && OUT="$OUT -L@PACKAGE_CMAKE_INSTALL_LIBDIR@ -lHepMC3search"
++
+ fi
+
+ tmp=$( echo "$*" | egrep -- '--\<rootIO\>')
+-test -n "$tmp" && OUT="$OUT -L$prefix/${HEPMC3_ROOTIO_INSTALL_LIBDIR} ${HEPMC3_ROOTIO_LIBRARY}"
++test -n "$tmp" && OUT="$OUT -L@PACKAGE_HEPMC3_ROOTIO_INSTALL_LIBDIR@ @HEPMC3_ROOTIO_LIBRARY@"
+
+ tmp=$( echo "$*" | egrep -- '--\<version\>')
+-test -n "$tmp" && echo ${PROJECT_VERSION}&& exit 0
++test -n "$tmp" && echo @PROJECT_VERSION@ && exit 0
+
+ echo $OUT
+diff --git a/cmake/Templates/HepMC3Config.cmake.in b/cmake/Templates/HepMC3Config.cmake.in
+index 9f690fe..df8f440 100644
+--- a/cmake/Templates/HepMC3Config.cmake.in
++++ b/cmake/Templates/HepMC3Config.cmake.in
+@@ -6,15 +6,15 @@ SET(HEPMC3_VERSION_MINOR @HEPMC3_VERSION_MINOR@)
+ SET(HEPMC3_VERSION_PATCH @HEPMC3_VERSION_PATCH@)
+
+
+-set_and_check(HEPMC3_INCLUDE_DIR @PACKAGE_INCLUDE_INSTALL_DIR@)
++set_and_check(HEPMC3_INCLUDE_DIR @PACKAGE_CMAKE_INSTALL_INCLUDEDIR@)
+
+ if(EXISTS @PACKAGE_INTERFACES_INSTALL_DIR@)
+ set(HEPMC3_INTERFACES_DIR @PACKAGE_INTERFACES_INSTALL_DIR@)
+ endif()
+
+-find_library(HEPMC3_LIB NAMES HepMC3 HINTS @PACKAGE_LIB_INSTALL_DIR@)
+-find_library(HEPMC3_SEARCH_LIB NAMES HepMC3search HINTS @PACKAGE_LIB_INSTALL_DIR@)
+-find_library(HEPMC3_ROOTIO_LIB NAMES HepMC3rootIO HINTS @PACKAGE_LIB_INSTALL_DIR@ @PACKAGE_LIB_INSTALL_DIR@/root)
++find_library(HEPMC3_LIB NAMES HepMC3 HINTS @PACKAGE_CMAKE_INSTALL_LIBDIR@)
++find_library(HEPMC3_SEARCH_LIB NAMES HepMC3search HINTS @PACKAGE_CMAKE_INSTALL_LIBDIR@)
++find_library(HEPMC3_ROOTIO_LIB NAMES HepMC3rootIO HINTS @PACKAGE_HEPMC3_ROOTIO_INSTALL_LIBDIR@)
+
+ set(HEPMC3_LIBRARIES ${HEPMC3_LIB})
+ if(EXISTS ${HEPMC3_SEARCH_LIB})
+--
+2.25.1
+
diff --git a/HepMC3-python-3.9.patch b/HepMC3-python-3.9.patch
deleted file mode 100644
index 77766e5..0000000
--- a/HepMC3-python-3.9.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From a68f8af21f79909de1a2e8318070940c197c72ab Mon Sep 17 00:00:00 2001
-From: Andrii Verbytskyi <andrii.verbytskyi(a)cern.ch>
-Date: Mon, 27 Jan 2020 10:32:49 +0000
-Subject: [PATCH] Update Support.cmake To add Python 3.9 to the list of valid
- versions.
-
----
- cmake/Modules/FindPython/Support.cmake | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/cmake/Modules/FindPython/Support.cmake b/cmake/Modules/FindPython/Support.cmake
-index 08f07fd..0191972 100644
---- a/cmake/Modules/FindPython/Support.cmake
-+++ b/cmake/Modules/FindPython/Support.cmake
-@@ -17,7 +17,7 @@ if (NOT DEFINED _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
- message (FATAL_ERROR "FindPython: INTERNAL ERROR")
- endif()
- if (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL 3)
-- set(_${_PYTHON_PREFIX}_VERSIONS 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
-+ set(_${_PYTHON_PREFIX}_VERSIONS 3.9 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
- elseif (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL 2)
- set(_${_PYTHON_PREFIX}_VERSIONS 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0)
- else()
---
-2.24.1
-
diff --git a/HepMC3-python-test.patch b/HepMC3-python-test.patch
deleted file mode 100644
index ecb88ff..0000000
--- a/HepMC3-python-test.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From c1f27814cde97869ec2dd1063405a5260e4e1193 Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Mon, 2 Dec 2019 08:57:06 +0100
-Subject: [PATCH] Change import order to avoid Import Error:
-
- Start 45: python3.7.5_test_IO2
-44/46 Test #45: python3.7.5_test_IO2 ........................***Failed 10.20 sec
-Traceback (most recent call last):
- File "test_IO2.py", line 7, in <module>
- import pyHepMC3.rootIO.pyHepMC3rootIO.HepMC3 as hmrootIO
-ImportError: generic_type: type "WriterRootTree" referenced unknown base type "HepMC3::Writer"
----
- python/test/test_IO2.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/python/test/test_IO2.py b/python/test/test_IO2.py
-index 4b71276..2cb0331 100644
---- a/python/test/test_IO2.py
-+++ b/python/test/test_IO2.py
-@@ -4,8 +4,8 @@ sys.path=update_path()
-
-
- from pyHepMC3TestUtils import COMPARE_ASCII_FILES
--import pyHepMC3.rootIO.pyHepMC3rootIO.HepMC3 as hmrootIO
- import pyHepMC3.pyHepMC3.HepMC3 as hm
-+import pyHepMC3.rootIO.pyHepMC3rootIO.HepMC3 as hmrootIO
- print(dir(hmrootIO))
- def test_IO2():
- inputA=hm.ReaderAsciiHepMC2("inputIO2.hepmc")
---
-2.23.0
-
diff --git a/HepMC3.spec b/HepMC3.spec
index 77408bf..c0e67e3 100644
--- a/HepMC3.spec
+++ b/HepMC3.spec
@@ -1,25 +1,22 @@
Name: HepMC3
-Version: 3.2.0
-Release: 3%{?dist}
+Version: 3.2.1
+Release: 1%{?dist}
Summary: C++ Event Record for Monte Carlo Generators
License: GPLv3+
URL: https://hepmc.web.cern.ch/hepmc/
Source0: https://hepmc.web.cern.ch/hepmc/releases/%{name}-%{version}.tar.gz
-# Change import order to avoid Import Error
-# https://gitlab.cern.ch/hepmc/HepMC3/merge_requests/45
-Patch0: %{name}-python-test.patch
+# Improvements to HepMC3-config and HepMC3Config.cmake
+# https://gitlab.cern.ch/hepmc/HepMC3/merge_requests/55
+Patch0: %{name}-config.patch
# Reduce memory usage when building Python bindings on ARM
Patch1: %{name}-arm-memory.patch
-# Add Python 3.9 as a valid Python version
-# Backported from upstream git
-Patch2: %{name}-python-3.9.patch
-# The ROOT cmake file used by this project requires cmake 3.4.3
+# The ROOT cmake file used by this project requires cmake 3.9
%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8
-BuildRequires: cmake >= 3.4.3
+BuildRequires: cmake >= 3.9
%else
-BuildRequires: cmake3 >= 3.4.3
+BuildRequires: cmake3 >= 3.9
%endif
BuildRequires: gcc-c++
%ifnarch s390x
@@ -35,6 +32,7 @@ BuildRequires: pythia8-devel
BuildRequires: valgrind
%if %{?rhel}%{!?rhel:0} == 7
BuildRequires: python2-devel
+BuildRequires: python%{python3_other_pkgversion}-devel
%endif
BuildRequires: python%{python3_pkgversion}-devel
@@ -122,6 +120,34 @@ Requires: python2-%{name}%{?_isa} = %{version}-%{release}
%description -n python2-%{name}-rootIO
This package provides the Python 2 bindings for HepMC3 ROOT I/O module.
%endif
+
+%package -n python%{python3_other_pkgversion}-%{name}
+Summary: HepMC3 Python 3 bindings
+%{?python_provide:%python_provide python%{python3_other_pkgversion}-%{name}}
+Requires: %{name}%{?_isa} = %{version}-%{release}
+
+%description -n python%{python3_other_pkgversion}-%{name}
+This package provides the Python 3 bindings for HepMC3.
+
+%package -n python%{python3_other_pkgversion}-%{name}-search
+Summary: HepMC3 search module Python 3 bindings
+%{?python_provide:%python_provide python%{python3_other_pkgversion}-%{name}-search}
+Requires: %{name}-search%{?_isa} = %{version}-%{release}
+Requires: python%{python3_other_pkgversion}-%{name}%{?_isa} = %{version}-%{release}
+
+%description -n python%{python3_other_pkgversion}-%{name}-search
+This package provides the Python 3 bindings for HepMC3 search module.
+
+%ifnarch s390x
+%package -n python%{python3_other_pkgversion}-%{name}-rootIO
+Summary: HepMC3 ROOT I/O module Python 3 bindings
+%{?python_provide:%python_provide python%{python3_other_pkgversion}-%{name}-rootIO}
+Requires: %{name}-rootIO%{?_isa} = %{version}-%{release}
+Requires: python%{python3_other_pkgversion}-%{name}%{?_isa} = %{version}-%{release}
+
+%description -n python%{python3_other_pkgversion}-%{name}-rootIO
+This package provides the Python 3 bindings for HepMC3 ROOT I/O module.
+%endif
%endif
%package -n python%{python3_pkgversion}-%{name}
@@ -163,7 +189,6 @@ This package provides HepMC manuals and examples.
%setup -q
%patch0 -p1
%patch1 -p1
-%patch2 -p1
%build
%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8
@@ -173,33 +198,27 @@ This package provides HepMC manuals and examples.
%endif
%ifnarch s390x
-DHEPMC3_ENABLE_ROOTIO:BOOL=ON \
+ -DHEPMC3_ROOTIO_INSTALL_LIBDIR:PATH=%{_libdir}/root \
%else
-DHEPMC3_ENABLE_ROOTIO:BOOL=OFF \
%endif
-DHEPMC3_ENABLE_TEST:BOOL=ON \
-DHEPMC3_INSTALL_INTERFACES:BOOL=ON \
%if %{?rhel}%{!?rhel:0} == 7
- -DHEPMC3_PYTHON_VERSIONS=2,%python3_version \
+ -DHEPMC3_PYTHON_VERSIONS=2,%python3_version,%python3_other_version \
%else
-DHEPMC3_PYTHON_VERSIONS=%python3_version \
%endif
-DHEPMC3_BUILD_DOCS:BOOL=ON \
+ -DHEPMC3_BUILD_STATIC_LIBS:BOOL=OFF \
-DCMAKE_INSTALL_DOCDIR:PATH=%{_pkgdocdir} \
-DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON .
make %{?_smp_mflags}
%install
make install DESTDIR=%{buildroot}
-rm %{buildroot}%{_libdir}/*.a
cp -pr examples %{buildroot}%{_pkgdocdir}
-%ifnarch s390x
-# Move to root directory
-mkdir %{buildroot}%{_libdir}/root
-mv %{buildroot}%{_libdir}/libHepMC3rootIO* %{buildroot}%{_libdir}/root
-sed 's!\s*-lHepMC3rootIO!/root&!' -i %{buildroot}%{_bindir}/HepMC3-config
-%endif
-
%check
%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8
ctest %{?_smp_mflags} --output-on-failure
@@ -309,14 +328,37 @@ ctest3 %{?_smp_mflags} --output-on-failure
%dir %{python2_sitearch}/pyHepMC3/search
%{python2_sitearch}/pyHepMC3/search/__init__.py*
%{python2_sitearch}/pyHepMC3/search/pyHepMC3search.so
-%{python2_sitearch}/pyHepMC3-search-*.egg-info
+%{python2_sitearch}/pyHepMC3.search-*.egg-info
%ifnarch s390x
%files -n python2-%{name}-rootIO
%dir %{python2_sitearch}/pyHepMC3/rootIO
%{python2_sitearch}/pyHepMC3/rootIO/__init__.py*
%{python2_sitearch}/pyHepMC3/rootIO/pyHepMC3rootIO.so
-%{python2_sitearch}/pyHepMC3-rootIO-*.egg-info
+%{python2_sitearch}/pyHepMC3.rootIO-*.egg-info
+%endif
+
+%files -n python%{python3_other_pkgversion}-%{name}
+%dir %{python3_other_sitearch}/pyHepMC3
+%{python3_other_sitearch}/pyHepMC3/__init__.py
+%{python3_other_sitearch}/pyHepMC3/__pycache__
+%{python3_other_sitearch}/pyHepMC3/pyHepMC3.so
+%{python3_other_sitearch}/pyHepMC3-*.egg-info
+
+%files -n python%{python3_other_pkgversion}-%{name}-search
+%dir %{python3_other_sitearch}/pyHepMC3/search
+%{python3_other_sitearch}/pyHepMC3/search/__init__.py
+%{python3_other_sitearch}/pyHepMC3/search/__pycache__
+%{python3_other_sitearch}/pyHepMC3/search/pyHepMC3search.so
+%{python3_other_sitearch}/pyHepMC3.search-*.egg-info
+
+%ifnarch s390x
+%files -n python%{python3_other_pkgversion}-%{name}-rootIO
+%dir %{python3_other_sitearch}/pyHepMC3/rootIO
+%{python3_other_sitearch}/pyHepMC3/rootIO/__init__.py
+%{python3_other_sitearch}/pyHepMC3/rootIO/__pycache__
+%{python3_other_sitearch}/pyHepMC3/rootIO/pyHepMC3rootIO.so
+%{python3_other_sitearch}/pyHepMC3.rootIO-*.egg-info
%endif
%endif
@@ -332,7 +374,7 @@ ctest3 %{?_smp_mflags} --output-on-failure
%{python3_sitearch}/pyHepMC3/search/__init__.py
%{python3_sitearch}/pyHepMC3/search/__pycache__
%{python3_sitearch}/pyHepMC3/search/pyHepMC3search.so
-%{python3_sitearch}/pyHepMC3-search-*.egg-info
+%{python3_sitearch}/pyHepMC3.search-*.egg-info
%ifnarch s390x
%files -n python%{python3_pkgversion}-%{name}-rootIO
@@ -340,7 +382,7 @@ ctest3 %{?_smp_mflags} --output-on-failure
%{python3_sitearch}/pyHepMC3/rootIO/__init__.py
%{python3_sitearch}/pyHepMC3/rootIO/__pycache__
%{python3_sitearch}/pyHepMC3/rootIO/pyHepMC3rootIO.so
-%{python3_sitearch}/pyHepMC3-rootIO-*.egg-info
+%{python3_sitearch}/pyHepMC3.rootIO-*.egg-info
%endif
%files doc
@@ -350,6 +392,16 @@ ctest3 %{?_smp_mflags} --output-on-failure
%license COPYING
%changelog
+* Sun Mar 22 2020 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 3.2.1-1
+- Update to version 3.2.1
+- Drop patches accepted upstream or previously backported
+- Fix glitches in the generation of the HepMC3-config script
+- Add additional Python 3 version package for EPEL 7
+ (cmake configuration now supports multiple Python 3 versions)
+- Use new cmake configuration options -DHEPMC3_ROOTIO_INSTALL_LIBDIR and
+ -DHEPMC3_BUILD_STATIC_LIBS and simplify spec file accordingly
+- .egg-info filenames are now correct - auto generated provides work
+
* Tue Jan 28 2020 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 3.2.0-3
- Add Python 3.9 as a valid Python version
commit 3e286666a5ee642b1e0fe6d1baeb6848217956a8
Author: Mattias Ellert <mattias.ellert(a)physics.uu.se>
Date: Mon Feb 17 07:39:06 2020 +0100
Add Python 3.9 as a valid Python version
diff --git a/HepMC3-python-3.9.patch b/HepMC3-python-3.9.patch
new file mode 100644
index 0000000..77766e5
--- /dev/null
+++ b/HepMC3-python-3.9.patch
@@ -0,0 +1,26 @@
+From a68f8af21f79909de1a2e8318070940c197c72ab Mon Sep 17 00:00:00 2001
+From: Andrii Verbytskyi <andrii.verbytskyi(a)cern.ch>
+Date: Mon, 27 Jan 2020 10:32:49 +0000
+Subject: [PATCH] Update Support.cmake To add Python 3.9 to the list of valid
+ versions.
+
+---
+ cmake/Modules/FindPython/Support.cmake | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/cmake/Modules/FindPython/Support.cmake b/cmake/Modules/FindPython/Support.cmake
+index 08f07fd..0191972 100644
+--- a/cmake/Modules/FindPython/Support.cmake
++++ b/cmake/Modules/FindPython/Support.cmake
+@@ -17,7 +17,7 @@ if (NOT DEFINED _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
+ message (FATAL_ERROR "FindPython: INTERNAL ERROR")
+ endif()
+ if (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL 3)
+- set(_${_PYTHON_PREFIX}_VERSIONS 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
++ set(_${_PYTHON_PREFIX}_VERSIONS 3.9 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
+ elseif (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL 2)
+ set(_${_PYTHON_PREFIX}_VERSIONS 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0)
+ else()
+--
+2.24.1
+
diff --git a/HepMC3.spec b/HepMC3.spec
index c3f7ab8..77408bf 100644
--- a/HepMC3.spec
+++ b/HepMC3.spec
@@ -1,6 +1,6 @@
Name: HepMC3
Version: 3.2.0
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: C++ Event Record for Monte Carlo Generators
License: GPLv3+
@@ -11,6 +11,9 @@ Source0: https://hepmc.web.cern.ch/hepmc/releases/%{name}-%{version}.tar.gz
Patch0: %{name}-python-test.patch
# Reduce memory usage when building Python bindings on ARM
Patch1: %{name}-arm-memory.patch
+# Add Python 3.9 as a valid Python version
+# Backported from upstream git
+Patch2: %{name}-python-3.9.patch
# The ROOT cmake file used by this project requires cmake 3.4.3
%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8
@@ -160,6 +163,7 @@ This package provides HepMC manuals and examples.
%setup -q
%patch0 -p1
%patch1 -p1
+%patch2 -p1
%build
%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8
@@ -346,6 +350,9 @@ ctest3 %{?_smp_mflags} --output-on-failure
%license COPYING
%changelog
+* Tue Jan 28 2020 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 3.2.0-3
+- Add Python 3.9 as a valid Python version
+
* Tue Jan 28 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 3.2.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
commit 7b670ccc1032b0642d8a5dc87382c1a56de8306d
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Tue Jan 28 09:27:42 2020 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/HepMC3.spec b/HepMC3.spec
index 22fa434..c3f7ab8 100644
--- a/HepMC3.spec
+++ b/HepMC3.spec
@@ -1,6 +1,6 @@
Name: HepMC3
Version: 3.2.0
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: C++ Event Record for Monte Carlo Generators
License: GPLv3+
@@ -346,6 +346,9 @@ ctest3 %{?_smp_mflags} --output-on-failure
%license COPYING
%changelog
+* Tue Jan 28 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 3.2.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
* Thu Nov 28 2019 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 3.2.0-1
- Update to version 3.2.0
- Add Python packages
4 years, 1 month
Architecture specific change in rpms/HepMC3.git
by githook-noreply@fedoraproject.org
The package rpms/HepMC3.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/HepMC3.git/commit/?id=2fd51707f0e....
Change:
+%ifnarch s390x
Thanks.
Full change:
============
commit 2fd51707f0e66908b209a9ca04663287160c1f35
Author: Mattias Ellert <mattias.ellert(a)physics.uu.se>
Date: Tue Mar 24 15:34:40 2020 +0100
Update to version 3.2.1
Drop patches accepted upstream or previously backported
Fix glitches in the generation of the HepMC3-config script
Add additional Python 3 version package for EPEL 7
(cmake configuration now supports multiple Python 3 versions)
Use new cmake configuration options -DHEPMC3_ROOTIO_INSTALL_LIBDIR and
-DHEPMC3_BUILD_STATIC_LIBS and simplify spec file accordingly
.egg-info filenames are now correct - auto generated provides work
diff --git a/HepMC3-arm-memory.patch b/HepMC3-arm-memory.patch
index 8fb0713..c06fef4 100644
--- a/HepMC3-arm-memory.patch
+++ b/HepMC3-arm-memory.patch
@@ -1,13 +1,14 @@
-diff -ur HepMC3-3.2.0.orig/python/CMakeLists.txt HepMC3-3.2.0/python/CMakeLists.txt
---- HepMC3-3.2.0.orig/python/CMakeLists.txt 2019-11-27 11:20:01.000000000 +0100
-+++ HepMC3-3.2.0/python/CMakeLists.txt 2019-12-02 14:44:49.752598636 +0100
-@@ -141,6 +141,9 @@
+diff -ur HepMC3-3.2.1.orig/python/CMakeLists.txt HepMC3-3.2.1/python/CMakeLists.txt
+--- HepMC3-3.2.1.orig/python/CMakeLists.txt 2020-03-17 11:38:25.000000000 +0100
++++ HepMC3-3.2.1/python/CMakeLists.txt 2020-03-22 15:30:35.572891013 +0100
+@@ -199,6 +199,10 @@
endif()
endif()
+if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g1")
+endif()
-
++
if ( Python_LIBRARIES AND Python_INCLUDE_DIRS AND Python_EXECUTABLE AND ((${Python_VERSION_MAJOR} STREQUAL ${ver} AND ${verminor} STREQUAL "X") OR "${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}" STREQUAL "${ver}.${verminor}" ))
message(STATUS "HepMC3 python: Python verson ${ver}.${verminor} found in ${Python_EXECUTABLE}. Python bindings generation is possible.")
+
diff --git a/HepMC3-config.patch b/HepMC3-config.patch
new file mode 100644
index 0000000..dba83ed
--- /dev/null
+++ b/HepMC3-config.patch
@@ -0,0 +1,190 @@
+From 4888b9d8a8f60f5a77b9ce102913ac74500af701 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Sun, 22 Mar 2020 22:44:11 +0100
+Subject: [PATCH] Use configure_package_config_file instead of configure_file
+ to generate HepMC3-config - it handles absolute paths properly.
+
+Use HEPMC3_ROOTIO_INSTALL_LIBDIR when generating HepMC3Config.cmake
+---
+ CMakeLists.txt | 29 +++++++++++++--------
+ HepMC3-config.in | 36 ++++++++++++++-------------
+ cmake/Templates/HepMC3Config.cmake.in | 8 +++---
+ 3 files changed, 41 insertions(+), 32 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index a63b916..2c452b8 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -217,34 +217,41 @@ endif()
+ install(TARGETS HepMC3_static DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libs)
+ endif()
+
+-configure_file(HepMC3-config.in ${PROJECT_BINARY_DIR}/outputs/${CMAKE_INSTALL_BINDIR}/HepMC3-config )
+-
+-
+ install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT devel)
+
+-install(FILES ${PROJECT_BINARY_DIR}/outputs/${CMAKE_INSTALL_BINDIR}/HepMC3-config DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libs PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+-
+ # Generate config CMake files to be used by other projects
+ #
+
+ include(CMakePackageConfigHelpers)
+
+-set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR})
+-set(LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR})
+ set(INTERFACES_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/HepMC3/interfaces)
+ set(CONFIG_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/HepMC3/cmake)
+
+-configure_package_config_file(cmake/Templates/HepMC3Config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/outputs/share/HepMC3/cmake/HepMC3Config.cmake
+- INSTALL_DESTINATION ${CONFIG_INSTALL_DIR}
+- PATH_VARS INCLUDE_INSTALL_DIR LIB_INSTALL_DIR
+- INTERFACES_INSTALL_DIR)
++configure_package_config_file(cmake/Templates/HepMC3Config.cmake.in
++ ${CMAKE_CURRENT_BINARY_DIR}/outputs/share/HepMC3/cmake/HepMC3Config.cmake
++ INSTALL_DESTINATION ${CONFIG_INSTALL_DIR}
++ PATH_VARS CMAKE_INSTALL_INCLUDEDIR
++ CMAKE_INSTALL_LIBDIR
++ HEPMC3_ROOTIO_INSTALL_LIBDIR
++ INTERFACES_INSTALL_DIR)
+
+ write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/outputs/share/HepMC3/cmake/HepMC3Config-version.cmake COMPATIBILITY SameMajorVersion)
+
++configure_package_config_file(HepMC3-config.in
++ ${CMAKE_CURRENT_BINARY_DIR}/outputs/bin/HepMC3-config
++ INSTALL_DESTINATION ${CMAKE_INSTALL_BINDIR}
++ PATH_VARS CMAKE_INSTALL_INCLUDEDIR
++ CMAKE_INSTALL_LIBDIR
++ HEPMC3_ROOTIO_INSTALL_LIBDIR)
++
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/outputs/share/HepMC3/cmake/HepMC3Config.cmake
+ ${CMAKE_CURRENT_BINARY_DIR}/outputs/share/HepMC3/cmake/HepMC3Config-version.cmake
+ DESTINATION ${CONFIG_INSTALL_DIR} COMPONENT devel)
+
++install(FILES ${CMAKE_CURRENT_BINARY_DIR}/outputs/bin/HepMC3-config
++ DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libs
++ PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
++
+ ########################################################################
+ ## Optional packages
+ ########################################################################
+diff --git a/HepMC3-config.in b/HepMC3-config.in
+index 7db10f6..46d5ab6 100755
+--- a/HepMC3-config.in
++++ b/HepMC3-config.in
+@@ -5,13 +5,13 @@
+ ## @configure_input@
+ #The line below assures at least some relocation.
+ if [ "$(uname)" == "Darwin" ]; then
+-prefix=$(dirname $(dirname $(greadlink -f $0)))
++PACKAGE_PREFIX_DIR=$(dirname $(dirname $(greadlink -f $0)))
+ else
+-prefix=$(dirname $(dirname $(readlink -f $0)))
++PACKAGE_PREFIX_DIR=$(dirname $(dirname $(readlink -f $0)))
+ fi
+ tmp=$(echo $* | egrep -- '--\<help\>|-\<h\>')
+ if test $# -eq 0 || test -n "$tmp"; then
+- echo "${PROJECT_NAME}-config: configuration tool for the ${PROJECT_NAME} library"
++ echo "@PROJECT_NAME@-config: configuration tool for the @PROJECT_NAME@ library"
+ echo
+ echo "Usage: $( basename $0 ) [--help|-h] | "
+ echo " [--{prefix,libdir,includedir}] | "
+@@ -21,55 +21,57 @@ if test $# -eq 0 || test -n "$tmp"; then
+ echo " --help | -h : show this help message"
+ echo
+ echo " --prefix : show the installation prefix"
+- echo " --includedir : show the path to the directory containing the ${PROJECT_NAME} headers"
+- echo " --libdir : show the path to the directory containing the ${PROJECT_NAME} libraries"
++ echo " --includedir : show the path to the directory containing the @PROJECT_NAME@ headers"
++ echo " --libdir : show the path to the directory containing the @PROJECT_NAME@ libraries"
+ echo
+ echo " --cflags|--cppflags : returns a '-I' string for insertion into CPPFLAGS or CXXFLAGS"
+- echo " --ldflags|libs : returns a '-L/-l' string for insertion into LIBS or LIBADD"
++ echo " --ldflags|--libs : returns a '-L/-l' string for insertion into LIBS or LIBADD"
+ echo " --rootIO : returns a '-L/-l' string for insertion into LIBS or LIBADD with rootIO support"
+ echo " --search : returns a '-L/-l' string for insertion into LIBS or LIBADD with search support"
+ echo " --static : returns a string for insertion into LIBS or LIBADD"
+ echo
+- echo " --version : returns the ${PROJECT_NAME} release version number"
++ echo " --version : returns the @PROJECT_NAME@ release version number"
+ exit 0
+ fi
+
+ OUT=""
+
+ tmp=$( echo "$*" | egrep -- '--\<prefix\>')
+-test -n "$tmp" && OUT="$OUT $prefix"
++test -n "$tmp" && OUT="$OUT ${PACKAGE_PREFIX_DIR}"
+
+ tmp=$( echo "$*" | egrep -- '--\<includedir\>')
+-test -n "$tmp" && OUT="$OUT $prefix/${CMAKE_INSTALL_INCLUDEDIR}"
++test -n "$tmp" && OUT="$OUT @PACKAGE_CMAKE_INSTALL_INCLUDEDIR@"
+
+ tmp=$( echo "$*" | egrep -- '--\<libdir\>')
+-test -n "$tmp" && OUT="$OUT $prefix/${CMAKE_INSTALL_LIBDIR}"
++test -n "$tmp" && OUT="$OUT @PACKAGE_CMAKE_INSTALL_LIBDIR@"
+
+ tmp=$( echo "$*" | egrep -- '--\<cflags|cppflags|cxxflags\>')
+-test -n "$tmp" && OUT="$OUT -I$prefix/${CMAKE_INSTALL_INCLUDEDIR}"
++test -n "$tmp" && OUT="$OUT -I@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@"
+
+
+ tmp=$( echo "$*" | egrep -- '--\<static\>')
+ if test -n "$tmp"; then
+
+ tmp=$( echo "$*" | egrep -- '--\<ldflags|libs\>')
+-OUT="$OUT $prefix/${CMAKE_INSTALL_LIBDIR}/libHepMC3_static.a -lHepMC3"
++OUT="$OUT @PACKAGE_CMAKE_INSTALL_LIBDIR(a)/libHepMC3_static.a"
+
+ tmp=$( echo "$*" | egrep -- '--\<search\>')
+-test -n "$tmp" && OUT="$OUT -L$prefix/${CMAKE_INSTALL_LIBDIR}/libHepMC3search_static.a -lHepMC3search"
++test -n "$tmp" && OUT="$OUT @PACKAGE_CMAKE_INSTALL_LIBDIR(a)/libHepMC3search_static.a"
+
+ else
++
+ tmp=$( echo "$*" | egrep -- '--\<ldflags|libs\>')
+-test -n "$tmp" && OUT="$OUT -L$prefix/${CMAKE_INSTALL_LIBDIR} -lHepMC3"
++test -n "$tmp" && OUT="$OUT -L@PACKAGE_CMAKE_INSTALL_LIBDIR@ -lHepMC3"
+
+ tmp=$( echo "$*" | egrep -- '--\<search\>')
+-test -n "$tmp" && OUT="$OUT -L$prefix/${CMAKE_INSTALL_LIBDIR} -lHepMC3search"
++test -n "$tmp" && OUT="$OUT -L@PACKAGE_CMAKE_INSTALL_LIBDIR@ -lHepMC3search"
++
+ fi
+
+ tmp=$( echo "$*" | egrep -- '--\<rootIO\>')
+-test -n "$tmp" && OUT="$OUT -L$prefix/${HEPMC3_ROOTIO_INSTALL_LIBDIR} ${HEPMC3_ROOTIO_LIBRARY}"
++test -n "$tmp" && OUT="$OUT -L@PACKAGE_HEPMC3_ROOTIO_INSTALL_LIBDIR@ @HEPMC3_ROOTIO_LIBRARY@"
+
+ tmp=$( echo "$*" | egrep -- '--\<version\>')
+-test -n "$tmp" && echo ${PROJECT_VERSION}&& exit 0
++test -n "$tmp" && echo @PROJECT_VERSION@ && exit 0
+
+ echo $OUT
+diff --git a/cmake/Templates/HepMC3Config.cmake.in b/cmake/Templates/HepMC3Config.cmake.in
+index 9f690fe..df8f440 100644
+--- a/cmake/Templates/HepMC3Config.cmake.in
++++ b/cmake/Templates/HepMC3Config.cmake.in
+@@ -6,15 +6,15 @@ SET(HEPMC3_VERSION_MINOR @HEPMC3_VERSION_MINOR@)
+ SET(HEPMC3_VERSION_PATCH @HEPMC3_VERSION_PATCH@)
+
+
+-set_and_check(HEPMC3_INCLUDE_DIR @PACKAGE_INCLUDE_INSTALL_DIR@)
++set_and_check(HEPMC3_INCLUDE_DIR @PACKAGE_CMAKE_INSTALL_INCLUDEDIR@)
+
+ if(EXISTS @PACKAGE_INTERFACES_INSTALL_DIR@)
+ set(HEPMC3_INTERFACES_DIR @PACKAGE_INTERFACES_INSTALL_DIR@)
+ endif()
+
+-find_library(HEPMC3_LIB NAMES HepMC3 HINTS @PACKAGE_LIB_INSTALL_DIR@)
+-find_library(HEPMC3_SEARCH_LIB NAMES HepMC3search HINTS @PACKAGE_LIB_INSTALL_DIR@)
+-find_library(HEPMC3_ROOTIO_LIB NAMES HepMC3rootIO HINTS @PACKAGE_LIB_INSTALL_DIR@ @PACKAGE_LIB_INSTALL_DIR@/root)
++find_library(HEPMC3_LIB NAMES HepMC3 HINTS @PACKAGE_CMAKE_INSTALL_LIBDIR@)
++find_library(HEPMC3_SEARCH_LIB NAMES HepMC3search HINTS @PACKAGE_CMAKE_INSTALL_LIBDIR@)
++find_library(HEPMC3_ROOTIO_LIB NAMES HepMC3rootIO HINTS @PACKAGE_HEPMC3_ROOTIO_INSTALL_LIBDIR@)
+
+ set(HEPMC3_LIBRARIES ${HEPMC3_LIB})
+ if(EXISTS ${HEPMC3_SEARCH_LIB})
+--
+2.25.1
+
diff --git a/HepMC3-python-3.9.patch b/HepMC3-python-3.9.patch
deleted file mode 100644
index 77766e5..0000000
--- a/HepMC3-python-3.9.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From a68f8af21f79909de1a2e8318070940c197c72ab Mon Sep 17 00:00:00 2001
-From: Andrii Verbytskyi <andrii.verbytskyi(a)cern.ch>
-Date: Mon, 27 Jan 2020 10:32:49 +0000
-Subject: [PATCH] Update Support.cmake To add Python 3.9 to the list of valid
- versions.
-
----
- cmake/Modules/FindPython/Support.cmake | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/cmake/Modules/FindPython/Support.cmake b/cmake/Modules/FindPython/Support.cmake
-index 08f07fd..0191972 100644
---- a/cmake/Modules/FindPython/Support.cmake
-+++ b/cmake/Modules/FindPython/Support.cmake
-@@ -17,7 +17,7 @@ if (NOT DEFINED _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
- message (FATAL_ERROR "FindPython: INTERNAL ERROR")
- endif()
- if (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL 3)
-- set(_${_PYTHON_PREFIX}_VERSIONS 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
-+ set(_${_PYTHON_PREFIX}_VERSIONS 3.9 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
- elseif (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL 2)
- set(_${_PYTHON_PREFIX}_VERSIONS 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0)
- else()
---
-2.24.1
-
diff --git a/HepMC3-python-test.patch b/HepMC3-python-test.patch
deleted file mode 100644
index ecb88ff..0000000
--- a/HepMC3-python-test.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From c1f27814cde97869ec2dd1063405a5260e4e1193 Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Mon, 2 Dec 2019 08:57:06 +0100
-Subject: [PATCH] Change import order to avoid Import Error:
-
- Start 45: python3.7.5_test_IO2
-44/46 Test #45: python3.7.5_test_IO2 ........................***Failed 10.20 sec
-Traceback (most recent call last):
- File "test_IO2.py", line 7, in <module>
- import pyHepMC3.rootIO.pyHepMC3rootIO.HepMC3 as hmrootIO
-ImportError: generic_type: type "WriterRootTree" referenced unknown base type "HepMC3::Writer"
----
- python/test/test_IO2.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/python/test/test_IO2.py b/python/test/test_IO2.py
-index 4b71276..2cb0331 100644
---- a/python/test/test_IO2.py
-+++ b/python/test/test_IO2.py
-@@ -4,8 +4,8 @@ sys.path=update_path()
-
-
- from pyHepMC3TestUtils import COMPARE_ASCII_FILES
--import pyHepMC3.rootIO.pyHepMC3rootIO.HepMC3 as hmrootIO
- import pyHepMC3.pyHepMC3.HepMC3 as hm
-+import pyHepMC3.rootIO.pyHepMC3rootIO.HepMC3 as hmrootIO
- print(dir(hmrootIO))
- def test_IO2():
- inputA=hm.ReaderAsciiHepMC2("inputIO2.hepmc")
---
-2.23.0
-
diff --git a/HepMC3.spec b/HepMC3.spec
index 77408bf..c0e67e3 100644
--- a/HepMC3.spec
+++ b/HepMC3.spec
@@ -1,25 +1,22 @@
Name: HepMC3
-Version: 3.2.0
-Release: 3%{?dist}
+Version: 3.2.1
+Release: 1%{?dist}
Summary: C++ Event Record for Monte Carlo Generators
License: GPLv3+
URL: https://hepmc.web.cern.ch/hepmc/
Source0: https://hepmc.web.cern.ch/hepmc/releases/%{name}-%{version}.tar.gz
-# Change import order to avoid Import Error
-# https://gitlab.cern.ch/hepmc/HepMC3/merge_requests/45
-Patch0: %{name}-python-test.patch
+# Improvements to HepMC3-config and HepMC3Config.cmake
+# https://gitlab.cern.ch/hepmc/HepMC3/merge_requests/55
+Patch0: %{name}-config.patch
# Reduce memory usage when building Python bindings on ARM
Patch1: %{name}-arm-memory.patch
-# Add Python 3.9 as a valid Python version
-# Backported from upstream git
-Patch2: %{name}-python-3.9.patch
-# The ROOT cmake file used by this project requires cmake 3.4.3
+# The ROOT cmake file used by this project requires cmake 3.9
%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8
-BuildRequires: cmake >= 3.4.3
+BuildRequires: cmake >= 3.9
%else
-BuildRequires: cmake3 >= 3.4.3
+BuildRequires: cmake3 >= 3.9
%endif
BuildRequires: gcc-c++
%ifnarch s390x
@@ -35,6 +32,7 @@ BuildRequires: pythia8-devel
BuildRequires: valgrind
%if %{?rhel}%{!?rhel:0} == 7
BuildRequires: python2-devel
+BuildRequires: python%{python3_other_pkgversion}-devel
%endif
BuildRequires: python%{python3_pkgversion}-devel
@@ -122,6 +120,34 @@ Requires: python2-%{name}%{?_isa} = %{version}-%{release}
%description -n python2-%{name}-rootIO
This package provides the Python 2 bindings for HepMC3 ROOT I/O module.
%endif
+
+%package -n python%{python3_other_pkgversion}-%{name}
+Summary: HepMC3 Python 3 bindings
+%{?python_provide:%python_provide python%{python3_other_pkgversion}-%{name}}
+Requires: %{name}%{?_isa} = %{version}-%{release}
+
+%description -n python%{python3_other_pkgversion}-%{name}
+This package provides the Python 3 bindings for HepMC3.
+
+%package -n python%{python3_other_pkgversion}-%{name}-search
+Summary: HepMC3 search module Python 3 bindings
+%{?python_provide:%python_provide python%{python3_other_pkgversion}-%{name}-search}
+Requires: %{name}-search%{?_isa} = %{version}-%{release}
+Requires: python%{python3_other_pkgversion}-%{name}%{?_isa} = %{version}-%{release}
+
+%description -n python%{python3_other_pkgversion}-%{name}-search
+This package provides the Python 3 bindings for HepMC3 search module.
+
+%ifnarch s390x
+%package -n python%{python3_other_pkgversion}-%{name}-rootIO
+Summary: HepMC3 ROOT I/O module Python 3 bindings
+%{?python_provide:%python_provide python%{python3_other_pkgversion}-%{name}-rootIO}
+Requires: %{name}-rootIO%{?_isa} = %{version}-%{release}
+Requires: python%{python3_other_pkgversion}-%{name}%{?_isa} = %{version}-%{release}
+
+%description -n python%{python3_other_pkgversion}-%{name}-rootIO
+This package provides the Python 3 bindings for HepMC3 ROOT I/O module.
+%endif
%endif
%package -n python%{python3_pkgversion}-%{name}
@@ -163,7 +189,6 @@ This package provides HepMC manuals and examples.
%setup -q
%patch0 -p1
%patch1 -p1
-%patch2 -p1
%build
%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8
@@ -173,33 +198,27 @@ This package provides HepMC manuals and examples.
%endif
%ifnarch s390x
-DHEPMC3_ENABLE_ROOTIO:BOOL=ON \
+ -DHEPMC3_ROOTIO_INSTALL_LIBDIR:PATH=%{_libdir}/root \
%else
-DHEPMC3_ENABLE_ROOTIO:BOOL=OFF \
%endif
-DHEPMC3_ENABLE_TEST:BOOL=ON \
-DHEPMC3_INSTALL_INTERFACES:BOOL=ON \
%if %{?rhel}%{!?rhel:0} == 7
- -DHEPMC3_PYTHON_VERSIONS=2,%python3_version \
+ -DHEPMC3_PYTHON_VERSIONS=2,%python3_version,%python3_other_version \
%else
-DHEPMC3_PYTHON_VERSIONS=%python3_version \
%endif
-DHEPMC3_BUILD_DOCS:BOOL=ON \
+ -DHEPMC3_BUILD_STATIC_LIBS:BOOL=OFF \
-DCMAKE_INSTALL_DOCDIR:PATH=%{_pkgdocdir} \
-DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON .
make %{?_smp_mflags}
%install
make install DESTDIR=%{buildroot}
-rm %{buildroot}%{_libdir}/*.a
cp -pr examples %{buildroot}%{_pkgdocdir}
-%ifnarch s390x
-# Move to root directory
-mkdir %{buildroot}%{_libdir}/root
-mv %{buildroot}%{_libdir}/libHepMC3rootIO* %{buildroot}%{_libdir}/root
-sed 's!\s*-lHepMC3rootIO!/root&!' -i %{buildroot}%{_bindir}/HepMC3-config
-%endif
-
%check
%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8
ctest %{?_smp_mflags} --output-on-failure
@@ -309,14 +328,37 @@ ctest3 %{?_smp_mflags} --output-on-failure
%dir %{python2_sitearch}/pyHepMC3/search
%{python2_sitearch}/pyHepMC3/search/__init__.py*
%{python2_sitearch}/pyHepMC3/search/pyHepMC3search.so
-%{python2_sitearch}/pyHepMC3-search-*.egg-info
+%{python2_sitearch}/pyHepMC3.search-*.egg-info
%ifnarch s390x
%files -n python2-%{name}-rootIO
%dir %{python2_sitearch}/pyHepMC3/rootIO
%{python2_sitearch}/pyHepMC3/rootIO/__init__.py*
%{python2_sitearch}/pyHepMC3/rootIO/pyHepMC3rootIO.so
-%{python2_sitearch}/pyHepMC3-rootIO-*.egg-info
+%{python2_sitearch}/pyHepMC3.rootIO-*.egg-info
+%endif
+
+%files -n python%{python3_other_pkgversion}-%{name}
+%dir %{python3_other_sitearch}/pyHepMC3
+%{python3_other_sitearch}/pyHepMC3/__init__.py
+%{python3_other_sitearch}/pyHepMC3/__pycache__
+%{python3_other_sitearch}/pyHepMC3/pyHepMC3.so
+%{python3_other_sitearch}/pyHepMC3-*.egg-info
+
+%files -n python%{python3_other_pkgversion}-%{name}-search
+%dir %{python3_other_sitearch}/pyHepMC3/search
+%{python3_other_sitearch}/pyHepMC3/search/__init__.py
+%{python3_other_sitearch}/pyHepMC3/search/__pycache__
+%{python3_other_sitearch}/pyHepMC3/search/pyHepMC3search.so
+%{python3_other_sitearch}/pyHepMC3.search-*.egg-info
+
+%ifnarch s390x
+%files -n python%{python3_other_pkgversion}-%{name}-rootIO
+%dir %{python3_other_sitearch}/pyHepMC3/rootIO
+%{python3_other_sitearch}/pyHepMC3/rootIO/__init__.py
+%{python3_other_sitearch}/pyHepMC3/rootIO/__pycache__
+%{python3_other_sitearch}/pyHepMC3/rootIO/pyHepMC3rootIO.so
+%{python3_other_sitearch}/pyHepMC3.rootIO-*.egg-info
%endif
%endif
@@ -332,7 +374,7 @@ ctest3 %{?_smp_mflags} --output-on-failure
%{python3_sitearch}/pyHepMC3/search/__init__.py
%{python3_sitearch}/pyHepMC3/search/__pycache__
%{python3_sitearch}/pyHepMC3/search/pyHepMC3search.so
-%{python3_sitearch}/pyHepMC3-search-*.egg-info
+%{python3_sitearch}/pyHepMC3.search-*.egg-info
%ifnarch s390x
%files -n python%{python3_pkgversion}-%{name}-rootIO
@@ -340,7 +382,7 @@ ctest3 %{?_smp_mflags} --output-on-failure
%{python3_sitearch}/pyHepMC3/rootIO/__init__.py
%{python3_sitearch}/pyHepMC3/rootIO/__pycache__
%{python3_sitearch}/pyHepMC3/rootIO/pyHepMC3rootIO.so
-%{python3_sitearch}/pyHepMC3-rootIO-*.egg-info
+%{python3_sitearch}/pyHepMC3.rootIO-*.egg-info
%endif
%files doc
@@ -350,6 +392,16 @@ ctest3 %{?_smp_mflags} --output-on-failure
%license COPYING
%changelog
+* Sun Mar 22 2020 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 3.2.1-1
+- Update to version 3.2.1
+- Drop patches accepted upstream or previously backported
+- Fix glitches in the generation of the HepMC3-config script
+- Add additional Python 3 version package for EPEL 7
+ (cmake configuration now supports multiple Python 3 versions)
+- Use new cmake configuration options -DHEPMC3_ROOTIO_INSTALL_LIBDIR and
+ -DHEPMC3_BUILD_STATIC_LIBS and simplify spec file accordingly
+- .egg-info filenames are now correct - auto generated provides work
+
* Tue Jan 28 2020 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 3.2.0-3
- Add Python 3.9 as a valid Python version
commit 3e286666a5ee642b1e0fe6d1baeb6848217956a8
Author: Mattias Ellert <mattias.ellert(a)physics.uu.se>
Date: Mon Feb 17 07:39:06 2020 +0100
Add Python 3.9 as a valid Python version
diff --git a/HepMC3-python-3.9.patch b/HepMC3-python-3.9.patch
new file mode 100644
index 0000000..77766e5
--- /dev/null
+++ b/HepMC3-python-3.9.patch
@@ -0,0 +1,26 @@
+From a68f8af21f79909de1a2e8318070940c197c72ab Mon Sep 17 00:00:00 2001
+From: Andrii Verbytskyi <andrii.verbytskyi(a)cern.ch>
+Date: Mon, 27 Jan 2020 10:32:49 +0000
+Subject: [PATCH] Update Support.cmake To add Python 3.9 to the list of valid
+ versions.
+
+---
+ cmake/Modules/FindPython/Support.cmake | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/cmake/Modules/FindPython/Support.cmake b/cmake/Modules/FindPython/Support.cmake
+index 08f07fd..0191972 100644
+--- a/cmake/Modules/FindPython/Support.cmake
++++ b/cmake/Modules/FindPython/Support.cmake
+@@ -17,7 +17,7 @@ if (NOT DEFINED _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
+ message (FATAL_ERROR "FindPython: INTERNAL ERROR")
+ endif()
+ if (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL 3)
+- set(_${_PYTHON_PREFIX}_VERSIONS 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
++ set(_${_PYTHON_PREFIX}_VERSIONS 3.9 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
+ elseif (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL 2)
+ set(_${_PYTHON_PREFIX}_VERSIONS 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0)
+ else()
+--
+2.24.1
+
diff --git a/HepMC3.spec b/HepMC3.spec
index c3f7ab8..77408bf 100644
--- a/HepMC3.spec
+++ b/HepMC3.spec
@@ -1,6 +1,6 @@
Name: HepMC3
Version: 3.2.0
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: C++ Event Record for Monte Carlo Generators
License: GPLv3+
@@ -11,6 +11,9 @@ Source0: https://hepmc.web.cern.ch/hepmc/releases/%{name}-%{version}.tar.gz
Patch0: %{name}-python-test.patch
# Reduce memory usage when building Python bindings on ARM
Patch1: %{name}-arm-memory.patch
+# Add Python 3.9 as a valid Python version
+# Backported from upstream git
+Patch2: %{name}-python-3.9.patch
# The ROOT cmake file used by this project requires cmake 3.4.3
%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8
@@ -160,6 +163,7 @@ This package provides HepMC manuals and examples.
%setup -q
%patch0 -p1
%patch1 -p1
+%patch2 -p1
%build
%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8
@@ -346,6 +350,9 @@ ctest3 %{?_smp_mflags} --output-on-failure
%license COPYING
%changelog
+* Tue Jan 28 2020 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 3.2.0-3
+- Add Python 3.9 as a valid Python version
+
* Tue Jan 28 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 3.2.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
commit 7b670ccc1032b0642d8a5dc87382c1a56de8306d
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Tue Jan 28 09:27:42 2020 +0000
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/HepMC3.spec b/HepMC3.spec
index 22fa434..c3f7ab8 100644
--- a/HepMC3.spec
+++ b/HepMC3.spec
@@ -1,6 +1,6 @@
Name: HepMC3
Version: 3.2.0
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: C++ Event Record for Monte Carlo Generators
License: GPLv3+
@@ -346,6 +346,9 @@ ctest3 %{?_smp_mflags} --output-on-failure
%license COPYING
%changelog
+* Tue Jan 28 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 3.2.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
* Thu Nov 28 2019 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 3.2.0-1
- Update to version 3.2.0
- Add Python packages
4 years, 1 month
Architecture specific change in rpms/HepMC3.git
by githook-noreply@fedoraproject.org
The package rpms/HepMC3.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/HepMC3.git/commit/?id=2fd51707f0e....
Change:
+%ifnarch s390x
Thanks.
Full change:
============
commit 2fd51707f0e66908b209a9ca04663287160c1f35
Author: Mattias Ellert <mattias.ellert(a)physics.uu.se>
Date: Tue Mar 24 15:34:40 2020 +0100
Update to version 3.2.1
Drop patches accepted upstream or previously backported
Fix glitches in the generation of the HepMC3-config script
Add additional Python 3 version package for EPEL 7
(cmake configuration now supports multiple Python 3 versions)
Use new cmake configuration options -DHEPMC3_ROOTIO_INSTALL_LIBDIR and
-DHEPMC3_BUILD_STATIC_LIBS and simplify spec file accordingly
.egg-info filenames are now correct - auto generated provides work
diff --git a/HepMC3-arm-memory.patch b/HepMC3-arm-memory.patch
index 8fb0713..c06fef4 100644
--- a/HepMC3-arm-memory.patch
+++ b/HepMC3-arm-memory.patch
@@ -1,13 +1,14 @@
-diff -ur HepMC3-3.2.0.orig/python/CMakeLists.txt HepMC3-3.2.0/python/CMakeLists.txt
---- HepMC3-3.2.0.orig/python/CMakeLists.txt 2019-11-27 11:20:01.000000000 +0100
-+++ HepMC3-3.2.0/python/CMakeLists.txt 2019-12-02 14:44:49.752598636 +0100
-@@ -141,6 +141,9 @@
+diff -ur HepMC3-3.2.1.orig/python/CMakeLists.txt HepMC3-3.2.1/python/CMakeLists.txt
+--- HepMC3-3.2.1.orig/python/CMakeLists.txt 2020-03-17 11:38:25.000000000 +0100
++++ HepMC3-3.2.1/python/CMakeLists.txt 2020-03-22 15:30:35.572891013 +0100
+@@ -199,6 +199,10 @@
endif()
endif()
+if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g1")
+endif()
-
++
if ( Python_LIBRARIES AND Python_INCLUDE_DIRS AND Python_EXECUTABLE AND ((${Python_VERSION_MAJOR} STREQUAL ${ver} AND ${verminor} STREQUAL "X") OR "${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}" STREQUAL "${ver}.${verminor}" ))
message(STATUS "HepMC3 python: Python verson ${ver}.${verminor} found in ${Python_EXECUTABLE}. Python bindings generation is possible.")
+
diff --git a/HepMC3-config.patch b/HepMC3-config.patch
new file mode 100644
index 0000000..dba83ed
--- /dev/null
+++ b/HepMC3-config.patch
@@ -0,0 +1,190 @@
+From 4888b9d8a8f60f5a77b9ce102913ac74500af701 Mon Sep 17 00:00:00 2001
+From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
+Date: Sun, 22 Mar 2020 22:44:11 +0100
+Subject: [PATCH] Use configure_package_config_file instead of configure_file
+ to generate HepMC3-config - it handles absolute paths properly.
+
+Use HEPMC3_ROOTIO_INSTALL_LIBDIR when generating HepMC3Config.cmake
+---
+ CMakeLists.txt | 29 +++++++++++++--------
+ HepMC3-config.in | 36 ++++++++++++++-------------
+ cmake/Templates/HepMC3Config.cmake.in | 8 +++---
+ 3 files changed, 41 insertions(+), 32 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index a63b916..2c452b8 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -217,34 +217,41 @@ endif()
+ install(TARGETS HepMC3_static DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libs)
+ endif()
+
+-configure_file(HepMC3-config.in ${PROJECT_BINARY_DIR}/outputs/${CMAKE_INSTALL_BINDIR}/HepMC3-config )
+-
+-
+ install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT devel)
+
+-install(FILES ${PROJECT_BINARY_DIR}/outputs/${CMAKE_INSTALL_BINDIR}/HepMC3-config DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libs PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+-
+ # Generate config CMake files to be used by other projects
+ #
+
+ include(CMakePackageConfigHelpers)
+
+-set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR})
+-set(LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR})
+ set(INTERFACES_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/HepMC3/interfaces)
+ set(CONFIG_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/HepMC3/cmake)
+
+-configure_package_config_file(cmake/Templates/HepMC3Config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/outputs/share/HepMC3/cmake/HepMC3Config.cmake
+- INSTALL_DESTINATION ${CONFIG_INSTALL_DIR}
+- PATH_VARS INCLUDE_INSTALL_DIR LIB_INSTALL_DIR
+- INTERFACES_INSTALL_DIR)
++configure_package_config_file(cmake/Templates/HepMC3Config.cmake.in
++ ${CMAKE_CURRENT_BINARY_DIR}/outputs/share/HepMC3/cmake/HepMC3Config.cmake
++ INSTALL_DESTINATION ${CONFIG_INSTALL_DIR}
++ PATH_VARS CMAKE_INSTALL_INCLUDEDIR
++ CMAKE_INSTALL_LIBDIR
++ HEPMC3_ROOTIO_INSTALL_LIBDIR
++ INTERFACES_INSTALL_DIR)
+
+ write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/outputs/share/HepMC3/cmake/HepMC3Config-version.cmake COMPATIBILITY SameMajorVersion)
+
++configure_package_config_file(HepMC3-config.in
++ ${CMAKE_CURRENT_BINARY_DIR}/outputs/bin/HepMC3-config
++ INSTALL_DESTINATION ${CMAKE_INSTALL_BINDIR}
++ PATH_VARS CMAKE_INSTALL_INCLUDEDIR
++ CMAKE_INSTALL_LIBDIR
++ HEPMC3_ROOTIO_INSTALL_LIBDIR)
++
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/outputs/share/HepMC3/cmake/HepMC3Config.cmake
+ ${CMAKE_CURRENT_BINARY_DIR}/outputs/share/HepMC3/cmake/HepMC3Config-version.cmake
+ DESTINATION ${CONFIG_INSTALL_DIR} COMPONENT devel)
+
++install(FILES ${CMAKE_CURRENT_BINARY_DIR}/outputs/bin/HepMC3-config
++ DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libs
++ PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
++
+ ########################################################################
+ ## Optional packages
+ ########################################################################
+diff --git a/HepMC3-config.in b/HepMC3-config.in
+index 7db10f6..46d5ab6 100755
+--- a/HepMC3-config.in
++++ b/HepMC3-config.in
+@@ -5,13 +5,13 @@
+ ## @configure_input@
+ #The line below assures at least some relocation.
+ if [ "$(uname)" == "Darwin" ]; then
+-prefix=$(dirname $(dirname $(greadlink -f $0)))
++PACKAGE_PREFIX_DIR=$(dirname $(dirname $(greadlink -f $0)))
+ else
+-prefix=$(dirname $(dirname $(readlink -f $0)))
++PACKAGE_PREFIX_DIR=$(dirname $(dirname $(readlink -f $0)))
+ fi
+ tmp=$(echo $* | egrep -- '--\<help\>|-\<h\>')
+ if test $# -eq 0 || test -n "$tmp"; then
+- echo "${PROJECT_NAME}-config: configuration tool for the ${PROJECT_NAME} library"
++ echo "@PROJECT_NAME@-config: configuration tool for the @PROJECT_NAME@ library"
+ echo
+ echo "Usage: $( basename $0 ) [--help|-h] | "
+ echo " [--{prefix,libdir,includedir}] | "
+@@ -21,55 +21,57 @@ if test $# -eq 0 || test -n "$tmp"; then
+ echo " --help | -h : show this help message"
+ echo
+ echo " --prefix : show the installation prefix"
+- echo " --includedir : show the path to the directory containing the ${PROJECT_NAME} headers"
+- echo " --libdir : show the path to the directory containing the ${PROJECT_NAME} libraries"
++ echo " --includedir : show the path to the directory containing the @PROJECT_NAME@ headers"
++ echo " --libdir : show the path to the directory containing the @PROJECT_NAME@ libraries"
+ echo
+ echo " --cflags|--cppflags : returns a '-I' string for insertion into CPPFLAGS or CXXFLAGS"
+- echo " --ldflags|libs : returns a '-L/-l' string for insertion into LIBS or LIBADD"
++ echo " --ldflags|--libs : returns a '-L/-l' string for insertion into LIBS or LIBADD"
+ echo " --rootIO : returns a '-L/-l' string for insertion into LIBS or LIBADD with rootIO support"
+ echo " --search : returns a '-L/-l' string for insertion into LIBS or LIBADD with search support"
+ echo " --static : returns a string for insertion into LIBS or LIBADD"
+ echo
+- echo " --version : returns the ${PROJECT_NAME} release version number"
++ echo " --version : returns the @PROJECT_NAME@ release version number"
+ exit 0
+ fi
+
+ OUT=""
+
+ tmp=$( echo "$*" | egrep -- '--\<prefix\>')
+-test -n "$tmp" && OUT="$OUT $prefix"
++test -n "$tmp" && OUT="$OUT ${PACKAGE_PREFIX_DIR}"
+
+ tmp=$( echo "$*" | egrep -- '--\<includedir\>')
+-test -n "$tmp" && OUT="$OUT $prefix/${CMAKE_INSTALL_INCLUDEDIR}"
++test -n "$tmp" && OUT="$OUT @PACKAGE_CMAKE_INSTALL_INCLUDEDIR@"
+
+ tmp=$( echo "$*" | egrep -- '--\<libdir\>')
+-test -n "$tmp" && OUT="$OUT $prefix/${CMAKE_INSTALL_LIBDIR}"
++test -n "$tmp" && OUT="$OUT @PACKAGE_CMAKE_INSTALL_LIBDIR@"
+
+ tmp=$( echo "$*" | egrep -- '--\<cflags|cppflags|cxxflags\>')
+-test -n "$tmp" && OUT="$OUT -I$prefix/${CMAKE_INSTALL_INCLUDEDIR}"
++test -n "$tmp" && OUT="$OUT -I@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@"
+
+
+ tmp=$( echo "$*" | egrep -- '--\<static\>')
+ if test -n "$tmp"; then
+
+ tmp=$( echo "$*" | egrep -- '--\<ldflags|libs\>')
+-OUT="$OUT $prefix/${CMAKE_INSTALL_LIBDIR}/libHepMC3_static.a -lHepMC3"
++OUT="$OUT @PACKAGE_CMAKE_INSTALL_LIBDIR(a)/libHepMC3_static.a"
+
+ tmp=$( echo "$*" | egrep -- '--\<search\>')
+-test -n "$tmp" && OUT="$OUT -L$prefix/${CMAKE_INSTALL_LIBDIR}/libHepMC3search_static.a -lHepMC3search"
++test -n "$tmp" && OUT="$OUT @PACKAGE_CMAKE_INSTALL_LIBDIR(a)/libHepMC3search_static.a"
+
+ else
++
+ tmp=$( echo "$*" | egrep -- '--\<ldflags|libs\>')
+-test -n "$tmp" && OUT="$OUT -L$prefix/${CMAKE_INSTALL_LIBDIR} -lHepMC3"
++test -n "$tmp" && OUT="$OUT -L@PACKAGE_CMAKE_INSTALL_LIBDIR@ -lHepMC3"
+
+ tmp=$( echo "$*" | egrep -- '--\<search\>')
+-test -n "$tmp" && OUT="$OUT -L$prefix/${CMAKE_INSTALL_LIBDIR} -lHepMC3search"
++test -n "$tmp" && OUT="$OUT -L@PACKAGE_CMAKE_INSTALL_LIBDIR@ -lHepMC3search"
++
+ fi
+
+ tmp=$( echo "$*" | egrep -- '--\<rootIO\>')
+-test -n "$tmp" && OUT="$OUT -L$prefix/${HEPMC3_ROOTIO_INSTALL_LIBDIR} ${HEPMC3_ROOTIO_LIBRARY}"
++test -n "$tmp" && OUT="$OUT -L@PACKAGE_HEPMC3_ROOTIO_INSTALL_LIBDIR@ @HEPMC3_ROOTIO_LIBRARY@"
+
+ tmp=$( echo "$*" | egrep -- '--\<version\>')
+-test -n "$tmp" && echo ${PROJECT_VERSION}&& exit 0
++test -n "$tmp" && echo @PROJECT_VERSION@ && exit 0
+
+ echo $OUT
+diff --git a/cmake/Templates/HepMC3Config.cmake.in b/cmake/Templates/HepMC3Config.cmake.in
+index 9f690fe..df8f440 100644
+--- a/cmake/Templates/HepMC3Config.cmake.in
++++ b/cmake/Templates/HepMC3Config.cmake.in
+@@ -6,15 +6,15 @@ SET(HEPMC3_VERSION_MINOR @HEPMC3_VERSION_MINOR@)
+ SET(HEPMC3_VERSION_PATCH @HEPMC3_VERSION_PATCH@)
+
+
+-set_and_check(HEPMC3_INCLUDE_DIR @PACKAGE_INCLUDE_INSTALL_DIR@)
++set_and_check(HEPMC3_INCLUDE_DIR @PACKAGE_CMAKE_INSTALL_INCLUDEDIR@)
+
+ if(EXISTS @PACKAGE_INTERFACES_INSTALL_DIR@)
+ set(HEPMC3_INTERFACES_DIR @PACKAGE_INTERFACES_INSTALL_DIR@)
+ endif()
+
+-find_library(HEPMC3_LIB NAMES HepMC3 HINTS @PACKAGE_LIB_INSTALL_DIR@)
+-find_library(HEPMC3_SEARCH_LIB NAMES HepMC3search HINTS @PACKAGE_LIB_INSTALL_DIR@)
+-find_library(HEPMC3_ROOTIO_LIB NAMES HepMC3rootIO HINTS @PACKAGE_LIB_INSTALL_DIR@ @PACKAGE_LIB_INSTALL_DIR@/root)
++find_library(HEPMC3_LIB NAMES HepMC3 HINTS @PACKAGE_CMAKE_INSTALL_LIBDIR@)
++find_library(HEPMC3_SEARCH_LIB NAMES HepMC3search HINTS @PACKAGE_CMAKE_INSTALL_LIBDIR@)
++find_library(HEPMC3_ROOTIO_LIB NAMES HepMC3rootIO HINTS @PACKAGE_HEPMC3_ROOTIO_INSTALL_LIBDIR@)
+
+ set(HEPMC3_LIBRARIES ${HEPMC3_LIB})
+ if(EXISTS ${HEPMC3_SEARCH_LIB})
+--
+2.25.1
+
diff --git a/HepMC3-python-3.9.patch b/HepMC3-python-3.9.patch
deleted file mode 100644
index 77766e5..0000000
--- a/HepMC3-python-3.9.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From a68f8af21f79909de1a2e8318070940c197c72ab Mon Sep 17 00:00:00 2001
-From: Andrii Verbytskyi <andrii.verbytskyi(a)cern.ch>
-Date: Mon, 27 Jan 2020 10:32:49 +0000
-Subject: [PATCH] Update Support.cmake To add Python 3.9 to the list of valid
- versions.
-
----
- cmake/Modules/FindPython/Support.cmake | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/cmake/Modules/FindPython/Support.cmake b/cmake/Modules/FindPython/Support.cmake
-index 08f07fd..0191972 100644
---- a/cmake/Modules/FindPython/Support.cmake
-+++ b/cmake/Modules/FindPython/Support.cmake
-@@ -17,7 +17,7 @@ if (NOT DEFINED _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
- message (FATAL_ERROR "FindPython: INTERNAL ERROR")
- endif()
- if (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL 3)
-- set(_${_PYTHON_PREFIX}_VERSIONS 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
-+ set(_${_PYTHON_PREFIX}_VERSIONS 3.9 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
- elseif (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL 2)
- set(_${_PYTHON_PREFIX}_VERSIONS 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0)
- else()
---
-2.24.1
-
diff --git a/HepMC3-python-test.patch b/HepMC3-python-test.patch
deleted file mode 100644
index ecb88ff..0000000
--- a/HepMC3-python-test.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From c1f27814cde97869ec2dd1063405a5260e4e1193 Mon Sep 17 00:00:00 2001
-From: Mattias Ellert <mattias.ellert(a)physics.uu.se>
-Date: Mon, 2 Dec 2019 08:57:06 +0100
-Subject: [PATCH] Change import order to avoid Import Error:
-
- Start 45: python3.7.5_test_IO2
-44/46 Test #45: python3.7.5_test_IO2 ........................***Failed 10.20 sec
-Traceback (most recent call last):
- File "test_IO2.py", line 7, in <module>
- import pyHepMC3.rootIO.pyHepMC3rootIO.HepMC3 as hmrootIO
-ImportError: generic_type: type "WriterRootTree" referenced unknown base type "HepMC3::Writer"
----
- python/test/test_IO2.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/python/test/test_IO2.py b/python/test/test_IO2.py
-index 4b71276..2cb0331 100644
---- a/python/test/test_IO2.py
-+++ b/python/test/test_IO2.py
-@@ -4,8 +4,8 @@ sys.path=update_path()
-
-
- from pyHepMC3TestUtils import COMPARE_ASCII_FILES
--import pyHepMC3.rootIO.pyHepMC3rootIO.HepMC3 as hmrootIO
- import pyHepMC3.pyHepMC3.HepMC3 as hm
-+import pyHepMC3.rootIO.pyHepMC3rootIO.HepMC3 as hmrootIO
- print(dir(hmrootIO))
- def test_IO2():
- inputA=hm.ReaderAsciiHepMC2("inputIO2.hepmc")
---
-2.23.0
-
diff --git a/HepMC3.spec b/HepMC3.spec
index 77408bf..c0e67e3 100644
--- a/HepMC3.spec
+++ b/HepMC3.spec
@@ -1,25 +1,22 @@
Name: HepMC3
-Version: 3.2.0
-Release: 3%{?dist}
+Version: 3.2.1
+Release: 1%{?dist}
Summary: C++ Event Record for Monte Carlo Generators
License: GPLv3+
URL: https://hepmc.web.cern.ch/hepmc/
Source0: https://hepmc.web.cern.ch/hepmc/releases/%{name}-%{version}.tar.gz
-# Change import order to avoid Import Error
-# https://gitlab.cern.ch/hepmc/HepMC3/merge_requests/45
-Patch0: %{name}-python-test.patch
+# Improvements to HepMC3-config and HepMC3Config.cmake
+# https://gitlab.cern.ch/hepmc/HepMC3/merge_requests/55
+Patch0: %{name}-config.patch
# Reduce memory usage when building Python bindings on ARM
Patch1: %{name}-arm-memory.patch
-# Add Python 3.9 as a valid Python version
-# Backported from upstream git
-Patch2: %{name}-python-3.9.patch
-# The ROOT cmake file used by this project requires cmake 3.4.3
+# The ROOT cmake file used by this project requires cmake 3.9
%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8
-BuildRequires: cmake >= 3.4.3
+BuildRequires: cmake >= 3.9
%else
-BuildRequires: cmake3 >= 3.4.3
+BuildRequires: cmake3 >= 3.9
%endif
BuildRequires: gcc-c++
%ifnarch s390x
@@ -35,6 +32,7 @@ BuildRequires: pythia8-devel
BuildRequires: valgrind
%if %{?rhel}%{!?rhel:0} == 7
BuildRequires: python2-devel
+BuildRequires: python%{python3_other_pkgversion}-devel
%endif
BuildRequires: python%{python3_pkgversion}-devel
@@ -122,6 +120,34 @@ Requires: python2-%{name}%{?_isa} = %{version}-%{release}
%description -n python2-%{name}-rootIO
This package provides the Python 2 bindings for HepMC3 ROOT I/O module.
%endif
+
+%package -n python%{python3_other_pkgversion}-%{name}
+Summary: HepMC3 Python 3 bindings
+%{?python_provide:%python_provide python%{python3_other_pkgversion}-%{name}}
+Requires: %{name}%{?_isa} = %{version}-%{release}
+
+%description -n python%{python3_other_pkgversion}-%{name}
+This package provides the Python 3 bindings for HepMC3.
+
+%package -n python%{python3_other_pkgversion}-%{name}-search
+Summary: HepMC3 search module Python 3 bindings
+%{?python_provide:%python_provide python%{python3_other_pkgversion}-%{name}-search}
+Requires: %{name}-search%{?_isa} = %{version}-%{release}
+Requires: python%{python3_other_pkgversion}-%{name}%{?_isa} = %{version}-%{release}
+
+%description -n python%{python3_other_pkgversion}-%{name}-search
+This package provides the Python 3 bindings for HepMC3 search module.
+
+%ifnarch s390x
+%package -n python%{python3_other_pkgversion}-%{name}-rootIO
+Summary: HepMC3 ROOT I/O module Python 3 bindings
+%{?python_provide:%python_provide python%{python3_other_pkgversion}-%{name}-rootIO}
+Requires: %{name}-rootIO%{?_isa} = %{version}-%{release}
+Requires: python%{python3_other_pkgversion}-%{name}%{?_isa} = %{version}-%{release}
+
+%description -n python%{python3_other_pkgversion}-%{name}-rootIO
+This package provides the Python 3 bindings for HepMC3 ROOT I/O module.
+%endif
%endif
%package -n python%{python3_pkgversion}-%{name}
@@ -163,7 +189,6 @@ This package provides HepMC manuals and examples.
%setup -q
%patch0 -p1
%patch1 -p1
-%patch2 -p1
%build
%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8
@@ -173,33 +198,27 @@ This package provides HepMC manuals and examples.
%endif
%ifnarch s390x
-DHEPMC3_ENABLE_ROOTIO:BOOL=ON \
+ -DHEPMC3_ROOTIO_INSTALL_LIBDIR:PATH=%{_libdir}/root \
%else
-DHEPMC3_ENABLE_ROOTIO:BOOL=OFF \
%endif
-DHEPMC3_ENABLE_TEST:BOOL=ON \
-DHEPMC3_INSTALL_INTERFACES:BOOL=ON \
%if %{?rhel}%{!?rhel:0} == 7
- -DHEPMC3_PYTHON_VERSIONS=2,%python3_version \
+ -DHEPMC3_PYTHON_VERSIONS=2,%python3_version,%python3_other_version \
%else
-DHEPMC3_PYTHON_VERSIONS=%python3_version \
%endif
-DHEPMC3_BUILD_DOCS:BOOL=ON \
+ -DHEPMC3_BUILD_STATIC_LIBS:BOOL=OFF \
-DCMAKE_INSTALL_DOCDIR:PATH=%{_pkgdocdir} \
-DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON .
make %{?_smp_mflags}
%install
make install DESTDIR=%{buildroot}
-rm %{buildroot}%{_libdir}/*.a
cp -pr examples %{buildroot}%{_pkgdocdir}
-%ifnarch s390x
-# Move to root directory
-mkdir %{buildroot}%{_libdir}/root
-mv %{buildroot}%{_libdir}/libHepMC3rootIO* %{buildroot}%{_libdir}/root
-sed 's!\s*-lHepMC3rootIO!/root&!' -i %{buildroot}%{_bindir}/HepMC3-config
-%endif
-
%check
%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8
ctest %{?_smp_mflags} --output-on-failure
@@ -309,14 +328,37 @@ ctest3 %{?_smp_mflags} --output-on-failure
%dir %{python2_sitearch}/pyHepMC3/search
%{python2_sitearch}/pyHepMC3/search/__init__.py*
%{python2_sitearch}/pyHepMC3/search/pyHepMC3search.so
-%{python2_sitearch}/pyHepMC3-search-*.egg-info
+%{python2_sitearch}/pyHepMC3.search-*.egg-info
%ifnarch s390x
%files -n python2-%{name}-rootIO
%dir %{python2_sitearch}/pyHepMC3/rootIO
%{python2_sitearch}/pyHepMC3/rootIO/__init__.py*
%{python2_sitearch}/pyHepMC3/rootIO/pyHepMC3rootIO.so
-%{python2_sitearch}/pyHepMC3-rootIO-*.egg-info
+%{python2_sitearch}/pyHepMC3.rootIO-*.egg-info
+%endif
+
+%files -n python%{python3_other_pkgversion}-%{name}
+%dir %{python3_other_sitearch}/pyHepMC3
+%{python3_other_sitearch}/pyHepMC3/__init__.py
+%{python3_other_sitearch}/pyHepMC3/__pycache__
+%{python3_other_sitearch}/pyHepMC3/pyHepMC3.so
+%{python3_other_sitearch}/pyHepMC3-*.egg-info
+
+%files -n python%{python3_other_pkgversion}-%{name}-search
+%dir %{python3_other_sitearch}/pyHepMC3/search
+%{python3_other_sitearch}/pyHepMC3/search/__init__.py
+%{python3_other_sitearch}/pyHepMC3/search/__pycache__
+%{python3_other_sitearch}/pyHepMC3/search/pyHepMC3search.so
+%{python3_other_sitearch}/pyHepMC3.search-*.egg-info
+
+%ifnarch s390x
+%files -n python%{python3_other_pkgversion}-%{name}-rootIO
+%dir %{python3_other_sitearch}/pyHepMC3/rootIO
+%{python3_other_sitearch}/pyHepMC3/rootIO/__init__.py
+%{python3_other_sitearch}/pyHepMC3/rootIO/__pycache__
+%{python3_other_sitearch}/pyHepMC3/rootIO/pyHepMC3rootIO.so
+%{python3_other_sitearch}/pyHepMC3.rootIO-*.egg-info
%endif
%endif
@@ -332,7 +374,7 @@ ctest3 %{?_smp_mflags} --output-on-failure
%{python3_sitearch}/pyHepMC3/search/__init__.py
%{python3_sitearch}/pyHepMC3/search/__pycache__
%{python3_sitearch}/pyHepMC3/search/pyHepMC3search.so
-%{python3_sitearch}/pyHepMC3-search-*.egg-info
+%{python3_sitearch}/pyHepMC3.search-*.egg-info
%ifnarch s390x
%files -n python%{python3_pkgversion}-%{name}-rootIO
@@ -340,7 +382,7 @@ ctest3 %{?_smp_mflags} --output-on-failure
%{python3_sitearch}/pyHepMC3/rootIO/__init__.py
%{python3_sitearch}/pyHepMC3/rootIO/__pycache__
%{python3_sitearch}/pyHepMC3/rootIO/pyHepMC3rootIO.so
-%{python3_sitearch}/pyHepMC3-rootIO-*.egg-info
+%{python3_sitearch}/pyHepMC3.rootIO-*.egg-info
%endif
%files doc
@@ -350,6 +392,16 @@ ctest3 %{?_smp_mflags} --output-on-failure
%license COPYING
%changelog
+* Sun Mar 22 2020 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 3.2.1-1
+- Update to version 3.2.1
+- Drop patches accepted upstream or previously backported
+- Fix glitches in the generation of the HepMC3-config script
+- Add additional Python 3 version package for EPEL 7
+ (cmake configuration now supports multiple Python 3 versions)
+- Use new cmake configuration options -DHEPMC3_ROOTIO_INSTALL_LIBDIR and
+ -DHEPMC3_BUILD_STATIC_LIBS and simplify spec file accordingly
+- .egg-info filenames are now correct - auto generated provides work
+
* Tue Jan 28 2020 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 3.2.0-3
- Add Python 3.9 as a valid Python version
commit 3e286666a5ee642b1e0fe6d1baeb6848217956a8
Author: Mattias Ellert <mattias.ellert(a)physics.uu.se>
Date: Mon Feb 17 07:39:06 2020 +0100
Add Python 3.9 as a valid Python version
diff --git a/HepMC3-python-3.9.patch b/HepMC3-python-3.9.patch
new file mode 100644
index 0000000..77766e5
--- /dev/null
+++ b/HepMC3-python-3.9.patch
@@ -0,0 +1,26 @@
+From a68f8af21f79909de1a2e8318070940c197c72ab Mon Sep 17 00:00:00 2001
+From: Andrii Verbytskyi <andrii.verbytskyi(a)cern.ch>
+Date: Mon, 27 Jan 2020 10:32:49 +0000
+Subject: [PATCH] Update Support.cmake To add Python 3.9 to the list of valid
+ versions.
+
+---
+ cmake/Modules/FindPython/Support.cmake | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/cmake/Modules/FindPython/Support.cmake b/cmake/Modules/FindPython/Support.cmake
+index 08f07fd..0191972 100644
+--- a/cmake/Modules/FindPython/Support.cmake
++++ b/cmake/Modules/FindPython/Support.cmake
+@@ -17,7 +17,7 @@ if (NOT DEFINED _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
+ message (FATAL_ERROR "FindPython: INTERNAL ERROR")
+ endif()
+ if (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL 3)
+- set(_${_PYTHON_PREFIX}_VERSIONS 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
++ set(_${_PYTHON_PREFIX}_VERSIONS 3.9 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
+ elseif (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL 2)
+ set(_${_PYTHON_PREFIX}_VERSIONS 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0)
+ else()
+--
+2.24.1
+
diff --git a/HepMC3.spec b/HepMC3.spec
index c3f7ab8..77408bf 100644
--- a/HepMC3.spec
+++ b/HepMC3.spec
@@ -1,6 +1,6 @@
Name: HepMC3
Version: 3.2.0
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: C++ Event Record for Monte Carlo Generators
License: GPLv3+
@@ -11,6 +11,9 @@ Source0: https://hepmc.web.cern.ch/hepmc/releases/%{name}-%{version}.tar.gz
Patch0: %{name}-python-test.patch
# Reduce memory usage when building Python bindings on ARM
Patch1: %{name}-arm-memory.patch
+# Add Python 3.9 as a valid Python version
+# Backported from upstream git
+Patch2: %{name}-python-3.9.patch
# The ROOT cmake file used by this project requires cmake 3.4.3
%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8
@@ -160,6 +163,7 @@ This package provides HepMC manuals and examples.
%setup -q
%patch0 -p1
%patch1 -p1
+%patch2 -p1
%build
%if %{?fedora}%{!?fedora:0} || %{?rhel}%{!?rhel:0} >= 8
@@ -346,6 +350,9 @@ ctest3 %{?_smp_mflags} --output-on-failure
%license COPYING
%changelog
+* Tue Jan 28 2020 Mattias Ellert <mattias.ellert(a)physics.uu.se> - 3.2.0-3
+- Add Python 3.9 as a valid Python version
+
* Tue Jan 28 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 3.2.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
4 years, 1 month