Hola amigos.
En otro tema estaban comentando sobre el inconveniente que se presenta con las dependencias de los programas cuando estos corren desde el IDE.
Bien, les propongo un poco de código que, espero, resuelva el problema para las distribuciones que gambas hace paquetes.
Aclaraciones
![[Imagen: LbnKj5Y.png]](https://i.imgur.com/LbnKj5Y.png)
![[Imagen: vz9H6ln.png]](https://i.imgur.com/vz9H6ln.png)
Saludos.
La siguiente función sera necesaria sPakages = System.Packages()
Saludos.
En otro tema estaban comentando sobre el inconveniente que se presenta con las dependencias de los programas cuando estos corren desde el IDE.
Bien, les propongo un poco de código que, espero, resuelva el problema para las distribuciones que gambas hace paquetes.
Aclaraciones
- La forma correcta de indicar las dependencias en en el momento de crear un paquete. Existe la opcion "Mismas dependencias para todos los paquetes" es decir si marcamos Archlinux y Ubuntu, se crearan paquetes para ambas distros y en ellos se especificaran las mismas dependencias pero no lo recomiendo porque en cada distro los paquetes pueden tener nombres diferentes o estar agrupados de otra manera o no existir.
- El código que les comparto trabaja en Manjaro y Archlinux, espero que para Ubuntu, derivados y otras distros también lo haga, en caso que no funcione, ya saben pasen el feedback.
- Ya saben que al crear paquetes hay distros para las que, desde el IDE, no podrán crearlos, como en mi caso, que uso Manjaro y no está habilitado el checkbox para ubuntu ni para debian.
- El código de abajo trabaja con el archivo .project que contiene la información sobre las dependencias, pero solo si crearon al menos una vez un paquete, de lo contrario no tiene esa información.
![[Imagen: LbnKj5Y.png]](https://i.imgur.com/LbnKj5Y.png)
![[Imagen: vz9H6ln.png]](https://i.imgur.com/vz9H6ln.png)
GAMBAS
-
-
- cData = Code.ProjInfo(".project")
- aInstall.Clear
- aMissing.Clear
-
-
-
- ' For Each sDep In cData["ExtraDependencies"]
- ' If InStr(sDep, Chr(42) & ":") > 0 Then
- ' sTmp = Replace(sDep, Chr(42) & ":", "")
- ' sTmp = Replace(sTmp, "\\n", ":")
- ' aDepGen = Split(sTmp, ":")
- ' Break
- ' Endif
- ' Next
-
- aDep.Add(sDep)
-
- aDep.Add(sDep)
-
-
- sExist = ""
- sCheck = ""
-
- '¿Exist?
- Select sDistro
-
- Case "fedora"
-
-
-
- Case "gentoo"
-
- Message.Info(("Your system is not listed") & gb.NewLine & ("Please contact the developper to imform it"))
-
-
- '¿Is installed?
- Select sDistro
-
-
-
-
- Case "gentoo"
-
-
- ' The package exist in ditro but is not installed
- aInstall.Add(sPkg)
- ' The package is missing in the ditro
- aMissing.Add(sPkg)
-
- gb.NewLine &
- ("You must install these dependencies manually") &
- ":" & gb.NewLine & aInstall.Join("\n"))
-
- gb.NewLine &
- ("Please contact to developper") & "." &
- ":" & gb.NewLine & aMissing.Join("\n"))
-
- Return aInstall.Count
-
Saludos.
La siguiente función sera necesaria sPakages = System.Packages()
GAMBAS
- '' Shows the packages system according in tha Gambas way. (archlinux, debian, fedora, mageia, slackware, suse, ubuntu )
-
-
- oPkg.Add("fedora", "redhat-release") 'Redhat
- oPkg.Add("fedora", "fedora-release")
- oPkg.Add("mageia", "mageia-release")
- oPkg.Add("slackware", "slackware-release")
- oPkg.Add("archlinux", "arch-release") 'Arch *
- oPkg.Add("archlinux", "manjaro-release") 'Manjaro
- 'oPkg.Add("emerge", "gentoo-release") 'Gentoo
- oPkg.Add("suse", "SuSE-release") 'Susse
- oPkg.Add("deian", "debian_version") 'Debian *
- oPkg.Add("ubuntu", "os-release") 'Ubuntu ¿Esta correcto así?
- 'fedora ??
- '
- sBase = ""
- sPkg = sBase
-
- Return sBase
-
Saludos.
1 Saludo.