kando-menu / kando

🥧 The Cross-Platform Pie Menu.
https://ko-fi.com/schneegans
Other
3.1k stars 89 forks source link

[DOCS] Adding building from source example commands and parameters #672

Closed D3vil0p3r closed 3 weeks ago

D3vil0p3r commented 3 weeks ago

Description

In https://github.com/kando-menu/kando/blob/main/docs/installing.md#gear-building-kando-yourself there is only the list of dependencies needed to build Kando but no cmake example commands and parameters are shown.

Could you please document them?

Furthermore, the listed dependencies are all used only for building process or some of them are needed also at runtime?

Affected Desktop Environments

Linux

Additional Information

No response

Schneegans commented 3 weeks ago

Hi there! The dependencies are only for building. I am not aware of any non-standard package required to run Kando. Let me know if you think there is one!

As for the missing instructions - everything is there, just a few lines further down this file. Maybe you are looking for the 📦 Creating a Release Executable section?

TLDR;

npm install
npm run package

This will create a directory in the out/ directory containing the kando executable.

What are you missing here?

D3vil0p3r commented 3 weeks ago

I'm trying to build it on fakeroot environment (to create a -git package instead of getting directly binaries). The fakeroot env refers to /tmp/makepkg/kando that contains src containing the source/repo files, and pkg where all the processed files will be stored.

The PKGBUILD, after cloning the repository on the latest commit, has:

prepare() {
    cd kando

    npm install
}

build() {
    cd kando

    npm run package
}

I noted one thing: 1- when npm run package is run on fakeroot to build PKGBUILD, I get:


✔ Checking your system
✖ Preparing to package application
  ›
    1. EACCES: permission denied, open '/.config/fork-ts-checkerrc'
    2. Unknown file extension ".ts" for /tmp/makepkg/kando/src/kando/forge.config.ts
â—¼ Running packaging hooks
â—¼ Packaging application
â—¼ Running postPackage hook

Failed to load: /tmp/makepkg/kando/src/kando/forge.config.ts

An unhandled rejection has occurred inside Forge:
Error: 
1. EACCES: permission denied, open '/.config/fork-ts-checkerrc'
2. Unknown file extension ".ts" for /tmp/makepkg/kando/src/kando/forge.config.ts
at Object.readFileSync (node:fs:448:20)
    at ExplorerSync.#readConfiguration (/tmp/makepkg/kando/src/kando/node_modules/cosmiconfig/src/ExplorerSync.ts:80:25)
    at search (/tmp/makepkg/kando/src/kando/node_modules/cosmiconfig/src/ExplorerSync.ts:43:51)
    at emplace (/tmp/makepkg/kando/src/kando/node_modules/cosmiconfig/src/util.ts:9:18)
    at search (/tmp/makepkg/kando/src/kando/node_modules/cosmiconfig/src/ExplorerSync.ts:66:25)
    at emplace (/tmp/makepkg/kando/src/kando/node_modules/cosmiconfig/src/util.ts:9:18)
    at search (/tmp/makepkg/kando/src/kando/node_modules/cosmiconfig/src/ExplorerSync.ts:66:25)
    at emplace (/tmp/makepkg/kando/src/kando/node_modules/cosmiconfig/src/util.ts:9:18)
    at search (/tmp/makepkg/kando/src/kando/node_modules/cosmiconfig/src/ExplorerSync.ts:66:25)
    at emplace (/tmp/makepkg/kando/src/kando/node_modules/cosmiconfig/src/util.ts:9:18)
    at search (/tmp/makepkg/kando/src/kando/node_modules/cosmiconfig/src/ExplorerSync.ts:66:25)
    at emplace (/tmp/makepkg/kando/src/kando/node_modules/cosmiconfig/src/util.ts:9:18)
    at search (/tmp/makepkg/kando/src/kando/node_modules/cosmiconfig/src/ExplorerSync.ts:66:25)
    at emplace (/tmp/makepkg/kando/src/kando/node_modules/cosmiconfig/src/util.ts:9:18)
    at ExplorerSync.search (/tmp/makepkg/kando/src/kando/node_modules/cosmiconfig/src/ExplorerSync.ts:74:21)
    at new ForkTsCheckerWebpackPlugin (/tmp/makepkg/kando/src/kando/node_modules/fork-ts-checker-webpack-plugin/lib/plugin.js:45:58)

