Kind reminder of new package proposal:

Am 25.09.2025 um 22:21 schrieb Thomas Wolff via Cygwin-apps:
Hi, I'd like to contribute a package with emoji graphics from the Google noto-emojis repository. There was some trouble with the cygport as discussed in another thread but not it appears to be working.
... and of course I meant "now (not not) it appears to be working"
Attached are the cygport file and two scripts used for the build process, which are identical to the scripts in the mintty tools directory. If this package is installed, this enables mintty 3.8.1 to display graphic emojis implicitly without further configuration.
Thomas
NAME="emojis-noto"
SUMMARY="graphic emojis from Google Noto Emoji font, enables mintty emojis"
DESCRIPTION="Google Noto Emoji graphic images for shared installation."
LICENSE=Apache-2.0
#CATEGORY="Fonts"
CATEGORY="Shells"
#CATEGORY="Shells Graphics"
HOMEPAGE="https://github.com/googlefonts/noto-emoji";
VERSION=v2.051
RELEASE=1

ARCH=noarch
SRC_DIR="emojis-noto-$VERSION-$RELEASE.$ARCH"

# git "download" would also provide shallow clone but not sparse checkout,
# also it fails to finish, so use the git download in script getnoto below
#GIT_URI="https://github.com/googlefonts/noto-emoji.git";
#GIT_TAG=$VERSION
#inherit git
#SRC_URI+=" getnoto getflags"

# this fails:
#inherit git
#tools=https://raw.githubusercontent.com/mintty/mintty/refs/heads/master/tools
#SRC_URI="$tools/getnoto $tools/getflags"

# this includes the scripts in the source archive
CYGWIN_FILES="getnoto getflags"

BUILD_REQUIRES=""

REQUIRES=""

#git() {
#       echo ------------ cygport calling git $*
#       /bin/git "$@"
#}

src_compile() {
        cd ${B}

        # the getnoto script downloads the repository 
        # using shallow clone and sparse checkout 
        # to limit download and storage volume

        ../../getnoto --tag ${VERSION}

        # getnoto also calls the script getflags to transform 
        # flags emojis filenames to a format searchable by 
        # Unicode codepoint sequences
}

src_install() {
        cd ${B}

        # this would copy all again, wasting time and space
        #insinto /usr/share/emojis/common
        #doins common/*.png
        # so do it this way
        mkdir -p $D/usr/share/emojis/common
        ln common/*.png $D/usr/share/emojis/common/

        #insinto /usr/share/emojis/noto
        #doins noto/*.png
        mkdir -p $D/usr/share/emojis/noto
        ln noto/*.png $D/usr/share/emojis/noto/
}
#! /bin/sh

tag=
case "$1" in
--tag)  tag="--branch $2";;
esac

#############################################################################
# download Noto font emojis

if [ -d noto-emojis ]
then    if [ -d noto-emojis/.git ]
        then    (cd noto-emojis; git pull)
        else    echo WARNING: directory noto-emojis already exists but no git 
config - Exit
                exit 9
        fi
else
        notogit=https://github.com/googlefonts/noto-emoji
        if git clone $tag --depth 1 -n --filter=blob:none $notogit noto-emojis
        then    true
        else    echo WARNING: given git tag $tag not found - Exit
                exit 9
        fi
        (cd noto-emojis
         git sparse-checkout set --no-cone png/128 third_party/region-flags/png
         git checkout
        )
fi
(mkdir -p noto; rm -f noto/*.png; ln noto-emojis/png/128/*.png noto/)

#############################################################################
# download Noto third-party flags emojis
# like getflags -n but use same repository

if [ -d noto-emoji-flags ]
then    if [ -d noto-emoji-flags/.git ]
        then    (cd noto-emoji-flags; git pull)
        else    echo WARNING: directory noto-emoji-flags already exists but no 
git config - Exit
                exit 9
        fi
else
        ln -s noto-emojis noto-emoji-flags
fi
(cd noto-emoji-flags; rm -f *.png; ln third_party/region-flags/png/*.png ./)

#############################################################################
# download rename Noto third-party flags

`dirname $0`/getflags -e

#############################################################################
# end
#! /bin/dash

# this script is 20% faster with dash than with bash

#############################################################################
# download function

download_noto () {

# download noto third-party region flags
if [ -d noto-emoji-flags ]
then    if [ -d noto-emoji-flags/.git ]
        then    (cd noto-emoji-flags; git pull)
        else    echo WARNING: directory noto-emoji-flags already exists but no 
git config - Exit
                exit 9
        fi
else
        notogit=https://github.com/googlefonts/noto-emoji
        git clone --depth 1 -n --filter=blob:none $notogit noto-emoji-flags
        (cd noto-emoji-flags
         git sparse-checkout set --no-cone third_party/region-flags/png
         git checkout
        )
fi
(cd noto-emoji-flags; rm -f *.png; ln third_party/region-flags/png/*.png ./)

}

download_other () {

# download Puellanivis’ flag emojis
if [ -d puellanivis-flags ]
then    if [ -d puellanivis-flags/.git ]
        then    (cd puellanivis-flags; git pull)
        else    echo WARNING: directory puellanivis-flags already exists but no 
git config - Exit
                exit 9
        fi
else
        puelgit=https://github.com/puellanivis/emoji.git
        git clone --depth 1 $puelgit puellanivis-flags
fi
(cd puellanivis-flags; rm -f *.png; ln flags/*.png flags/*/*.png ./)

}

