Created
April 17, 2014 10:44
-
-
Save rejuvyesh/10973013 to your computer and use it in GitHub Desktop.
automate habs a little
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env zsh | |
# Created by rejuvyesh <[email protected]> | |
usage="Usage: ./cabal2pkgbuild <HACKAGE_PACKAGES_FILE>" | |
if [[ -z $1 ]]; then | |
echo $usage | |
exit 1 | |
fi | |
if [[ ! -f $1 ]]; then | |
echo "\`$1' does not exist or is not a regular file" | |
exit 1 | |
fi | |
hackage_url="http://hackage.haskell.org" | |
hackage_packages_file=($(<$1)) | |
# Add packages from Hackage | |
for hp in $hackage_packages_file; do | |
# Grab latest version of package | |
cabal_file=$(curl -s $hackage_url/package/$hp | grep -ioE "Cabal source package[)<>/lia href=\"]+\/package\/.+\.cabal" | grep -ioE "\/package.+") | |
command="cblrepo add --patchdir patches --cbl-url $hackage_url$cabal_file" | |
echo $command | |
eval $command | |
done | |
i=1 | |
for hp in ${hackage_packages_file}; do | |
command="cblrepo pkgbuild --ghc-version 7.8.2 --patchdir patches $hp" | |
echo "($i/${#hackage_packages_file}) $command" | |
eval $command | |
(( i+=1 )) | |
done | |
for pkg in ${hackage_packages_file}; do | |
hpkg=haskell-$pkg | |
command1="./makeahpkg $hpkg" | |
command2="./makeahpkg -a i686 $hpkg" | |
eval $command1 | |
eval $command2 | |
done |
Thanks @fmap. I tried nixpkg's but working with this overhead, would require time since I'll have to give up on haskell packages from elsewhere. You should write up on setting up a nix based haskell package management system!
I really like the idea of nixos
. I'll probably even switch, once I've the time to properly look into it. If you find the time, do write about your experience with nixos
.
A few comments/suggestions:
- Making use of
cblrepo sync
removes the need to download Cabal files from hackage. - Check out the
versions
command. - The
--patchdir patches
is unnecessary, that's the default value.
My own usage goes something like this:
% cblrepo sync
% cblrepo versions -l <list of packages> > pkgs-to-add
% cblrepo add $(cat pkgs-to-add)
% cblrepo build $(sed -e 's/,.*//' pkgs-to-add) > build-order
% cblrepo pkgbuild --ghc-version 7.8.2 $(cat build-order)
% ./makeahpkg -- $(cat build-order)
% ./makeahpkg -a i686 -- $(cat build-order)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Neat!
Check out https://github.com/NixOS/cabal2nix if you're bored.