It should occur because a file (probably forge.config.ts) tries to open /.config/fork-ts-checkerrc that does not exist (and / refers it expect wrongly to be in root /dir). Probably a DESTDIR before /.config is missing.

Schneegans commented 3 weeks ago

Well, for me it looks like the Fork TS Checker Webpack Plugin searches for a configuration file. As there is none in Kando's source, it seems to look in the user's home and since you are root, it tries to open /.config/fork-ts-checkerrc...?

I don't know... maybe that's the case. Anyways, I just removed the plugin as it does not seem to improve the build speed of Kando significantly anyways.

Can you try again with the latest main branch?

D3vil0p3r commented 3 weeks ago

Now it builds correctly. There is another "issue". On Kando binary .deb you published on Release, .deb has inside a kando.desktop and kando.png. On the built directory built from source as I explained above, I don't see any kando.desktop and kando.png file. I see only kando.desktop but not in the built directory. It is inside source repo directory in tools dir, and it refers to Icon=kando but I don't see any kando.png file either among source files or in the built directory.

Would be good if kando.desktop and kando.png will be in the built directory (in my case out/Kando-linux-x64.

Furthermore, can you rename LICENSE.md to LICENSE in order to keep the GitHub naming convention please?

Another aspect: I noted that the here-mentioned /usr/lib/kando/resources/app/.webpack/renderer/assets/icon-themes/ directory is not automatically created because /usr/lib/kando/resources/app/.webpack/renderer/assets contains only:

.rw-r--r-- root root  11 KB Tue Oct 29 16:03:05 2024  border.2608da3d.svg
.rw-r--r-- root root 2.8 MB Tue Oct 29 16:03:05 2024  introduction-1.05e657fb.mp4
.rw-r--r-- root root 2.9 MB Tue Oct 29 16:03:05 2024  introduction-2.77e472fa.mp4
.rw-r--r-- root root 2.6 MB Tue Oct 29 16:03:05 2024  introduction-3.53b4ff86.mp4
.rw-r--r-- root root 1.4 MB Tue Oct 29 16:03:05 2024  introduction-4.1db15bc4.mp4
.rw-r--r-- root root 3.4 MB Tue Oct 29 16:03:05 2024  introduction-5.a11e2fcb.mp4
.rw-r--r-- root root 4.3 MB Tue Oct 29 16:03:05 2024  material-symbols-rounded.86e1547e.woff2
drwxr-xr-x root root  88 B  Tue Oct 29 16:05:02 2024 ï„• menu-themes
.rw-r--r-- root root 112 KB Tue Oct 29 16:03:05 2024  Neucha-Regular.264ebab9.ttf
.rw-r--r-- root root 2.4 MB Tue Oct 29 16:03:05 2024  NotoSans-VariableFont_wdth,wght.b1d0ab70.ttf
.rw-r--r-- root root 782 KB Tue Oct 29 16:03:05 2024  SimpleIcons.24745b6c.woff2
.rw-r--r-- root root 7.3 KB Tue Oct 29 16:03:05 2024  swirl1-vertical.5a4dc725.svg
.rw-r--r-- root root 7.3 KB Tue Oct 29 16:03:05 2024  swirl1.81beb204.svg
.rw-r--r-- root root 9.6 KB Tue Oct 29 16:03:05 2024  swirl2.f9fd5f4a.svg

Can you make the build process creates it automatically even if empty please?

Schneegans commented 3 weeks ago

Great that it works now. Regarding your other suggestions: I have to ask why, why, and why?

Would be good if kando.desktop and kando.png will be in the built directory

The contents of this file would depend on how you intend to install the binary. Is the icon installed system-wide? Where is the binary installed to? In my opinion this should be generated by the packager. For the debian package, this is generated on-the-fly. The icons you can find here. Just copy one to your package.

Furthermore, can you rename LICENSE.md to LICENSE in order to keep the GitHub naming convention please?

Why? GitHub states that both names are possible. If you look at the file, you'll see that it is a markdown file so I would prefer to have the ending.

Can you make the build process creates it automatically even if empty please?

Again: Why? Why should the build process create an empty directory which you can easily create if you need it? Most packages will not require it.