Makrennel / hyprland-void

void linux hyprland templates for building with xbps-src
Other
132 stars 15 forks source link

Improve README instructions #55

Closed zen0bit closed 3 months ago

zen0bit commented 5 months ago

Sorry if I am mistaken but I think..

That when building new versions of hyprland Should be enough to create masterdir with new name (You can have as many as you want) Then your builds will be separated from each other (Same as is done for different architectures)

or this could help with that (taken from ./xbps-src -h)

remove-autodeps Removes all package dependencies that were installed automatically. purge-distfiles Removes all obsolete distfiles in /sources.

-H Absolute path to a directory to be bind mounted at /host. The host directory stores binary packages, sources and package dependencies downloaded from remote repositories. If unset defaults to void-packages/hostdir. -m Absolute path to a directory to be used as masterdir. The masterdir is the main directory to build/store/compile packages. If unset defaults to void-packages/masterdir-. -t Create a temporary masterdir to not pollute the current one. Note that the existing masterdir must be fully populated with binary-bootstrap first. Once the target has finished, this temporary masterdir will be removed. This flag requires xbps-uchroot(1), and won't work on filesystems that don't support overlayfs.

If nothing else works then zap Removes a masterdir but preserving ccache, distcc and host directories.

Makrennel commented 5 months ago

I'm not really sure what you're trying to get at, is this just to reduce collision between rebuilds? The main problem that causes the instructions to be so convoluted is just because not everything gets handled cleanly between versions.

For example, if there is a patches directory inside srcpkgs/hyprland and the patches directory gets removed, when cp -r srcpkgs/* ../void-packages/srcpkgs/ is run the patches directory will not get removed because this just replaces present files for present files.

Similarly, we may have to change common/shlibs or even update some packages from void-packages before they are updated by the distro, and the only way to subsequently update your clone of void-packages is to git clean -fd and git reset --hard so that all the files (hopefully) are reset to the state they were before being modified with hyprland-void's versions; however, I have found this to ultimately be unreliable.

The only way I could see to reliably update every single time would be to just reclone void-packages every single time. However, doing this means you also have to redo binary-bootstrap and that can waste time and bandwidth redoing over and over.

Ideally the best thing would be to just get away from user instructions entirely, and switch to using a script which automates the process. Even better would be to build the packages remotely and store them in a of third party repository so we don't have to deal with users attempting and failing to build locally because they didn't follow instructions or have a strange configuration that I can't possibly know about... but I haven't a clue how to go about making a repository xbps-install -R can access remotely, and the closest other option would be to just make archived tarballs of the packages whenever a commit is added, as for example was done in #47.

Makrennel commented 3 months ago

I simplified the installation instructions using the release tarballs that are built automatically. I still have some potential ideas for further improvement, but this should do for now. Installing/updating from the tarballs should be far simpler than that huge list of instructions it had before.

Makrennel commented 3 months ago

Figured out how to sign and push the repo using CI. Users can now just add the repo to xbps and install hyprland directly - at least if using glibc. Might consider trying to add a musl repo if there aren't too many problems.