PKGBUILD with make all

1.7k Views Asked by At

I am trying to write a PKGBUILD for the AUR right now for a github project consisting of several sub applications.
So basically the CMake file of this project just runs a make to make && make install the sub applications.
These are my build and package steps:

build() {
  cd "$srcdir/$_gitname"
  [[ -d build ]] && rm -r build
  mkdir build && cd build
  cmake -DCMAKE_INSTALL_PREFIX=/opt/od ..
}

package() {
  cd "${_gitname}/build"
  sudo make all
}

My problem is now that everything works except:

  • makepkg -i is never asking for sudo rights during build (therefore I had to add sudo in front of the make all)
  • When asking for installing, makepkg does not recognize the size of the package. Therefore the package does also not uninstall when running packman -R packagename

I cannot change the CMake file though, because the project is not mine and all the different subapplications belong together and if I try make && make install them separately I get a bunch of errors that they are depending each other.

2

There are 2 best solutions below

0
On

The package function cannot install into the root hierarchy. Instead, makepkg is intended to install into the pkgdir under a fakeroot, where the pkgdir replicates the actual root directory structure. See ArchWiki/Creating Packages.

You can do this by adding DESTDIR="$pkgdir/" to the make options in your package function.

When pacman is invoked on the created package, it will copy the files over into the real root hierarchy.

0
On

As an exmaple

package()
{
    cd "$pkgname"
    DESTDIR="$pkgdir" cmake --install out 
} 

This will install things to $pkgdir, and then packaged to zst file.