[Scons-users] tagging files (RPM packaging)

Bill Deegan bill at baddogconsulting.com
Sun Jan 2 17:10:30 EST 2022


Do you have either:
env = Environment(tools=["default", "packaging"])

Or
env =Environment(...)

and then
env.Tool('packaging')

?

On Sun, Jan 2, 2022 at 2:52 AM Werner Reisberger <wr at pure.ch> wrote:

> On 2022-01-01 23:00, Bill Deegan wrote:
> > Can you try:
> >
> >       Tag('file2.txt', 'DOC')
>
> This gives me: AttributeError: 'SConsEnvironment' object has no
> attribute 'Tag':
> Calling
>          env.Tag('file2.txt', 'DOC')
> gives: AttributeError: 'str' object has no attribute 'Tag':
>
> Please find below an example of a basic SConstruct file which should
> make the behaviour more clear. I am working on Redhat 7 and Centos 8
> with python 3.6.8 and SCons v4.3.0.
>
> The test directory looks like
>
> bin/  etc/  man/  SConstruct
>
> ../bin:     ./etc:     ./man:
> a.sh       c.conf     m.txt
>
>
> Running scons with the below SConstruct produces a rpm with all three
> files. The bin/a.sh has the right file attributes when installed. I
> don't replicate the full directory structure but for the sake of
> demonstrating the tagging behaviour this should be sufficient.
>
> I could open a github project for this but I would rather offer to
> extend the existing tagging test
> (https://github.com/SCons/scons/blob/master/test/packaging/rpm/tagging.py)
>
> which will give the opportunity to dive a bit into the python code :)
>
> Basically I would like to use SCons to build a couple of RPM's which are
> currently build by make. It's mostly precompiled stuff.
>
> --Werner
>
>
> #################################################################################################
> env = Environment(tools=["default", "packaging"])
> mma = File([ "bin/a.sh", "etc/c.conf", "man/m.txt" ])
> env.Install("/var/tmp/tagtest", mma)
> # following tagging works
> env.Tag(mma[0], UNIX_ATTR='(755, root, adm)')
> env.Tag(mma[1], CONFIG=' ') # adds an extra space between attribute and
> filename
> env.Tag(mma[2], DOC=' ')
> # should work according to docs but does not
> # env.Tag("bin/a.sh", UNIX_ATTR='0o755')
> # env.Tag("etc/c.conf", CONFIG)
> # env.Tag("man/m.txt", DOC)
> env.Package(
>      NAME='tagtest',
>      VERSION='1.0.0',
>      PACKAGEVERSION=0,
>      LICENSE="gpl",
>      PACKAGETYPE="rpm",
>      SUMMARY="Check tags",
>      DESCRIPTION="test basics",
>      X_RPM_GROUP="build/tools",
> )
>
> ###################################################################################################
> > On Sat, Jan 1, 2022 at 1:57 PM Bill Deegan <bill at baddogconsulting.com>
> > wrote:
> >
> >> Also:
> >> Which version of Python?
> >>
> >> Which version of SCons?
> >> Which OS and version are you running?
> >>
> >> Thanks,
> >> Bill
> >>
> >> On Sat, Jan 1, 2022 at 1:55 PM Bill Deegan
> >> <bill at baddogconsulting.com> wrote:
> >>
> >> Werner,
> >>
> >> Can you make a sample github repo with all the attributes you're
> >> trying to use, and an example rpmspec file?
> >>
> >> That should provide enough information to make sure we fix the issue
> >> you're running into.
> >>
> >> Thanks,
> >> Bill
> >> SCons Project Co-Manager
> >>
> >> On Sat, Jan 1, 2022 at 9:45 AM Mats Wichmann <mats at wichmann.us>
> >> wrote:
> >> On 1/1/22 07:16, Werner Reisberger wrote:
> >>> The RPM packages I am trying to build with SCons require certain
> >> tags
> >>> but most of the tags does not work out of the box.
> >>>
> >>> E.g. The SCons man page proposes the following call to tag a file
> >> with
> >>> the DOC attribute:
> >>>
> >>>     # marks file2.txt to be a documentation file
> >>>     Tag('file2.txt', DOC)
> >>>
> >>> This does not work. I have to say
> >>>
> >>>     Tag('file2.txt', DOC=' ')
> >>>
> >>> That's because the tag is defined as
> >>>
> >>>     'PACKAGING_DOC'              : '%%doc %s',
> >>>
> >>> but DOC attributes in RPM spec files have the format
> >>>
> >>>      %doc file_name
> >>>
> >>> It's different with the UNIX_ATTR tag where file mode and
> >> owner/group
> >>> have to be appended like
> >>>
> >>>      %attr(644, root, adm) /etc/yp.conf
> >>>
> >>> The tag command for UNIX_ATTR in the SCons man page also doesn't
> >> work:
> >>>
> >>>      # makes sure the built library will be installed with
> >> 644 file
> >>> access mode
> >>>      Tag(Library('lib.c'), UNIX_ATTR="0o644")
> >>>
> >>> You need to follow the RPM specification
> >>>
> >>
> > (
> http://ftp.rpm.org/max-rpm/s1-rpm-anywhere-specifying-file-attributes.html
> >> [1])
> >>>
> >>>
> >>> However the tagging test script on GitHub does it right.
> >>>
> >>> Like the DOC attribute the following tag definitions need to be
> >> fixed:
> >>>
> >>>         'PACKAGING_CONFIG'           : '%%config
> >> %s',            # =>
> >>> '%%config'
> >>>         'PACKAGING_CONFIG_NOREPLACE' :
> >> '%%config(noreplace) %s', # =>
> >>> '%%config(noreplace)'
> >>>         'PACKAGING_UNIX_ATTR'        : '%%attr
> >> %s',              # =>
> >>> '%%attr(%s)'
> >>>         'PACKAGING_LANG_'            :
> >> '%%lang(%s) %s',          # =>
> >>> '%%lang(%s)'
> >>>         'PACKAGING_X_RPM_VERIFY'     : '%%verify
> >> %s',            # =>
> >>> '%%verify (%s)' ?
> >>>         'PACKAGING_X_RPM_DIR'        : '%%dir
> >> %s',               # =>
> >>> '%%dir'
> >>>         'PACKAGING_X_RPM_DOCDIR'     : '%%docdir
> >> %s',            # =>
> >>> '%%docdir'
> >>>         'PACKAGING_X_RPM_GHOST'      : '%%ghost %s',
> >> }           # =>
> >>> '%%ghost'
> >>>
> >>> Unfortunately my python knowledge is rather basic but let me know
> >> how I
> >>> can help.
> >>
> >> Looks like this code hasn't been touched in a very long time
> >> (except for
> >> some fiddling of docstrings and newer Python syntax, it's largely
> >> unchanged since 2007) .  One wonders if it's actually being used -
> >> you
> >> may be a trailblazer here! Not sure if the actual problem is the
> >> tag
> >> specifications or the tag "compiler" in the code, we should be able
> >> to
> >> figure it out though.  Help could be as simple as providing a
> >> minimal
> >> SConscript that shows the problem.
> >>
> >>>
> >>> Happy 2022 and keep on going with your great work!
> >>>
> >>
> >> Thanks!
> >>
> >> _______________________________________________
> >> Scons-users mailing list
> >> Scons-users at scons.org
> >> https://pairlist4.pair.net/mailman/listinfo/scons-users [2]
> >
> >
> > Links:
> > ------
> > [1]
> >
> http://ftp.rpm.org/max-rpm/s1-rpm-anywhere-specifying-file-attributes.html
> > [2] https://pairlist4.pair.net/mailman/listinfo/scons-users
> >
> > _______________________________________________
> > Scons-users mailing list
> > Scons-users at scons.org
> > https://pairlist4.pair.net/mailman/listinfo/scons-users
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20220102/90a808d1/attachment-0001.htm>


More information about the Scons-users mailing list