dev-lang/ghc-bin: add SLOT 8.2.2
This commit is contained in:
		
							parent
							
								
									59c279f05a
								
							
						
					
					
						commit
						eb46eeb54e
					
				
							
								
								
									
										218
									
								
								packages/dev-lang/ghc-bin/files/ghc-bash-completion
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										218
									
								
								packages/dev-lang/ghc-bin/files/ghc-bash-completion
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,218 @@ | ||||
| # ghc-pkg command line completion for bash | ||||
| # | ||||
| # Copyright 2006-2007 Lennart Kolmodin <kolmodin@dtek.chalmers.se> | ||||
| 
 | ||||
| _ghc-pkg-get-ghc-pkg() | ||||
| { | ||||
|     echo ghc-pkg | ||||
| } | ||||
| 
 | ||||
| _ghc-pkg-pkg-fields() | ||||
| { | ||||
|     # usage: _ghc-pkg-pkg-fields pkg-id | ||||
|     # | ||||
|     # list all fields of the pkg-id | ||||
| 
 | ||||
|     # same fields for all packages but different in different versions of | ||||
|     # ghc-pkg? this can probably be done better/faster | ||||
| 
 | ||||
|     if [[ -z "$1" ]]; then | ||||
|         echo "usage: _ghc-pkg-pkg-fields pkg-id" | ||||
|         return 1 | ||||
|     fi | ||||
| 
 | ||||
|     local fields | ||||
| 
 | ||||
|     fields="$( $(_ghc-pkg-get-ghc-pkg) describe $1 )" | ||||
| 
 | ||||
|     #if [[ fields != *"cannot find package"* ]]; then | ||||
|     echo "$fields" | grep ".*:.*" | sed "s/^\(.*\):.*\$/\1/" | ||||
|     #fi | ||||
| } | ||||
| 
 | ||||
| _ghc-pkg-pkg-ids() | ||||
| { | ||||
|     # usage: _ghc-pkg-pkg-ids | ||||
|     # | ||||
|     # simply lists all package ids known by ghc-pkg. | ||||
|     $(_ghc-pkg-get-ghc-pkg) list --simple-output | ||||
| } | ||||
| 
 | ||||
| _ghc-pkg-pkgs() | ||||
| { | ||||
|     # usage: _ghc-pkg-pkgs [include-pkgs] [include-ids] | ||||
|     # | ||||
|     # with optional parameter include-pkgs it will list all packages known | ||||
|     # to ghc-pkg. | ||||
|     # with optional parameter include-ids it will list all package-ids known | ||||
|     # to ghc-pkg. | ||||
|     local pkgs | ||||
|     local result | ||||
|     pkgs=( $( _ghc-pkg-pkg-ids ) ) | ||||
|     result=( ) | ||||
| 
 | ||||
|     local withPkgs="no" withIds="no" | ||||
|     while [[ -n "$1" ]]; do | ||||
|         case "$1" in | ||||
|             include-pkgs) | ||||
|                 withPkgs="yes" ;; | ||||
|             include-ids) | ||||
|                 withIds="yes" ;; | ||||
|             *) | ||||
|                 echo "unknown parameter '$1' to _ghc-pkg-pkgs" | ||||
|                 return 1 ;; | ||||
|         esac | ||||
|         shift | ||||
|     done | ||||
| 
 | ||||
|     # user must supply either include-pkgs, include-ids or both | ||||
|     if [[ $withPkgs != "yes" && $withIds != "yes" ]]; then | ||||
|         echo "usage: _ghc-pkg-pkgs [include-pkgs] [include-ids]" | ||||
|         return 1 | ||||
|     fi | ||||
| 
 | ||||
