Registrarse

[Decomp-GBA] Instalación de Porymap para Ubuntu/WSL2

Juanjo

Hacker del pasado... Compilador del presente
Miembro insignia
  • Este tutorial está enfocado para usuarios de la WSL2 que hayan seguido mi tutorial en https://whackahack.com/foro/threads/configura-la-wsl2-y-rompe-las-posibilidades-del-decomp-desde-0.67138/ y quieran tener un Porymap muchísimo más rápido. (Cuando lo ejecutamos desde windows y queremos abrir archivos que están en el WSL2 tarda bastante, lo que disminuye la experiencia de usuario).

  • También está enfocado para usuarios de Linux que quieran instalar el Porymap de forma nativa y tengan problemas con el Qt 5.14.2 , el cual ya no está para Ubuntu 21.04.

INSTALACIÓN DEL PORYMAP EN UBUNTU Y EL WSL2

En la documentación de Porymap (https://github.com/huderlem/porymap/blob/master/INSTALL.md) los pasos para Ubuntu no son muy claros y asumen que puedes instalar el Qt5

Bash:
sudo apt-get install qt5-default qtdeclarative5-dev
Sin embargo, dicha línea me arrojó el siguiente error:

Package 'qt5-default' has no installation candidate

Gracias a este post entiendo que han removido el paquete qt5-default de Ubuntu 21.04 (el mismo de mi WSL).
Dado que lo que queremos es simplemente instalar un paquete de terceros (Porymap) que requiere el paquete qt5-default en Ubuntu 21.04 (o más reciente), entonces simplemente vamos a un paquete falso usando los comandos siguientes:

Bash:
sudo apt-get update
sudo apt-get install equivs
Vamos a la carpeta de descargas
Bash:
cd ~/Downloads
cat <<EOF > qt5-default-control
Package: qt5-default
Source: qtbase-opensource-src
Version: 5.99.99+fake-13ubuntu37
Architecture: all
Depends: qtbase5-dev, qtchooser
Suggests: qt5-qmake, qtbase5-dev-tools
Conflicts: qt4-default
Section: libdevel
Priority: optional
Homepage: http://qt-project.org/
Description: Qt 5 development defaults fake package
EOF

equivs-build qt5-default-control
sudo apt-get install ./qt5-default_5.99.99+fake-13ubuntu37_all.deb
¡Ahora podemos continuar con la instalación del Porymap!

Ve a alguna carpeta donde quieras instalar Porymap (como hack/tools) y clona el repositorio

Bash:
git clone https://github.com/huderlem/porymap.git

Bash:
sudo apt-get install qt5-default qtdeclarative5-dev
qmake
make
./porymap
En Ubuntu debería abrirte la una ventana con Porymap y cargar tus proyectos de forma nativa!


Puedes configurar las preferencias para que te abra los archivos de script directmante en el VSCode de tu proyectos
1667672162284.png

code -r --goto %F:%L

En WSL2, si usas Windows 11 en teoría debería abrirse la ventana sin ningún problemas (Además que tiene un loguito de Linux muy bello)
1667671490457.png


Con esto deberías ser capaces de cargar tus proyectos en menos de dos segundos (vs los minutos que tardaría abriendolo directamante en Windows)

Si no estás en Windows 11 y al ejecutar Porymap te genera errores de aplicación gráfica de la WSL, te recomiendo que sigas mi anterior tutorial https://whackahack.com/foro/threads/win10-usar-aplicaciones-graficas-desde-wsl.67148/

Recuerda, siempre que quieras ejecutar Porymap simplemente ejecuta en la terminal

Bash:
./path/to/porymap/porymap
Bonus track:

Ejecuta Porymap directamente desde VSCode!

Para hacer esto ve a el `task.json` que se encuentra dentro de la carpeta /.vscode de tu proyecto y añade la task así

JSON:
        {
            "label": "Porymap",
            "type": "shell",
            "command": "~/path/to/porymap/porymap",
            "args": [],
            "problemMatcher": []
        },
No olvides reemplazar el path a la verdadera ubicación de porymap (Hay un porymap dentro de la carpeta porymap, recuerda).

Si no tienes un task.json te dejo el mío para que mires un ejemplo
JSON:
// task.json
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "make",
            "args": [
                "DINFO=1",
                "modern",
                "-j$(nproc)"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": [
                "$gcc"
            ]
        },
        {
            "label": "run GBA project",
            "type": "shell",
            "command": "${workspaceFolder}/run.sh",
            "args": [],
            "problemMatcher": []
        },
        {
            "label": "Porymap",
            "type": "shell",
            "command": "~/hack/decomp/tools/porymap/porymap",
            "args": [],
            "problemMatcher": []
        },
        {
            "label": "Compile and run",
            "type": "shell",
            "command": "make -j$(nproc) && ./run.sh",
            "args": [],
            "problemMatcher": []
        }
    ]
}
Adicionalmente tengo un script llamado run.sh en el root del proyecto

