I've been using Linux as my main OS for 11 years now, and I usually give up on things once the solution is "compile from source". It seems to work about 50% of the time, and the other 50%, it's like it wants to me to write a new compiler from scratch.
So I used the pip3 install git command, and that seems to work.
If I type
pip3 check x
it says "No broken requirements found." It's the same for whatever value I put as x, even if it's a name I made up.
Installed SDL2_gfx.git -- at least, I think I did.
I downloaded the files for portmidi manually, after failing to get the svn that everyone recommends working. Spent a lot of time failing to unzip the file by various methods before I realized I was in the wrong directory. After unzipping, I needed cmake, which I installed, but I got a CMake Error, where variables are set to NOTFOUND, and it wants me to do something about it. Then I saw the python directory, and tried running setup.py, but it's written for Python 2, so I had to download and install that, but it's still giving me an error because there's no module named Pyrex.Distutils, and apparently there's no pip for Python 2. Fantasized briefly about a linux distro where kivy is installed by default. Googled it, but didn't really expect to find it. Spent some time staring blankly at the screen. Briefly considered installing Windows on a virtual machine and trying to run kivy that way. But it's been a long time since I've used Windows, and I feel like that might be even harder.
Still getting errors with kivy:
[INFO ] Logger: Record log in /home/tc/.kivy/logs/kivy_20-09-15_6.txt
[INFO ] Kivy: v2.0.0rc3, git-55d20aa, 20200914
[INFO ] Kivy: Installed at "/usr/local/lib/python3.6/site-packages/kivy/__init__.py"
[INFO ] Python: v3.6.4 (default, Mar 9 2018, 12:22:02)
[GCC 7.2.0]
[INFO ] Python: Interpreter at "/usr/local/bin/python3.6"
[INFO ] Factory: 186 symbols loaded
[DEBUG ] Cache: register <kv.lang> with limit=None, timeout=None
[DEBUG ] Cache: register <kv.image> with limit=None, timeout=60
[DEBUG ] Cache: register <kv.atlas> with limit=None, timeout=None
[INFO ] Image: Providers: img_tex, img_dds (img_sdl2, img_pil, img_ffpyplayer ignored)
[DEBUG ] Cache: register <kv.texture> with limit=1000, timeout=60
[DEBUG ] Cache: register <kv.shader> with limit=1000, timeout=3600
[DEBUG ] Text: Provider <pango> ignored by config
[INFO ] Text: Provider: sdl2(['text_pango'] ignored)
[INFO ] Window: Provider: sdl2
[INFO ] GL: Using the "OpenGL" graphics system
[INFO ] GL: Backend used <sdl2>
[INFO ] GL: OpenGL version <b'3.1 Mesa 19.2.3'>
[INFO ] GL: OpenGL vendor <b'VMware, Inc.'>
[INFO ] GL: OpenGL renderer <b'llvmpipe (LLVM 8.0, 128 bits)'>
[INFO ] GL: OpenGL parsed version: 3, 1
[INFO ] GL: Shading version <b'1.40'>
[INFO ] GL: Texture max size <8192>
[INFO ] GL: Texture max units <32>
[DEBUG ] Shader: Fragment compiled successfully
[DEBUG ] Shader: Vertex compiled successfully
[DEBUG ] Window: Ignored <x11> (import error)
[CRITICAL] Window: Unable to find any valuable Window provider. Please enable debug logging (e.g. add -d if running from the command line, or change the log level in the config) and re-run your app to identify potential causes
sdl2 - Exception: Unknown <png> type, no loader found.
File "/usr/local/lib/python3.6/site-packages/kivy/core/__init__.py", line 70, in core_select_lib
cls = cls()
File "/usr/local/lib/python3.6/site-packages/kivy/core/window/window_sdl2.py", line 152, in __init__
super(WindowSDL, self).__init__()
File "/usr/local/lib/python3.6/site-packages/kivy/core/window/__init__.py", line 982, in __init__
self.create_window()
File "/usr/local/lib/python3.6/site-packages/kivy/core/window/window_sdl2.py", line 312, in create_window
super(WindowSDL, self).create_window()
File "/usr/local/lib/python3.6/site-packages/kivy/core/window/__init__.py", line 1268, in create_window
self.render_context = RenderContext()
File "kivy/graphics/instructions.pyx", line 783, in kivy.graphics.instructions.RenderContext.__init__
File "/usr/local/lib/python3.6/site-packages/kivy/core/image/__init__.py", line 561, in __init__
self.filename = arg
File "/usr/local/lib/python3.6/site-packages/kivy/core/image/__init__.py", line 756, in _set_filename
mipmap=self._mipmap, nocache=self._nocache)
File "/usr/local/lib/python3.6/site-packages/kivy/core/image/__init__.py", line 463, in load
raise Exception('Unknown <%s> type, no loader found.' % ext)
x11 - ModuleNotFoundError: No module named 'kivy.core.window.window_x11'
File "/usr/local/lib/python3.6/site-packages/kivy/core/__init__.py", line 62, in core_select_lib
fromlist=[modulename], level=0)
[DEBUG ] Cache: register <textinput.label> with limit=None, timeout=60.0
[DEBUG ] Cache: register <textinput.width> with limit=None, timeout=60.0
[DEBUG ] App: Loading kv <./epic.kv>
[DEBUG ] App: kv <./epic.kv> not found
[CRITICAL] App: Unable to get a Window, abort.