Am 24.09.2025 um 21:22 schrieb Brian Inglis via Cygwin-apps:
On 2025-09-23 16:08, Thomas Wolff via Cygwin-apps wrote:


Am 20.09.2025 um 19:07 schrieb Thomas Wolff via Cygwin-apps:

Am 20.09.2025 um 00:37 schrieb Brian Inglis via Cygwin-apps:
On 2025-09-19 10:24, Thomas Wolff via Cygwin-apps wrote:


Am 18.09.2025 um 05:32 schrieb Brian Inglis via Cygwin-apps:
On 2025-09-16 15:42, Thomas Wolff via Cygwin-apps wrote:
questions for a new package:
 * Is there a way to specify a git clone for download rather than a download URI?

See:

    https://cygwin.github.io/cygport/git_cygclass.html

for example:

    GIT_URI=https://github.com/$NAME/$NAME
    GIT_BRANCH=$NAME
    GIT_TAG=v$VERSION
    GIT_REV=

    inherit git


* Is there a way to specify files (like the build script in this case)
  to be included in the source package?
SRC_URI+=" https://...";
SRC_URI+=" filename"

The intent is for all packages to be built using cygport to support CI and any policies and approaches desired, and automate a *LOT* of any grunt work commonly required!

The desire is to eventually have validated deployments only via cygport, scallywag, and calm, or successors.

Post the build script, or a link to the package definition, spec, ebuild, etc. on other distros or sites, for advice, suggestions, and help porting it to cygport.

Thanks for the SRC_URI+= hint. The GIT_URI, GIT_TAG hint did not work, nothing was downloaded. Also it's a huge repository and I'd prefer shallow clone (-- depth 1) and sparse checkout.

Actually, the SRC_URI trick fixes the package step but spoils the prep step: /bin/cp: failed to access 'emojis-noto-v2.051-1.noarch': No such file or directory
*** ERROR: cp -t emojis-noto-v2.051-1.noarch getnoto failed
Which it does while in subdirectory origsrc but it did not copy the scripts there before. Looks like a bug for me.


Using git.cygclass also handles conversion to tar used as SRC_URI and fixing up the SRC_DIR.  > Bundling a build script with the cygport does not seem to be supported. It could
be injected as a patch perhaps.
As the two scripts are actually also part of mintty, I guess I'll add them as a downloadable source.
After `inherit git`, you could add:
inherit git only works with GIT_URI set, but I don't have one (for the sparse checkout issue...)

MINTTY=https://github.com/mintty/mintty/raw/refs/heads/master/tools/
SRC_URI+=" $MINTTY/getnoto "

or

MINTTY_TOOLS=https://github.com/mintty/mintty/raw/refs/heads/master/tools/
SRC_URI+=" $MINTTY_TOOLS/getnoto "

and so on, or local file:// equivalents, or use git submodules.

Cygport git cygclass defaults to --depth 1, and retries without if that fails because shallow clones are not supported by the upstream, after issuing a message to that effect.

I've uploaded a source package of my proposed package to http://towo.net/ cygwin/ emojis-noto-v2.048-1-src.tar.xz for consideration.

It is usual to attach the .cygport as text/plain so we don't have to download and unpack the tar to be able to comment.
Attaching my current work version here.


Did you notice the `inherit git` *AFTER* the definitions hint above?

No, thanks. However, that still does not give me sparse (partial) checkout.

It does use --depth 1: you could define your own git() { ... } function in your .cygport(s) to add --sparse after "$@" if $@[1] == clone, although I don't *KNOW* that git uses or supports GNU style flexible getopt?
It could also DTRT on checkout, submodule, and so on, if required.
Logging the git function shows it's calling git submodule update (what's the purpose of that?) and hanging there.


Also it seems to stall after checkout:
git checkout tags/v2.051
Updating files: 100% (20100/20100), done.
HEAD is now at 8998f5dd Merge pull request #515 from googlefonts/e17
- then nothing; waited for 5 min.

It does take a while to tar ~0.5GB, and unpack and copy that into ~1.5GB {origsrc,src,temp} of repo, which if installed and packaged could become ~2.5GB workspace!
Why should it tar the download to copy it over to src or where else; sure it's doing that?


    https://cygwin.github.io/cygport/git_cygclass.html#git.cygclass

Also `inherit font` gives you font cygclass functions to store fonts in the appropriate places for use by *ALL* Cygwin apps newer than those supporting only legacy Adobe types.

I assigned this package to the Fonts category but it's not really a font...

Then set it to "Shells Graphics" perhaps instead, as Cygwin seems to categorize terminal emulators as "Shells".
Maybe just "Shells" then, as there are no data packages in Graphics.


    https://cygwin.github.io/cygport/git_cygclass.html#git.cygclass

Note the existing package, whose cygport would need some tweaks to get up to date since 2017:

    https://cygwin.com/cgit/cygwin-packages/noto-emoji-fonts

My proposed package does not replace the other one; it does not provide the font but the emoji graphics (.png files) as used by mintty.

You may then want to select only some resolution(s) of some glyph variations (single codepoint only?) and convert to usable size and more compact format such as webp using say ImageMagick `mogrify -path webp -format webp svg/*.svg` which shrinks svg from 40MB to 16MB, png/512 from 100MB to 40MB, and similar.
Right now I'm selecting the 128x128 resolution png files which I consider suitable.
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"

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}

        insinto /usr/share/emojis/common
        doins common/*.png
        insinto /usr/share/emojis/noto
        doins noto/*.png
}

Reply via email to