|     # find all packages if the user requested them | ||||
|     if [[ $withPkgs == "yes" ]]; then | ||||
|         # O(n^2) algorithm to exclude duplicates | ||||
|         for p in ${pkgs[*]}; do | ||||
|             p="${p//-[0-9.]*/}" | ||||
|             for existing in ${result[*]}; do | ||||
|                 if [[ "$existing" == "$p" ]]; then | ||||
|                     continue 2 | ||||
|                 fi | ||||
|             done | ||||
|             result=( "${result[@]}" "${p}" ) | ||||
|         done | ||||
|     fi | ||||
| 
 | ||||
|     # include all pkg-ids if requested | ||||
|     if [[ $withIds == "yes" ]]; then | ||||
|         result=( "${result[@]}" "${pkgs[@]}" ) | ||||
|     fi | ||||
| 
 | ||||
|     # we are finished, echo the result | ||||
|     echo "${result[*]}" | ||||
| 
 | ||||
|     # happy ending | ||||
|     return 0 | ||||
| } | ||||
| 
 | ||||
| _ghc-pkg() | ||||
| { | ||||
|     local cur | ||||
|     cur=${COMP_WORDS[COMP_CWORD]} | ||||
| 
 | ||||
|     COMPREPLY=() | ||||
| 
 | ||||
|     local actions flags | ||||
|     actions='register update unregister expose hide list latest describe field' | ||||
|     dbflags="--user \ | ||||
|         --global \ | ||||
|         -f --package-conf= \ | ||||
|         --global-conf=" | ||||
|     registerflags="--force \ | ||||
|         -g --auto-ghci-libs \ | ||||
|         -D --define-name=" | ||||
|     listflags="--simple-output" | ||||
|     flags="$dbflags \ | ||||
|         $registerflags \ | ||||
|         $listflags \ | ||||
|         -? --help \ | ||||
|         -V --version" | ||||
| 
 | ||||
|     # if it's the users first word; complete it and return | ||||
|     if (($COMP_CWORD == 1)); then | ||||
|         COMPREPLY=( $( compgen -W "$actions $flags" -- $cur ) ) | ||||
|         return 0 | ||||
|     fi | ||||
| 
 | ||||
|     # now we know we have at least one word written | ||||
| 
 | ||||
|     local action="unknown" \ | ||||
|           prev numwords \ | ||||
|           cword act | ||||
|     prev=${COMP_WORDS[COMP_CWORD-1]} | ||||
|     numwords=${#COMP_WORDS[@]} | ||||
| 
 | ||||
|     # find the action with O(n*m) algorithm | ||||
|     # where n = ${#COMP_WORDS[*]} | ||||
|     #       m = number of actions | ||||
|     for cword in ${COMP_WORDS[*]}; do | ||||
|         for act in $actions; do | ||||
|             if [[ "$cword" == "$act" ]]; then | ||||
|                 action=$cword | ||||
|             fi | ||||
|         done | ||||
|     done | ||||
| 
 | ||||
|     case $action in | ||||
|         register|update) | ||||
|             # we want to complete both flags and paths, how? | ||||
|             # we do it by checking if the user has started to write a flag | ||||
|             # or a path, and then decide what to complete. | ||||
|             # that is, to complete a flag, the user must start to write a '-' | ||||
|             if [[ "$cur" == -* ]]; then | ||||
|                 # (we assume) it's the start of a flag | ||||
|                 # set COMPREPLY to flags relevant to these actions | ||||
|                 COMPREPLY=( $( compgen -W "$dbflags $registerflags" -- $cur ) ) | ||||
|             fi | ||||
|             ;; | ||||
|         unregister|expose|hide|list|describe) | ||||
|             # all these actions can be completed with exactly one argument, | ||||
|             # a pkg-id. | ||||
|             COMPREPLY=( $( compgen -W "$dbflags" -- $cur ) ) | ||||
| 
 | ||||
|             # add special flags for some actions | ||||
|             if [[ "$action" == "list" ]]; then | ||||
|                 COMPREPLY+=( $( compgen -W "$listflags" -- $cur ) ) | ||||
|             fi | ||||
| 
 | ||||
