Re: tagging files (RPM packaging)

Werner Reisberger <[email protected]>
Newsgroups gmane.comp.programming.tools.scons.user
Message-ID <[email protected]>
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 <[email protected]>
> 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
>> <[email protected]> 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 <[email protected]>
>> 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
>> [email protected]
>> 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
> [email protected]
> https://pairlist4.pair.net/mailman/listinfo/scons-users
_______________________________________________
Scons-users mailing list
[email protected]
https://pairlist4.pair.net/mailman/listinfo/scons-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.