When using tito to build a local (-only) SRPM or RPM package, the resulting package file contains multiple suffixes, including the current git commit:
root@centos7 /opt/mypackage # tito build --srpm -o /tmp/tito/ --offline --test
Creating output directory: /tmp/tito
Building package [mypackage-1.1.18-1]
Wrote: /tmp/tito/mypackage-git-3.ea801b1.tar.gz
Wrote: /tmp/tito/mypackage-1.1.18-1.el7.git.7.ea801b1.src.rpm
That's information I do not need for the final package name.
Easy, I thought. I created an empty file with the same file name on my local machine (running Linux Mint) to do some local tests.
ckadm@mintp ~ $ mkdir -p /tmp/tito
ckadm@mintp ~ $ touch /tmp/tito/mypackage-1.1.18-1.el7.git.7.ea801b1.src.rpm
ckadm@mintp /tmp/tito $ ls -la
total 24
drwxrwxr-x  2 ckadm ckadm  4096 Nov  1 13:39 ./
drwxrwxrwt 29 root  root  20480 Nov  1 13:39 ../
-rw-rw-r--  1 ckadm ckadm     0 Nov  1 13:39 mypackage-1.1.18-1.el7.git.7.ea801b1.src.rpm
Then I used my beloved rename command to remove the git relevant pars of the file name:
ckadm@mintp ~ $ rename "s/.git.*/.src.rpm/" /tmp/tito/*.src.rpm
This perfectly worked and now shows the src rpm file with the wanted file name:
ckadm@mintp /tmp/tito $ ls -la
total 24
drwxrwxr-x  2 ckadm ckadm  4096 Nov  1 13:43 ./
drwxrwxrwt 29 root  root  20480 Nov  1 13:39 ../
-rw-rw-r--  1 ckadm ckadm     0 Nov  1 13:43 mypackage-1.1.18-1.el7.src.rpm
But surprise, surprise when the same rename command ran in a GitLab pipeline which uses CentOS 7, Rocky Linux 8 and Rocky Linux 9; the pipeline failed because the rename command failed (on all three distributions):
I was able to reproduce the same error on a CentOS 7 VM:
root@centos7 ~ # mkdir -p /tmp/tito
root@centos7 ~ # touch /tmp/tito/mypackage-1.1.18-1.el7.git.7.ea801b1.src.rpm
root@centos7 ~ # cd /tmp/tito/
root@centos7 /tmp/tito # rename "s/.git.*/.src.rpm/" mypackage-1.1.18-1.el7.git.7.ea801b1.src.rpm 
rename: not enough arguments
Usage:
 rename [options] expression replacement file...
Options:
 -v, --verbose    explain what is being done
 -s, --symlink    act on symlink target
 -h, --help     display this help and exit
 -V, --version  output version information and exit
For more details see rename(1).
It turns out there are two different rename commands in the Linux world:
There's a great difference in between these two commands. The latter, the Perl script, supports sophisticated renaming with PCRE (Perl Regular Expressions) - which I used above.
So how can this be solved in my pipeline using CentOS and Rocky Linux now? By installing the package containing the same Perl script! The package and also the command is called prename on EL distributions.
root@centos7 /tmp/tito # yum install prename
[...]
Installed:
  prename.noarch 0:1.9-5.el7  
Complete!
root@centos7 /tmp/tito # prename "s/.git.*/.src.rpm/" mypackage-1.1.18-1.el7.git.7.ea801b1.src.rpm 
root@centos7 /tmp/tito # ls -la mypackage*
-rw-r--r-- 1 root root 0 Nov  1 14:16 mypackage-1.1.18-1.el7.src.rpm
And it worked! =)
After adjusting the GitLab pipeline jobs (.gitlab-ci.yml) the pipeline ran through again. 
No comments yet.
AWS Android Ansible Apache Apple Atlassian BSD Backup Bash Bluecoat CMS Chef Cloud Coding Consul Containers CouchDB DB DNS Databases Docker ELK Elasticsearch Filebeat FreeBSD Galera Git GlusterFS Grafana Graphics HAProxy HTML Hacks Hardware Icinga Influx Internet Java KVM Kibana Kodi Kubernetes LVM LXC Linux Logstash Mac Macintosh Mail MariaDB Minio MongoDB Monitoring Multimedia MySQL NFS Nagios Network Nginx OSSEC OTRS Observability Office OpenSearch PHP Perl Personal PostgreSQL PowerDNS Proxmox Proxy Python Rancher Rant Redis Roundcube SSL Samba Seafile Security Shell SmartOS Solaris Surveillance Systemd TLS Tomcat Ubuntu Unix VMware Varnish Virtualization Windows Wireless Wordpress Wyse ZFS Zoneminder Linux