|             COMPREPLY+=( $( compgen -W "$( _ghc-pkg-pkgs include-ids )" -- $cur ) ) | ||||
|             ;; | ||||
|         latest) | ||||
|             # complete only packages, not package ids | ||||
|             COMPREPLY=( $( compgen -W "$( _ghc-pkg-pkgs include-pkgs )" -- $cur ) ) | ||||
|             ;; | ||||
|         field) | ||||
|             # we should always complete on the flags... | ||||
|             COMPREPLY=( $( compgen -W "$dbflags" -- $cur ) ) | ||||
| 
 | ||||
|             # then, we should either complete the package name or the field | ||||
|             # lets find out which one | ||||
| 
 | ||||
|             # find the number of words in COMP_WORDS before COMP_CWORD that | ||||
|             # isn't flags. it should be 2 or 3 for us to complete it, | ||||
|             #   exactly 2 if we should complete the package name | ||||
|             #   exactly 3 if we should complete the field name | ||||
|             #   otherwise, don't do any additional completion except the | ||||
|             #   flags | ||||
| 
 | ||||
|             # count the number of non flags up till the current word | ||||
|             local numnonflags=0 lastword i | ||||
|             for (( i=0 ; $i < $COMP_CWORD ; i++ )); do | ||||
|                 if [[ ${COMP_WORDS[$i]} != -* ]]; then | ||||
|                     lastword=${COMP_WORDS[$i]} | ||||
|                     numnonflags=$(( ++numnonflags )) | ||||
|                 fi | ||||
|             done | ||||
| 
 | ||||
|             case $numnonflags in | ||||
|                 2) | ||||
|                     # complete on pkg-ids | ||||
|                     COMPREPLY+=( $( compgen -W "$( _ghc-pkg-pkgs include-ids )" -- $cur ) ) ;; | ||||
|                 3) | ||||
|                     # complete on fields | ||||
|                     COMPREPLY+=( $( compgen -W "$( _ghc-pkg-pkg-fields $lastword )" -- $cur ) ) ;; | ||||
|             esac | ||||
|             ;; | ||||
|         *) | ||||
|             # unknown action, not yet given by the user | ||||
|             # return all possible completions | ||||
|             COMPREPLY=( $( compgen -W "$actions $flags" -- $cur ) ) | ||||
|             ;; | ||||
|     esac | ||||
| } | ||||
| 
 | ||||
| complete -F _ghc-pkg -o default ghc-pkg | ||||
| 
 | ||||
| # vim: set ft=sh tw=80 sw=4 et : | ||||
							
								
								
									
										84
									
								
								packages/dev-lang/ghc-bin/ghc-bin-8.2.2.exheres-0
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								packages/dev-lang/ghc-bin/ghc-bin-8.2.2.exheres-0
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,84 @@ | ||||
| # Copyright 2018 Julian Ospald <hasufell@posteo.de> | ||||
| # Distributed under the terms of the GNU General Public License v2 | ||||
| 
 | ||||
| require bash-completion alternatives | ||||
| 
 | ||||
| SUMMARY="The Glorious Glasgow Haskell Compilation System" | ||||
| DESCRIPTION=" | ||||
| GHC is a state-of-the-art, open source, compiler and interactive environment for the functional | ||||
| language Haskell." | ||||
| HOMEPAGE="https://www.haskell.org/ghc/" | ||||
| DOWNLOADS="https://downloads.haskell.org/~ghc/${PV}/ghc-${PV}-x86_64-deb7-linux.tar.xz" | ||||
| 
 | ||||
| LICENCES="BSD-3" | ||||
| SLOT="${PV}" | ||||
| PLATFORMS="-* ~amd64" | ||||
| MYOPTIONS="" | ||||
| 
 | ||||
