From 468394d03ce7aebc61a696d93354f829573c6166 Mon Sep 17 00:00:00 2001 From: Toyam Cox Date: Wed, 21 Aug 2019 22:43:29 -0400 Subject: [PATCH] feat: VoidLinux support --- cmd/cmd-mewn.go | 2 +- cmd/linux.go | 15 +++++++++++++++ cmd/linuxdb.yaml | 21 ++++++++++++++++++++- cmd/system.go | 2 ++ 4 files changed, 38 insertions(+), 2 deletions(-) diff --git a/cmd/cmd-mewn.go b/cmd/cmd-mewn.go index 9d4c2a103..5dbf71df5 100644 --- a/cmd/cmd-mewn.go +++ b/cmd/cmd-mewn.go @@ -7,5 +7,5 @@ import "github.com/leaanthony/mewn" func init() { mewn.AddAsset(".", "../runtime/assets/bridge.js", "1f8b08000000000000ffac597b73e2ba92ff1b3e85eedc3a05392498f7f3cca93586109200e19507776f6585ddd8025b3696c0c04cbefb966c032693ccccdd5a66482ca9d5ddfaa99f8ef4671cbda2e0f31a3ebc864ff1efe8bb3f2121e9f5f515bd265f2ffca7577f45fa2e1604edff48e1d3ab245624f15fec09a69382db058a7f7f7d95c4f7bf5f5f2f5f25ff9fd881507c6c0032896e700fc44f3477b1059eed2ed1dc769107b32b932c0161c761f1a47a81ee01239972c3a63b94cb64ab578e0b0c288fff29c5a53fd182198472046c032e2336ada112fa538ac7e76baa7262534428e1c90bf42d1e9324d47089a603b2670b50793ce611aad95edac3c464b360e9aba08cb9a0da9482cafb1b704dbcab21ba36cdcbe8ca9858e0d6503e9311d31e9b0cef6b28e1b19a2499b68a4dc366bc962f64b34529609d1074e16662d311c71c4e7c559bce895e43dfde7c763063b6ba041e21c0a639c3eaf2346307badd8cbbf7b5782c164bfca5910d524dccd8d72ffe99ae8eda5e85c45ffefe0da22bd5a61c28ff3d624eb8095ffe7e12cb21c07f491ad9fcfdd7ccfd2d06a68d354275e6104ac1fdf2f7bbdd44fb7cab058c613d90ce09d57d1b122801d54236919f89086aca68148096fe84f737c766445c546d4eb6a0d5b9edd4327513e6bc96a97b44e3462d9bc9fc51377c330e9e8564ddb5d754abb9fa0c273397e25fba74519fdb945fcdb145cc5d8d61caae18b8645ed708738479519b427d7f45a806db5ad5ffbc7da6d8e176be395813b8d57219678bf219675be7b0e557d8243aada94039b8a1a2b90c58f5e3795c3031271b38aa5e00ab3eb35d0ddc2b176b64cd6a59b0ea167675426bc53f105e731b6522a7bb526dd3766bff9ccfe7f599bdbd6206d66caf9675b6487c03859c6d7407b1b00eb5b56b2635cc71cd1f4a0ed5eb33cca054b8248f8dfed0cbdcb5755b9665b9379a18ad892ecbb25211e3b52277c5e0c199c96531b1ba6e741f5b13f93ffcb41af2e0a3e7c3587c9bb2d7158f62eef0fbf0898e1559ef88ef7b9a8fe805dd7faaeb7563f074a72c4a0120f9e1686c76e57bd259358d65bb2133ef76f190696f1f4abd61e1a92aedf962d8ec1a4f9362a65dd58b70f3bc994dabcfad4e753b1dababa999c3a67667178b03cf5636d389be37046356bd1db6ae27a32ef44c80a7d5429e18934c43c137f90e275e757f37aee653fb762637b8cb1a9654bcb94e2df6d3dbd27c002575f7dc4a2df4ea73d9ae7adbf5ceec74e685f126f7984fcdfa6eeb99ce2b9a3790ee069d76b3979346a942df7a541e9fefa591daa07332db4e86ab4e63f72019fd5eabe256c6a959b36b0eaa95bb91597ea918fb8533aa6cb22bde342aebe2bc723770dace9c3e3c18ab76e5166cbd972fdfacaa807bb9edd0e878326ed38dc72ad7d991b15ddd15ed598e7b2f247b2d779b05f799bd70aa48b72d329c990575e22a4f06ed2af7c36bb09e61ff3c9b15ab83bbc2933cea33ab44734fd95441698c73b716df0f4a73e6cedaebd950ea5dcfb49c5e7cc996aba9a227b55b37f88edd2c5e14e06545779f2779bec56e4f29bf6cfb8fb7bcb32848ade1beab4de77b359f359c54456d96a0ddb9d7b13b7da9aea7d99c21b34c7e336f34ab4ab69cd547c5beb52ff7d5cd56be1f7468615d190e1b8d86ca48f5e929e7d9fd2a71eef5f9de7931755dcf4f87dab03f512a77e3f2e07eb5ca3f55ef1ac5c64cbb7ed40bd55c75a9794e29b5c253da55945e435ba47abb5ef6a952290e77927c9f6f16e4c18c3d3e16a8ad90aea454f2cbddcbaa9279369bf2cb80bbd8ec93e6de1eca37a6cd9fccca2ac7179b17b3afab7a56ae2c5ab233c52925531a3734799f1b6c32de3a9bed48fb697f773b28b5bc36ec730fb959e5a13370b386e75179cae4ad271726f24b7ff73cd976a5ad53e237322db427d643bb5b1de62af6e356573220ed07b7b79d527367eca659b7bcde0f0786a33e95b7e5cd183f8df677a3760983532e2f5d7bdc32f3934a763d7ac49331d75b9dde5ca980b34d0d0ad7d591e39837ed4aa1b52c5985a1bcaa4ae3fb65bfe16e77b0d6b4a971b369779cecf3f3fc7a979fe637dcebcdccbb3669d2d46daa9adb789edcb8d18d45f986eecd51f6a6b86c14aaf274a3b5956b9d341e56a5ea6afefce0e677a9d48e98d7997eaf30acc0b0cc1c99dd3bd36ab1b7929f8a1ccfb26a61b39c5a256c025ea846d77b196b9dfbc160ecb572fdc742363bed569ff6bcb9785899d99c8a1ba4a4379dc99dd5d40a93ec734f1b6ca785fbcef3a0288dddc243b953e52feab5dbbccb0751ccbc1e2f47eb81a52817d100ec820398d7a81d3e45d78ea921c81a9fa71e3fd77ff39319237ba8e5c0fa9c384cce11f26c3affb30de785c037c726429b2bd800e52cc891613e4b17c13aa4af6010e4af5aba001662b64934c45d4c99835da0fc90ddc2b4956f95ca2d05fd1300fc1fef925f31f3471d5362611f92885228cb9049286017113a1785251cb2a44891f56342161abdfdd712767e71cb5084c73751287cf3759bdbae55736d510726f3a58c06fac5db9b5fa398b65e43c70a361902e917b13151c6023309e5571a617866c21515695f282696559b32db84b469eb49318e25fe50918f380a4bdc3f54944029147245299440bed4582c112960d03f31ce6432993a0a50437eb647e750892c8f32e157647c74c04014027574ba7a9449975db03e1494c954abbf12140a3808fcb52021e7a21e8fc5dee2b1b77afc2d1e9724246bd8e1a0a1b96b5ba2d7d810f0d015e206a64b86f60c5c1dfe11ed1d449fa08c464995311ffe0d76119860a1af48b3d5b50594a755173087960962944c30be332121440bc234032e73ee92d99a4332c1770e242e5142546a92ca984f47e62819d08aad2303800777fd6e32ad3236862d475f91ca583d1e7b436032389162c701aa290631b5e43bf5c4be9ead817f1221f42d388c01588b1ec61f7fff7e9ad0818747638ddd18eb3d6c413221c81217ffcafcbb1e8f89e733d142978b03e48a2f9e218ca8ad012214710350d3b64e30071afada05fe7ae9630c948f770e5c22a25d063d84907d89c2faf7781fdae797116173009a6801b65a9a888d440bb0104b4719078ae38440fcf01ca18f2822f889a825ba31411d2c05b4c1a1ce6f47a8e3025fbb146907a846c0195a3b3e40614c3c81c480af9db01d4d1ecf3eb3b55df4f8625c0f967c9f0ffa3101ad50ea84b3a0bb44098d6c84350601396c538566eff69e1dedc7a6391de944eb71bfd1eef89e133d095246a378ece4519fb35146a3a3f58c38760336d1fe32828a580f268f4dfe4820750662ec1c3ca1e307e28f4d37faeaf7d8f50fa9a2edff4f09dfbf43885ed36a0dee6e0426a8dc764598feb40d4dc4fd28f6b922875709e8abb84e16ce8296086f6264d81e3b47e3849e617bc3776a0630fece8182c8940e7b58217f66daea32e11bbd2ffb8668f0996c8368f0ff295b940711d1e19b1ed872702936d3846eec251c813ccc87ef7b82d5b39ccbf430dffecc52d20ca8e6d39e328d2f5ed63411f298ea1287236e1f825eda5f1d82656f8021c211992326cea621078b6281838b0843dc5d433a8216d6b491cf2b19b0bc44aecf23d051b83bfb594af2f7f89e1d633fcb480bbcc1e7c4625a098219fa1a9e47ac9c258cb3d0c67cff3a1d13f9559cc03aac3858907e7d44fa5d81fe1c25a3c789b1741032fdd813ac9c780738870686a9660a20a96a5b84eae8e4c327f76051abf33728c1dae7e6268aa784727025717fe14ba500968f6d57aca82660b7230ebcc1e647312e1a3efc1d3f352f9baaa6cd846f078a378f0efe1b5b0f05de617337187fb2f38370128d25ef113f017d0a3a3f027dd2f717583723912b308f33c07f2f5affdfa2642cf67118ac9f5ed7262f4e008cdd9db08770e5e0daa1b60836e0ee503e93b1184a6a30c76b93a30d36d77011b8be6260aa03e20661c1fca122b230a128fa263a78491d0d02bf84f25d6e62c08fa6788a6ca18f09a7fb39ac01ae21f92faf003cf404b3913ffe90319b0cef7d507f69b8b603f468b5cac9de7fb9115cd716073f1df61051623148336e3b1dcb028d600e0faeed60dd6ff192a15621c9c72b8eebb7a1cde04a8f0bbf6998b1d8a1d89b63934130f5e6ff7a1301edf2a3aaeafc4f0d07137ce761a1539ff788220189f4135a920788e8d476012d18c25413dd43d8db04e131c63cc255e3d869a635ccf1bf32ff3e720b8a2f93cc5ceceed055b8f91ffe9f2518a08497f05fa69fb25494519a99448564f622480c825fcff6c29ed45d534e2c10394f74c9a05d860b73dbf5fdc205aced900f7eb8d93f41f8d79083fff9de831de77dc24eb7fc9707e93e4d06556e2d9092b8443f78c4a7c12938fd502892082ffe13ef39a875b4bacf58f66c4ee63b91b1b0e39844f5cd2df113ab3a703e931ad2bff976140c3e1378ef1f3bbcc861007a286fe6025ed68f37c3c93cd4871def97fed6fd5efa65cb074c1b848a5efdc86e16b0f31b9860097d451fb20c3988237c09b9d4d017943aecbbf8e1c25fd33df042d2e481ea4795146c9a7ed43e2aa59e943a80ddc41cff54b3779295c3254519bc131e2685da0fdbef6d3ddd12012c9998d025b53d7a7c45236a34e4820a64035a2dfaf6e6e8a9e77551d036cd767e852fe08dd4e0e9743afe69caf377a7d369e1639873b082ea35248c4713e25bfc5d1b968c5affa1133bf4b3812d8a0690f0a3a011de80bf7ad8f971a373f0f5af47ba7af498614f183beb05cff5eb08a967cef94e639fdcb2b5b50969d83ab6cb453dfdcddf88deeaff1b0000ffff2d8ed2993a1f0000") mewn.AddAsset(".", "../runtime/js/runtime/init.js", "1f8b08000000000000ff544c4d4b0331103d3bbfe21d7783dda807418ba047c1a3e04518d3edd48dcd264b92ba4ab7ff5db26d0f2633c3e37d6945601c1f9f009f104d986642433333b8e27a463c2b7a2a42f17ee813625d145da6648e7455da6ad0c4accbbe335fb29e7f4900f4da099cfdecf228e562134d2f63885b6c42c428ab85b35b81198644555be3450c9e7cee82ffc5cdd5f5dd628892c467529ab4c257eaaccf90f42d31d9e0ef710ba589b4520485676fb335ce2649c89de0cd589710773edb5e08b3e77130d1f4d86f76becd36f8035ae3dccab45b2a55677aeeaace528d3d5d8cd6afc3d88ca5b4e1e6bf614907a23eac774e1af91942cc090f25556c7458fe050000ffffb89259798e010000") - mewn.AddAsset(".", "./linuxdb.yaml", "1f8b08000000000000ffec564d6fd43010bdf757cc69915a790b0ba7dc10082e95a85471e1421d67d66be28fe08fb68bf8f1289b34ce924d936e5d5548f4d4b133eff979de789610725208e7adc8831746bbec04a0c05c505dff07208aac8d77a14589d4a16b36eb4fd734487f1f0268aa30838f31a3febb41eb84d1d9fde7dd0667acdd634629aa8b0c169cb122a8aa5d07d20bbabcca1a6ea972192c9ac3b5c0f7ebdd8700a43d1267acb70ab041596570b99303423b4fa5845be13770ed426180569e70f4dd561e842c083a87da0b2aaf81ea02bcdd02e554e8038455c909337a2df8937823cc34a5aed45c2e16ac04e22e60e37de5b2f3f302f3a536053a132cc32533eadca10fd5f737abe51dfc86dde172ea364060b1808367255ba8217eb8b1a34a915b6a050e0ad76d1c502545ce7d49de92026f9e74957da0e9cb9422bfc5bc147e5527bd5bbe4ec13f441c1e24e441fb10dbaf89e7b5df68a7359abe46a889f65b0729f75ab0b770a00d4f1f6ec35edd4f47eb5e516b8d8fba9b3889eecb0835a2fb74ffd9792689bf8c15bd8775172611f8ad437a517d52e870a784ee55b15b4aa2f3620fed45b532d4deb828b48993a8fc80da7fb97a92c40413701b54b7cc1923ecec0c142df1d9465f9fb02a798d409e69fc0df8e6cead43f7eacbdd484179fcf57610d32a9b119280f46fa021f51a0b6369b4781327b1f8a7083561f10707cf7f9b8ff0fdfb0e5f25b3f8ea21726ad9263abc8e92f8fbbd659b665a1df78ca3c59f4138e1fb15e9d7e364fe8d549429aa815ced12c7ee7f78fb4751c4f429a2fd467d8408c6a6a0dbb63a0abecd9da2d8efc2f9f0ba5243685eff7630d1864d9cc4889f235472139e658fb1212ab41cdbbc792e248f7361cb107313583038a1396c4db0e0b6cea37ae5ea6a96942328aa29477bc87ec3c1900c7d86f366c0fe090000ffff2573d6e0fa110000") + mewn.AddAsset(".", "./linuxdb.yaml", "1f8b08000000000000ffec564d6fdb3810bde757ccc90bc4a0b3ebec49b7c516ed25400304eda19786a2c6346b7ea8fc48e2a23fbe90a588726447b24d2328509f3ca4e63dbee11b8d0821178570de8a3c7861b4cb2e000acc05d5d53f0051644dbc092d4aa40e5dbd593dbaa041fae71040538519bc8b19d5ef01ad134667cf8fb71b9cb1668f19a5a82e329870c68aa0ca661d482768f34a6bb8a5ca6530a90fd7003fafb70f0290e6489cb1ce2ac0126599c1ed460e08ed3c95121e855fc2bd0b85015a7ac2d1b75b7910b220e81c6a2fa8bc07aa0bf0760d9453a17710962b4e98d10bc14fe28d30c394ba5463b958b01288bb81a5f7a5cbaeae0acc67da14e84cb00c67cca82b873e945fff99cf9ee0276c0e9753b704029309ec3c2b594305f1cded3baa14b9a55660efe2da8d1daaa4c8b95f916b52e0c349a5ec020d17538afc11f395f0f32ae9dfd9df29f8fb88fd83843c681f62fbd5f1b8f6dbdb69b5a64f116aa0fd1641caad16ec2cec68c3cbd7dbb073ef977befbda4d61a1f75d77112ddb7116a8feecbedd7ce9924fe3056745eac9b3089c02f2dd29bea934287272574e716dba5243a6fb6d0de54eb83114594594549147e36a2d8a83c49e16903f0292f1d69071f7558bda8f02c336f8bea4cb36e8b63ec80da5541bf9a5ed7a5388aba933facaf33298e677c09d2a765a8bd71d1c7759cc4c9ffa3f61fefded0c69b21bc0eaa5de68c11369d82a22b3cdb075c97b05cf10a819cc9d83dbed3cc7da0b7fbe56d21c6da3b01e94ba03ef5020b6369b4781d27b1f8fb083560f1573f9ffed87c0fdfefeff079328bcf5f23a7962da3c3ab2889bfffb36c09277c8da0c5ef4138e1bb37d2bd8f8bf1152929535403b9db24eeab7fbffa4751c4f421a2ed463d40046343d04d5b1d05dfe40e516c77e178785daa3e34afbe1d4cb4611d2731e2870895dc84d3ec101ba242cbb1c91be74272980b1b86989bc082c109cd616d8205b7761ed55faebacd15e5088a6acad1eeb25f7f3024431fe1bc31b0bf020000ffff9a921a61c1140000") } diff --git a/cmd/linux.go b/cmd/linux.go index 1fd857ec0..f2afb9230 100644 --- a/cmd/linux.go +++ b/cmd/linux.go @@ -35,6 +35,8 @@ const ( Parrot // Linuxmint distribution Linuxmint + // VoidLinux distribution + VoidLinux ) // DistroInfo contains all the information relating to a linux distribution @@ -111,6 +113,8 @@ func parseOsRelease(osRelease string) *DistroInfo { result.Distribution = Parrot case "linuxmint": result.Distribution = Linuxmint + case "void": + result.Distribution = VoidLinux default: result.Distribution = Unknown } @@ -156,6 +160,17 @@ func PacmanInstalled(packageName string) (bool, error) { return exitCode == 0, nil } +// XbpsInstalled uses pacman to see if a package is installed. +func XbpsInstalled(packageName string) (bool, error) { + program := NewProgramHelper() + xbpsQuery := program.FindProgram("xbps-query") + if xbpsQuery == nil { + return false, fmt.Errorf("cannot check dependencies: xbps-query not found") + } + _, _, exitCode, _ := xbpsQuery.Run("-S", packageName) + return exitCode == 0, nil +} + // RpmInstalled uses rpm to see if a package is installed func RpmInstalled(packageName string) (bool, error) { program := NewProgramHelper() diff --git a/cmd/linuxdb.yaml b/cmd/linuxdb.yaml index 6b6bbd81b..bc9b17c37 100644 --- a/cmd/linuxdb.yaml +++ b/cmd/linuxdb.yaml @@ -55,6 +55,25 @@ distributions: gccversioncommand: *gccdumpversion programs: *debiandefaultprograms libraries: *debiandefaultlibraries + void: + id: void + releases: + default: + version: default + name: VoidLinux + gccversioncommand: *gccdumpversion + programs: + - name: gcc + help: Please install with `xbps-install base-devel` and try again + - name: pkg-config + help: Please install with `xbps-install pkg-config` and try again + - name: npm + help: Please install with `xbps-install nodejs` and try again + libraries: + - name: gtk+3-devel + help: Please install with `xbps-install gtk+3-devel` and try again + - name: webkit2gtk-devel + help: Please install with `xbps-install webkit2gtk-devel` and try again centos: id: centos releases: @@ -128,4 +147,4 @@ distributions: - name: pkg-config help: Please install using your system's package manager - name: npm - help: Please install using your system's package manager \ No newline at end of file + help: Please install using your system's package manager diff --git a/cmd/system.go b/cmd/system.go index 4749cb74f..bf36a1baa 100644 --- a/cmd/system.go +++ b/cmd/system.go @@ -282,6 +282,8 @@ func CheckDependencies(logger *Logger) (bool, error) { libraryChecker = RpmInstalled case Gentoo: libraryChecker = EqueryInstalled + case VoidLinux: + libraryChecker = XbpsInstalled default: return false, RequestSupportForDistribution(distroInfo) }