Bash:
#!/bin/bash
/mnt/c/Program\ Files/mGBA/mGBA.exe pkm_apocalipsis.gba
Dejo esto como ejemplos nada más!

Para ejecutar la tarea simplemente presiona F1 en VSCode y escribe "Tasks: Run Task", te debería aparecer la opción de ejecutar Porymap

1667672877905.png


Así ahorrarás tiempo abriendo directamente Porymap desde Visual Studio Code. (Como verás, también tengo tareas para compilar, compilar y correr el juego y correr el juego, lo cual ahorra muchísimo tiempo!


Saludos!!
 

Lunos

Enfrentando a La Organización
Miembro insignia
Dado que lo que queremos es simplemente instalar un paquete de terceros (Porymap) que requiere el paquete qt5-default en Ubuntu 21.04 (o más reciente), entonces simplemente vamos a un paquete falso usando los comandos siguientes:

Bash:
sudo apt-get update
sudo apt-get install equivs
Vamos a la carpeta de descargas
Bash:
cd ~/Downloads
cat <<EOF > qt5-default-control
Package: qt5-default
Source: qtbase-opensource-src
Version: 5.99.99+fake-13ubuntu37
Architecture: all
Depends: qtbase5-dev, qtchooser
Suggests: qt5-qmake, qtbase5-dev-tools
Conflicts: qt4-default
Section: libdevel
Priority: optional
Homepage: http://qt-project.org/
Description: Qt 5 development defaults fake package
EOF

equivs-build qt5-default-control
sudo apt-get install ./qt5-default_5.99.99+fake-13ubuntu37_all.deb
¡Ahora podemos continuar con la instalación del Porymap!
Muy interesante el truco, y luce extremadamente util tambien 👀
Tengo una duda, pero. Ahora mismo Porymap utiliza Qt6. ¿Has probado si esto funciona hoy en dia?
Yo lo he probado en mi instalación de Ubuntu 20.04 en WSL2, pero hay errorsitos guapos al intentar compilar Porymap.

EDITO: Probé de nuevo tras un sudo apt remove qt5-default y un sudo apt autoremove, pero nada.
Dejo un log con los errores por si sirve de algo.
 

Adjuntos

Última edición:

Juanjo

Hacker del pasado... Compilador del presente
Miembro insignia
Muy interesante el truco, y luce extremadamente util tambien 👀
Tengo una duda, pero. Ahora mismo Porymap utiliza Qt6. ¿Has probado si esto funciona hoy en dia?
Yo lo he probado en mi instalación de Ubuntu 20.04 en WSL2, pero hay errorsitos guapos al intentar compilar Porymap.

EDITO: Probé de nuevo tras un sudo apt remove qt5-default y un sudo apt autoremove, pero nada.
Dejo un log con los errores por si sirve de algo.
Hola Lunos, pues yo lo he hecho para la última versión de Porymap. El README e INSTALL no son muy claros para su instalación en Ubuntu pero por lo que entiendo el Qt 5.14 es la mínima versión que soportan.

Yo lo hice en un WSL2 limpio de Ubuntu 22.04 en Windows 11.

Si estás en Ubuntu 20.04 en teoría te debería servir la línea:
Bash:
sudo apt-get install qt5-default qtdeclarative5-dev
Si el Porymap te da problemas de compilación, podría ser que la versión por default del Qt en esa versión de Ubuntu es menor a Qt 5.14 así que deberías intentar revisar la versión.
Bash:
qmake -v
y si no te sirve, tendrías que hacer una instalación manual del Qt (como hice yo en su momento) la cual fue bastante tediosa y aún tengo en mi otro PC. Podría intentar recordar los pasos de como lo hice y actualizar el tutorial.

Siempre puedes intentar (aunque esto es más para 21.04+, no en tu caso)
sudo apt-get install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools
 
Última edición:

Lunos

Enfrentando a La Organización
Miembro insignia
Si estás en Ubuntu 20.04 en teoría te debería servir la línea:
Código:
sudo apt-get install qt5-default qtdeclarative5-dev
Sí, pero no. Sirve, pero no te instala Qt 5.14, si no que te instala la v5.12, que desafortunadamente pa'esto no sirve.
sudo apt-get install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools
Lo mismo, solo parece estar Qt v5.12 :/
Código:
lunos:~$  sudo apt-get install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools
[sudo] password for lunos:
Reading package lists... Done
Building dependency tree
Reading state information... Done
qtchooser is already the newest version (66-2build1).
qtchooser set to manually installed.
qt5-qmake is already the newest version (5.12.8+dfsg-0ubuntu2.1).
qt5-qmake set to manually installed.
qtbase5-dev is already the newest version (5.12.8+dfsg-0ubuntu2.1).
qtbase5-dev set to manually installed.
qtbase5-dev-tools is already the newest version (5.12.8+dfsg-0ubuntu2.1).
qtbase5-dev-tools set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
lunos:~$
Oh bueno, tocará revisar si puedo actualizar la versión de Ubuntu que tengo instalada.
¡Gracias de todas formas!

EDITO: Pues comentando. Acabé encontrando rapidamente la forma de actualizar mi versión de Ubuntu.
Es cuestion de hacer un sudo apt update && sudo apt upgrade y despues un sudo do-release-upgrade, bastante sencillo el asunto.
Cuando finalizó el proceso y comprobé que se instaló todo bien mediante lsb_release -a, noté que ya tenia Qt 5.14 instalado.
No sé si fue debido a mis previos intentos de instalar Qt o si ahora viene instalado por defecto, pero pude compilar Porymap normalmente (y)
wsl_20221106_091047748.png

Desafortunadamente (y este es un resultado que esperaba) creo que no es posible abrir programas con GUIs en Windows 10 via WSL.
Esto normalmente lo maneja WSLg que es exclusivo de Windows 11 (como siempre, Microsoft adora poner barreras artificiales para forzar a la gente a usar las nuevas versiones de Windows) por lo que tengo entendido, asi que por desgracia, este proceso es bastante inutil en Windows 10.
Pero bueno, siempre tuve curiosidad morbosa por compilar Porymap aunque supiese que no lo iba a poder usar así :p
 
Última edición:

Juanjo

Hacker del pasado... Compilador del presente
Miembro insignia
Desafortunadamente (y este es un resultado que esperaba) creo que no es posible abrir programas con GUIs en Windows 10 via WSL.
Esto normalmente lo maneja WSLg que es exclusivo de Windows 11 (como siempre, Microsoft adora poner barreras artificiales para forzar a la gente a usar las nuevas versiones de Windows) por lo que tengo entendido, asi que por desgracia, este proceso es bastante inutil en Windows 10.
Pero bueno, siempre tuve curiosidad morbosa por compilar Porymap aunque supiese que no lo iba a poder usar así :p
Me alegra que te haya funcionado.

Para ejecutar aplicaciones gráficas vía WSL en Win10 sigue este tutorial:

En mi viejo PC de Windows 10 siempre pude ejecutar Porymap de forma nativa!
 
Arriba