Closed Quoteme closed 4 years ago
Thanks! I've written a PKGBUILD
, could you please help me test it? Sorry for asking because I don't have access to any Arch Linux machine right now.
PKGBUILD:
# Maintainer: Marco Wang <m.aesophor@gmail.com>
pkgname=wmderland-git
_pkgname=wmderland
pkgver=1.0.2
pkgrel=1
pkgdesc='X11 tiling window manager using space partitioning trees'
arch=('x86_64' 'aarch64')
url="https://github.com/aesophor/wmderland"
license=('MIT')
depends=('libx11')
makedepends=('gcc>=6.0' 'cmake>=3.9')
install=${_pkgname}.install
source=('git://github.com/aesophor/wmderland.git')
sha256sums=('SKIP')
build() {
cd ${_pkgname}/
./build.sh
}
package() {
# Install the executable.
cd ${_pkgname}/build/
make DESTDIR="${pkgdir}/" PREFIX="/usr/local/" install
# Install Wmderlandc (ipc client).
cd ../ipc-client/build/
make DESTDIR="${pkgdir}/" PREFIX="/usr/local/" install
# Install example config file.
cd ../../
mkdir -p "${pkgdir}/etc/xdg/Wmderland/"
install -D -m644 examples/* "${pkgdir}/etc/xdg/Wmderland/"
}
Also wmderland.install
for reminding users to get a copy of config file.
post_install() {
cat << EOF
==> IMPORTANT: Make sure you have a config file in ~/.config/Wmderland/config
==> An example config file has been placed at /etc/xdg/Wmderland/config
EOF
}
ok, so I set up a fresh install of arch with qemu and did the following:
sudo pacman -S fakeroot bintools # to get makepkg -si to work
mkdir wmderland && cd wmderland
# now i copied the PGKBUILD and wmderland.install into this folder
sudo pacman -S gcc cmake # i tried it without this before and it broke my system, because without this, all c++ libraries would be linked weirdly and unusable after trying to install wmderland
makepkg -si # but this resulted in the following error:
I searched Killed signal terminated program cc1plus
on Google and it turns out the reason for receiving this error message is likely due to insufficient amount of memory. Later on, I found that the default size of RAM of QEMU is 128 MB as stated in Gentoo wiki.
I also spotted a mistake I've made in package() function. The corrected PKGBUILD:
# Maintainer: Marco Wang <m.aesophor@gmail.com>
pkgname=wmderland-git
_pkgname=wmderland
pkgver=1.0.2
pkgrel=1
pkgdesc='X11 tiling window manager using space partitioning trees'
arch=('x86_64' 'aarch64')
url="https://github.com/aesophor/wmderland"
license=('MIT')
depends=('libx11')
makedepends=('gcc>=6.0' 'cmake>=3.9')
install=${_pkgname}.install
source=('git://github.com/aesophor/wmderland.git')
sha256sums=('SKIP')
build() {
cd ${_pkgname}/
./build.sh
}
package() {
# Install wmderland.
cd ${_pkgname}/build/
make DESTDIR="${pkgdir}/" PREFIX="/usr/local/" install
# Install wmderlandc (ipc client).
cd ../ipc-client/build/
make DESTDIR="${pkgdir}/" PREFIX="/usr/local/" install
# Install example config file.
cd ../../
mkdir -p "${pkgdir}/etc/xdg/wmderland/"
install -D -m644 example/* "${pkgdir}/etc/xdg/wmderland/"
}
I found an old laptop with Arch already installed this morning, so after upgrading the system, I tried building the aur package and it went well.
$ makepkg -si
==> Making package: wmderland-git 1.0.2-1 (Tue 25 Feb 2020 12:27:42 PM CST)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
-> Cloning wmderland git repo...
==> Validating source files with sha256sums...
==> Extracting sources...
-> Creating working copy of wmderland git repo...
==> Starting build()...
-- Building wmderland (WM)
-- The C compiler identification is GNU 9.2.0
-- The CXX compiler identification is GNU 9.2.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found X11: /usr/include
-- Looking for XOpenDisplay in /usr/lib/libX11.so;/usr/lib/libXext.so
-- Looking for XOpenDisplay in /usr/lib/libX11.so;/usr/lib/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Could NOT find Glog (missing: GLOG_INCLUDE_DIR GLOG_LIBRARY)
-- Configuring done
-- Generating done
-- Build files have been written to: /home/aesophor/Code/temp/wmderland/src/wmderland/build
make[1]: Entering directory '/home/aesophor/Code/temp/wmderland/src/wmderland/build'
make[2]: Entering directory '/home/aesophor/Code/temp/wmderland/src/wmderland/build'
Scanning dependencies of target wmderland
make[2]: Leaving directory '/home/aesophor/Code/temp/wmderland/src/wmderland/build'
make[2]: Entering directory '/home/aesophor/Code/temp/wmderland/src/wmderland/build'
[ 7%] Building CXX object CMakeFiles/wmderland.dir/src/action.cc.o
[ 14%] Building CXX object CMakeFiles/wmderland.dir/src/client.cc.o
[ 21%] Building CXX object CMakeFiles/wmderland.dir/src/config.cc.o
[ 28%] Building CXX object CMakeFiles/wmderland.dir/src/cookie.cc.o
[ 35%] Building CXX object CMakeFiles/wmderland.dir/src/ipc.cc.o
[ 42%] Building CXX object CMakeFiles/wmderland.dir/src/main.cc.o
[ 50%] Building CXX object CMakeFiles/wmderland.dir/src/properties.cc.o
[ 57%] Building CXX object CMakeFiles/wmderland.dir/src/snapshot.cc.o
[ 64%] Building CXX object CMakeFiles/wmderland.dir/src/stacktrace.cc.o
[ 71%] Building CXX object CMakeFiles/wmderland.dir/src/tree.cc.o
[ 78%] Building CXX object CMakeFiles/wmderland.dir/src/util.cc.o
[ 85%] Building CXX object CMakeFiles/wmderland.dir/src/window_manager.cc.o
[ 92%] Building CXX object CMakeFiles/wmderland.dir/src/workspace.cc.o
[100%] Linking CXX executable wmderland
make[2]: Leaving directory '/home/aesophor/Code/temp/wmderland/src/wmderland/build'
[100%] Built target wmderland
make[1]: Leaving directory '/home/aesophor/Code/temp/wmderland/src/wmderland/build'
--------------------------------------------------------------------------------------------------------------------------------------------------------
-- Building wmderlandc (client)
-- The C compiler identification is GNU 9.2.0
-- The CXX compiler identification is GNU 9.2.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found X11: /usr/include
-- Looking for XOpenDisplay in /usr/lib/libX11.so;/usr/lib/libXext.so
-- Looking for XOpenDisplay in /usr/lib/libX11.so;/usr/lib/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Configuring done
-- Generating done
-- Build files have been written to: /home/aesophor/Code/temp/wmderland/src/wmderland/ipc-client/build
make[1]: Entering directory '/home/aesophor/Code/temp/wmderland/src/wmderland/ipc-client/build'
make[2]: Entering directory '/home/aesophor/Code/temp/wmderland/src/wmderland/ipc-client/build'
Scanning dependencies of target wmderlandc
make[2]: Leaving directory '/home/aesophor/Code/temp/wmderland/src/wmderland/ipc-client/build'
make[2]: Entering directory '/home/aesophor/Code/temp/wmderland/src/wmderland/ipc-client/build'
[ 50%] Building C object CMakeFiles/wmderlandc.dir/wmderlandc.c.o
[100%] Linking C executable wmderlandc
make[2]: Leaving directory '/home/aesophor/Code/temp/wmderland/src/wmderland/ipc-client/build'
[100%] Built target wmderlandc
make[1]: Leaving directory '/home/aesophor/Code/temp/wmderland/src/wmderland/ipc-client/build'
==> Entering fakeroot environment...
==> Starting package()...
make[1]: Entering directory '/home/aesophor/Code/temp/wmderland/src/wmderland/build'
make[2]: Entering directory '/home/aesophor/Code/temp/wmderland/src/wmderland/build'
make[2]: Leaving directory '/home/aesophor/Code/temp/wmderland/src/wmderland/build'
[100%] Built target wmderland
make[1]: Leaving directory '/home/aesophor/Code/temp/wmderland/src/wmderland/build'
Install the project...
-- Install configuration: "MINSIZEREL"
-- Installing: /home/aesophor/Code/temp/wmderland/pkg/wmderland-git/usr/local/bin/wmderland
make[1]: Entering directory '/home/aesophor/Code/temp/wmderland/src/wmderland/ipc-client/build'
make[2]: Entering directory '/home/aesophor/Code/temp/wmderland/src/wmderland/ipc-client/build'
make[2]: Leaving directory '/home/aesophor/Code/temp/wmderland/src/wmderland/ipc-client/build'
[100%] Built target wmderlandc
make[1]: Leaving directory '/home/aesophor/Code/temp/wmderland/src/wmderland/ipc-client/build'
Install the project...
-- Install configuration: "MINSIZEREL"
-- Installing: /home/aesophor/Code/temp/wmderland/pkg/wmderland-git/usr/local/bin/wmderlandc
==> Tidying install...
-> Removing libtool files...
-> Purging unwanted files...
-> Removing static library files...
-> Stripping unneeded symbols from binaries and libraries...
-> Compressing man and info pages...
==> Checking for packaging issues...
==> Creating package "wmderland-git"...
-> Generating .PKGINFO file...
-> Generating .BUILDINFO file...
-> Adding install file...
-> Generating .MTREE file...
-> Compressing package...
==> Leaving fakeroot environment.
==> Finished making: wmderland-git 1.0.2-1 (Tue 25 Feb 2020 12:29:11 PM CST)
==> Installing package wmderland-git with pacman -U...
loading packages...
resolving dependencies...
looking for conflicting packages...
Packages (1) wmderland-git-1.0.2-1
Total Installed Size: 0.07 MiB
Net Upgrade Size: 0.00 MiB
checking keyring...
checking package integrity...
loading package files...
checking for file conflicts...
checking available disk space...
:: Processing package changes...
reinstalling wmderland-git...
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...
Edit: I can start wmderland after installation.
The AUR package is here!
https://aur.archlinux.org/packages/wmderland-git/
I've installed it with yay -S wmderland-git
and it worked fine.
awesome work! thank you a lot.
It would be a great convenience to have a package in the arch user repository, which would increase the userbase