| DEPENDENCIES=" | ||||
|     build+run: | ||||
|         dev-lang/perl:*[>=5.6.1] | ||||
|         dev-libs/gmp[>=6.1] [[ note = [ depends on libgmp.so.10 ] ]] | ||||
|         sys-libs/ncurses[>=6.1-r2] [[ note = [ Only these include libtinfo.so symlinks ] ]] | ||||
|         !dev-lang/ghc [[ | ||||
|             description = [ Both install the same binaries/libs and alternatives ] | ||||
|             resolution = uninstall-blocked-before | ||||
|         ]] | ||||
|     suggestion: | ||||
|         dev-lang/llvm[>=2.7] [[ description = [ LLVM can be used for code generation and linking ] ]] | ||||
| " | ||||
| 
 | ||||
| BUGS_TO="hasufell@posteo.de" | ||||
| REMOTE_IDS="freecode:${PN}" | ||||
| UPSTREAM_RELEASE_NOTES="http://www.haskell.org/${PN}/docs/${PV}/html/users_guide/release-${PV//./-}.html" | ||||
| 
 | ||||
| RESTRICT="test" | ||||
| 
 | ||||
| WORK=${WORKBASE}/ghc-${PV} | ||||
| 
 | ||||
| src_configure() { | ||||
|     # we are not building, shut up already | ||||
|     edo mkdir "${TEMP}"/bin | ||||
|     edo ln -s /usr/$(exhost --target)/bin/$(exhost --tool-prefix)ar "${TEMP}/bin/ar" | ||||
|     edo ln -s /usr/$(exhost --target)/bin/true "${TEMP}"/bin/strip | ||||
|     export PATH="${TEMP}/bin:$PATH" | ||||
|     econf \ | ||||
|         --target=$(exhost --target) | ||||
| } | ||||
| 
 | ||||
| src_compile() { | ||||
|     : | ||||
| } | ||||
| 
 | ||||
| src_install() { | ||||
|     default | ||||
| 
 | ||||
|     # bashcomp | ||||
|     dobashcompletion "${FILES}/ghc-bash-completion" | ||||
|     alternatives_for ghc ${SLOT} ${SLOT} \ | ||||
|         /usr/share/bash-completion/completions/ghc-bin{,-${SLOT}} | ||||
| 
 | ||||
|     # some scripts are not versioned, move | ||||
|     edo mv "${IMAGE}"/usr/$(exhost --target)/bin/{hp2ps,hp2ps-${SLOT}} | ||||
|     edo mv "${IMAGE}"/usr/$(exhost --target)/bin/{hpc,hpc-${SLOT}} | ||||
|     edo mv "${IMAGE}"/usr/$(exhost --target)/bin/{hsc2hs,hsc2hs-${SLOT}} | ||||
| 
 | ||||
|     # remove unversioned symlinks, we create alternatives later | ||||
|     local ghc_bin | ||||
|     for ghc_bin in ghc ghci ghc-pkg haddock runghc runhaskell ; do | ||||
|         edo rm "${IMAGE}"/usr/$(exhost --target)/bin/${ghc_bin} | ||||
|     done | ||||
|     unset ghc_bin | ||||
| 
 | ||||
|     # create alternatives for scripts/binaries | ||||
|     alternatives_for ghc ${SLOT} ${SLOT} \ | ||||
|         /usr/$(exhost --target)/bin/ghc{,-${SLOT}} \ | ||||
|         /usr/$(exhost --target)/bin/ghci{,-${SLOT}} \ | ||||
|         /usr/$(exhost --target)/bin/ghc-pkg{,-${SLOT}} \ | ||||
|         /usr/$(exhost --target)/bin/haddock{,-ghc-${SLOT}} \ | ||||
|         /usr/$(exhost --target)/bin/hp2ps{,-${SLOT}} \ | ||||
|         /usr/$(exhost --target)/bin/hpc{,-${SLOT}} \ | ||||
|         /usr/$(exhost --target)/bin/hsc2hs{,-${SLOT}} \ | ||||
|         /usr/$(exhost --target)/bin/runghc{,-${SLOT}} \ | ||||
|         /usr/$(exhost --target)/bin/runhaskell /usr/$(exhost --target)/bin/runghc-${SLOT} | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user