Re: cygport build/package issues

Brian Inglis via Cygwin-apps <[email protected]> Wed, 24 Sep 2025 13:22:42 -0600
Newsgroups gmane.os.cygwin.applications
Organization Systematic Software
Message-ID <[email protected]>
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

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:

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.

>>> 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.

>> 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!

>>>     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".

>>>     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.

-- 
Take care. Thanks, Brian Inglis              Calgary, Alberta, Canada

La perfection est atteinte                   Perfection is achieved
non pas lorsqu'il n'y a plus rien à ajouter  not when there is no more to add
mais lorsqu'il n'y a plus rien à retrancher  but when there is no more to cut
                                 -- Antoine de Saint-Exupéry