download () {
        download_noto

        # drop download of old Google region flags
        #git clone --depth 1 https://github.com/google/region-flags.git 
google-region-flags &&
        #ln google-region-flags/png/*.png google-region-flags/

        download_other
}

#############################################################################
# extract emoji files:
# pre-deploy them with proper filename, according to codepoint pattern

extract () {
        mkdir -p common

        for f in `ls *-flags/*.png`
        do      e=${f##*/}
                e=${e%.png}
                if [ -n "$BASH_VERSION" ]
                then
                        e=${e//-}
                        e=${e//\'}
                #else filter them out by missing case below
                fi
                case $e in
                ??)     # 1F1E6 1F1E8 ; RGI_Emoji_Flag_Sequence
                        tagseq=false;;
                *)      # 1F3F4 E0067 E0062 E0065 E006E E0067 E007F; 
RGI_Emoji_Tag_Sequence; flag: England
                        tagseq=true;;
                esac
                if $tagseq
                then    n=1f3f4
                else    n=
                fi
                # speed-up possible by using a common sed script...
                for l in $( echo "$e" | tr 'A-Z' 'a-z' | sed -e 's,.,& ,g' )
                do      d=$( printf %d "'$l'" )
                        if $tagseq
                        then    case "$l" in
                                [a-z]|[0-9])
                                        d=$(( $d + 917504 ))
                                        n=$n-$( printf %x $d )
                                        ;;
                                #[a-z]) d=$(( $d - 97 + 917601 ))       # 'a' 
-> U+E0061 ...
                                #       n=$n-$( printf %x $d )
                                #       ;;
                                #[0-9]) d=$(( $d - 48 + 917552 ))       # '0' 
-> U+E0030 ...
                                #       n=$n-$( printf %x $d )
                                #       ;;
                                esac
                        else    d=$(( $d - 97 + 127462 ))       # U+1F1E6
                                n=$n-$( printf %x $d )
                        fi
                done
                if $tagseq
                then    n=$n-e007f.png
                else    n=${n#-}.png
                fi

                echo "$f -> common/$n"
                if [ -L "$f" ]
                then    # linking a symbolic link while renaming the target 
                        # would yield a dangling link, so copy it
                        cp "$f" "common/$n"
                else    ln "$f" "common/$n"
                fi
        done
}

#############################################################################
# perform download and extraction/deployment

case "$1" in
""|-h|--help)
        echo "Usage: `basename $0` [-d | -e | -de]" >&2
        echo >&2
        echo "This script retrieves flag emojis from various sources." >&2
        echo >&2
        echo "Options:" >&2
        echo "  -d      Download flags emojis repositories" >&2
        echo "  -n      Download only Noto flags" >&2
        echo "  -e      Extract emoji files with proper filenames into common/" 
>&2
        echo "  -de     -d and -e" >&2
        echo "  -ne     -n and -e" >&2
        echo >&2
        if [ `uname` = "Linux" ] && type wslpath 2> /dev/null 1>&2
        then    echo "Note: for direct deployment from WSL, first go into the 
common config directory:" >&2
                echo '  cd `wslpath "$APPDATA/mintty/emojis"` || cd `wslpath 
"$APPDATA/wsltty/emojis"`' >&2
        else    echo "Note: for direct deployment, first go into subdirectory 
'emojis' of one of the" >&2
                echo "mintty config directories:" >&2
                echo '  ~/.mintty' >&2
                echo '  ~/.config/mintty' >&2
                echo '  $APPDATA/mintty' >&2
                echo '  /usr/share/mintty' >&2
        fi
        exit;;
-n|--download-noto)
        download_noto
        ;;
-ne|--noto)
        download_noto
        extract
        ;;
-d|--download)
        download
        ;;
-e|--extract)
        extract
        ;;
-de|--all)
        download
        extract
        ;;
esac

#############################################################################
# end

Reply via email to