[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