【问题标题】:Jenkins Pipeline breaks on brp-mangle-shebangs?詹金斯管道在 brp-mangle-shebangs 上中断?
【发布时间】:2021-05-02 13:03:06
【问题描述】:

由于 Fedora32(也是 Fedora 33)我的 libreoffice RPM Build 不再运行。当詹金斯调用/usr/lib/rpm/redhat/brp-mangle-shebangs 时,它似乎中断了。我修改了brp-mangle-shebangs 以获取破坏构建的特定文件。这就是输出:

+ read shebang_line
+ orig_shebang='Denne utvidelsen blir en del av Calc, og tilbyr nye metoder for løsing til bruk i optimering av ikke-lineære programmeringsmodeller.'
+ '[' 'Denne utvidelsen blir en del av Calc, og tilbyr nye metoder for løsing til bruk i optimering av ikke-lineære programmeringsmodeller.' = 'Denne utvidelsen blir en del av Calc, og tilbyr nye metoder for løsing til bruk i optimering av ikke-lineære programmeringsmodeller.' ']'
+ echo '*** WARNING: ./opt/loffice/libreoffice6.4/share/extensions/nlpsolver/description-nb.txt is executable but has no shebang, removing executable bit'
*** WARNING: ./opt/loffice/libreoffice6.4/share/extensions/nlpsolver/description-nb.txt is executable but has no shebang, removing executable bit
++ stat -c %y ./opt/loffice/libreoffice6.4/share/extensions/nlpsolver/description-nb.txt
+ ts='2021-01-28 16:22:30.267085614 +0100'
+ chmod -x ./opt/loffice/libreoffice6.4/share/extensions/nlpsolver/description-nb.txt
+ touch -d '2021-01-28 16:22:30.267085614 +0100' /opt/loffice/libreoffice6.4/share/extensions/nlpsolver/description-nb.txt
+ continue
+ IFS=
+ read -r line
+ f=./opt/loffice/libreoffice6.4/share/extensions/package.txt
+ path=/opt/loffice/libreoffice6.4/share/extensions/package.txt
+ '[' -n '' ']'
+ '[' -n '' ']'
+ read shebang_line
Fehler: Fehler-Status beim Beenden von /var/tmp/rpm-tmp.R2w2T5 (%install)

这个脚本似乎试图从文本文件中读取 shebangs 然后中断?老实说,我不知道发生了什么,因为詹金斯不会告诉我错误发生的确切位置。所以我不知道我的假设是否正确。我只能说,这个确切的构建在 fedora31 构建服务器上工作。

你们对为什么这个构建可能会刹车或如何进一步调试有任何提示吗?老实说,我现在很迷茫。

【问题讨论】:

    标签: jenkins jenkins-pipeline rpmbuild


    【解决方案1】:

    一个长的故事,但现在看来,在“根本原因”是“特征”,在GNU install命令。 P>

    通常(上linux/unix),当创建一个file是经由@ 987654329得到它的文件mode(权限)@。的此外强>的执行x许可附加汽提。 P>

    然而强>当你“install”的文件时,install命令是不可知的文件是否是数据或脚本,并拒绝剥离x。 (似乎install总是用途mode = 0755(又名 “-rwxr-XR-X”)。 P>

    示例:

    umask=0027
    
    600 -rw------- mod_0700_data    # from: chmod go-rwx mod_0700_data
    700 -rwx------ mod_0700_xowner  # from: chmod 0700 mod_0700_xowner
    777 -rwxrwxrwx mod_0777_xscript # from: chmod a+rwx mod_0777_xscript
    
    640 -rw-r----- mod_touch        # from: touch mod_touch
    
    600 -rw------- mod_cp_data      # from: cp mod_0700_data mod_cp_data
    600 -rw------- mod_cp_xowner    # from: cp mod_0700_xowner mod_cp_xowner
    750 -rwxr-x--- mod_cp_xscript   # from: cp mod_0777_xscript mod_cp_xscript
    
    600 -rw------- mod_cp_-p_data   # from: cp -p mod_0700_data mod_cp_-p_data
    700 -rwx------ mod_cp_-p_xowner # from: cp -p mod_0700_xowner mod_cp_-p_xowner
    777 -rwxrwxrwx mod_cp_-p_xscript    # from: cp -p mod_0777_xscript mod_cp_-p_xscript
    
    755 -rwxr-xr-x mod_install_data     # from: install mod_0700_data mod_install_data
    755 -rwxr-xr-x mod_install_xowner   # from: install mod_0700_xowner mod_install_xowner
    755 -rwxr-xr-x mod_install_xscript  # from: install mod_0777_xscript mod_install_xscript
    
    600 -rw------- mod_install_data+mode    # from: install --mode =600 mod_0700_data mod_install_data+mode
    700 -rwx------ mod_install_xowner+mode  # from: install --mode =700 mod_0700_xowner mod_install_xowner+mode
    777 -rwxrwxrwx mod_install_xscript+mode # from: install --mode =777 mod_0777_xscript mod_install_xscript+mode
    

    即你需要的手动 em>的包括--mode选项在每个install,特别是如果你需要保存文件的x执行位的状态(例如,在与关)。 P>

    解说:我怀疑的/ usr / lib / rpm的/红帽/ BRP-碾压-shebangs加入到RHEL / Fedora的通过减少RPM的 “不小心” 创建x执行模式的文件的发生率。错误。 (提示:如果install只会传播/设置x模式这将是一个很好的补充其中, STRONG>的原始 STRONG>文件有一个x位到位原来即可。可是,我讨厌想象这种变化多少的安装量会再破!)

    请注意,libreoffice不是唯一.rpm要由RHEL / Fedora的 “警告”。 ZFS ...“这些警告引起的,当我们(错误地) 包括在the_SCRIPTS automake的线的数据及配置文件“ P>

    望了一下更远的地方,我很好奇,如果automake不知道的install的不可知/淡漠默认文件mode行为。主要是因为zfs源代码,似乎也增加了许多补丁修复其Makefile.ac的变量,尤其是:dist_pkgdata_SCRIPTS和dist_pkgdata_DATA。例如。

    pkgdatadir = $(datadir)/@PACKAGE@/test-runner/include
    dist_pkgdata_SCRIPTS = \
        logapi.shlib
    
    dist_pkgdata_DATA = \
        stf.shlib
    

    更新:

    RHEL8有一个二进制文件/ usr / bin中/安装,这个shell脚本的可能是一个 “编译” 版本:install-sh ...出错行是#444,其中umask是覆盖: P>

    # 443: Copy the file name to the temp name.
    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && 
    

    非常成熟的代码...的 “版权所有(C)1994年X联盟” em>的......所以我敢肯定有一个很好的理由重写umask。 P>

    奇的是,二进制版本install默认为总是以eXecute-bit集合创建文件。 P>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-09
      • 2018-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-06
      • 2019-02-27
      • 2017-05-24
      相关资源
      最近更新 更多