# By default, dotests are run.
# No tests: rpmbuild -ba --without dotests *.spec
%bcond_without dotests

# List all the software already available
%define beats_packages filebeat metricbeat auditbeat

Name:           beats
Version:        9.5.1
Release:        1
Summary:        Beats - The Lightweight Shippers of the Elastic Stack

Group:          Applications
License:        Apache License Version 2.0
URL:            https://www.elastic.co/products/beats
Source0:        https://github.com/elastic/beats/archive/beats-%{version}.tar.gz

Patch1: filebeat-9.3.1-fix-ClockperSec.patch
Patch2: filebeat-8.17.1-filebeat_yml.patch
Patch3: filebeat-8.17.1-ioutil.patch

Patch4: auditbeat-8.17.1-aix-support.patch
Patch5: auditbeat-9.3.1-eventreader.patch 
Patch6: auditbeat-8.17.1-eventreader_fsnotify.patch
Patch7: auditbeat-8.17.1-file_integrity.patch
Patch8: auditbeat-8.17.1-fsnotify-backend_aix.patch
Patch9: auditbeat-8.17.1-fsnotify-backend_other.patch

Patch10: metricbeat-9.3.1-enable-filesystem.patch
Patch11: metricbeat-8.17.1-enable_aix.patch
Patch12: metricbeat-8.17.1-enable_fsstat.patch
Patch13: metricbeat-8.17.1-enable_uptime.patch
Patch14: metricbeat-9.3.1-filesystem_aix.patch 
Patch15: metricbeat-8.17.1-filesystem_yml.patch
Patch16: metricbeat-8.17.1-process_aix.patch
Patch17: metricbeat-9.3.1-filesystem_aix_disable_getusage.patch
Patch18: metricbeat-8.17.1-cpu_count_aix.patch
Patch19: metricbeat-9.3.1-cpu_count.patch
Patch20: metricbeat-8.17.1-swap_metrics.patch
Patch21: metricbeat-9.3.1-diskio.patch
Patch22: metricbeat-9.3.1-diskio-report.patch
Patch23: metricbeat-8.17.1-system-diskio-enable.patch
Patch24: metricbeat-8.17.1-fix-userspace-cpu.patch
Patch25: metricbeat-9.3.1-parseMount-Undeclare-aix.patch

BuildRequires:  golang >= 1.23
# BuildRequires:  mage

%description
The Lightweight Shippers of the Elastic Stack


%package -n filebeat
Summary: Filebeat sends log files to Logstash or directly to Elasticsearch.
URL: https://www.elastic.co/products/beats/filebeat

%description -n filebeat
Filebeat sends log files to Logstash or directly to Elasticsearch.
This is a beta version.


%package -n metricbeat
Summary: Metricbeat is a lightweight shipper for metrics.
URL: https://www.elastic.co/products/beats/metricbeat

%description -n metricbeat
Metricbeat is a lightweight shipper for metrics.
This is a beta version.

%package -n auditbeat
Summary: Audit the activities of users and processes on your system.
URL: https://www.elastic.co/products/beats/auditbeat

%description -n auditbeat
Audit the activities of users and processes on your system.
This is a beta version.

%prep
%setup -q -n %{name}-%{version}
cd ../
rm -rf %{name}-%{version}
git clone https://github.com/elastic/beats.git

mv beats %{name}-%{version}
cd  %{name}-%{version}
git checkout v%{version}

go mod tidy
go mod vendor

cd filebeat
go get github.com/power-devops/perfstat
go mod vendor
cd ../

%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
%patch16 -p1
%patch17 -p1
%patch18 -p1
%patch19 -p1
%patch20 -p1
%patch21 -p1
%patch22 -p1
%patch23 -p1
%patch24 -p1
%patch25 -p1

%build

unset GOROOT

cd filebeat
GOOS=aix GOARCH=ppc64 go build -ldflags="-linkmode=external"

cd ../auditbeat/
GOOS=aix GOARCH=ppc64 go build -ldflags="-linkmode=external"

cd ../metricbeat/
GOOS=aix GOARCH=ppc64 go build -ldflags="-linkmode=external"

%install
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT

go install github.com/magefile/mage@latest
export PATH=$HOME/go/bin:$PATH

install_beat(){
	set -x
	beat_name=$1

	install -D ${beat_name} ${RPM_BUILD_ROOT}%{_bindir}/${beat_name}

	mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/${beat_name}/bin/
	install -D ${beat_name} ${RPM_BUILD_ROOT}%{_datadir}/${beat_name}/bin/${beat_name}

	mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/${beat_name}
	test -d module && cp -r module ${RPM_BUILD_ROOT}%{_datadir}/${beat_name}/module
	test -d kibana && cp -r kibana ${RPM_BUILD_ROOT}%{_datadir}/${beat_name}/kibana

	mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/${beat_name}
	install *.yml ${RPM_BUILD_ROOT}%{_sysconfdir}/${beat_name}
	test -d modules.d && cp -r modules.d ${RPM_BUILD_ROOT}%{_sysconfdir}/${beat_name}

	# Manually, add the doc too
	mkdir -p ${RPM_BUILD_ROOT}%{_docdir}/${beat_name}-%{version}
        cd ../
	cp LICENSE.txt ${RPM_BUILD_ROOT}%{_docdir}/${beat_name}-%{version}
	cp NOTICE.txt ${RPM_BUILD_ROOT}%{_docdir}/${beat_name}-%{version}
	cp README.md ${RPM_BUILD_ROOT}%{_docdir}/${beat_name}-%{version}
}

# Install
for pkg in %{beats_packages}; do
	(
		cd $pkg
		install_beat $pkg
	)
done

mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/metricbeat/scripts/module/
mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/metricbeat/scripts/module/metricset/

cp metricbeat/scripts/module/fields.yml ${RPM_BUILD_ROOT}%{_sysconfdir}/metricbeat/scripts/module/ 
cp metricbeat/scripts/module/metricset/fields.yml ${RPM_BUILD_ROOT}%{_sysconfdir}/metricbeat/scripts/module/metricset/

mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/auditbeat/module/auditd/_meta/
mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/auditbeat/module/file_integrity/_meta/

cp auditbeat/module/auditd/_meta/fields.yml ${RPM_BUILD_ROOT}%{_sysconfdir}/auditbeat/module/auditd/_meta/
cp auditbeat/module/file_integrity/_meta/fields.yml ${RPM_BUILD_ROOT}%{_sysconfdir}/auditbeat/module/file_integrity/_meta/

mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/filebeat/scripts/fileset/
mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/filebeat/scripts/module/_meta/

cp filebeat/scripts/fileset/fields.yml ${RPM_BUILD_ROOT}%{_sysconfdir}/filebeat/scripts/fileset/
cp filebeat/scripts/module/_meta/fields.yml ${RPM_BUILD_ROOT}%{_sysconfdir}/filebeat/scripts/module/_meta/

%check

%clean
[ "${RPM_BUILD_ROOT}" != "/" ] && rm -rf ${RPM_BUILD_ROOT}

%files
%defattr(-,root,system)
# NONE

%files -n filebeat
%defattr(-,root,system)
%{_docdir}/filebeat-%{version}
%{_bindir}/filebeat
%{_datadir}/filebeat
%config(noreplace) %{_sysconfdir}/filebeat/filebeat.yml
%{_sysconfdir}/filebeat/scripts/fileset/fields.yml
%{_sysconfdir}/filebeat/scripts/module/_meta/fields.yml
%{_sysconfdir}/filebeat/filebeat.reference.yml
%{_sysconfdir}/filebeat/modules.d

%files -n metricbeat
%defattr(-,root,system)
%{_docdir}/metricbeat-%{version}
%{_bindir}/metricbeat
%{_datadir}/metricbeat
%config(noreplace) %{_sysconfdir}/metricbeat/metricbeat.yml
%{_sysconfdir}/metricbeat/scripts/module/fields.yml
%{_sysconfdir}/metricbeat/scripts/module/metricset/fields.yml
%{_sysconfdir}/metricbeat/metricbeat.reference.yml
%{_sysconfdir}/metricbeat/modules.d

%files -n auditbeat
%defattr(-,root,system)
%{_docdir}/auditbeat-%{version}
%{_bindir}/auditbeat
%{_datadir}/auditbeat
# Remove unsupported file since RDN/Generic.osx https://community.ibm.com/community/user/blogs/aditya-kamath/2025/07/14/monitor-aix-with-elastic-beats-observability-on-ai
# IN next versions we can keep this.
%exclude %{_datadir}/auditbeat/module/file_integrity/testdata/garble_macho_executable
%config(noreplace) %{_sysconfdir}/auditbeat/auditbeat.yml
%{_sysconfdir}/auditbeat/module/auditd/_meta/fields.yml
%{_sysconfdir}/auditbeat/module/file_integrity/_meta/fields.yml
%{_sysconfdir}/auditbeat/auditbeat.reference.yml

# %files -n packetbeat
# %defattr(-,root,system)
# %{_docdir}/packetbeat-%{version}
# %{_bindir}/packetbeat
# %{_datadir}/packetbeat
# %{_sysconfdir}/packetbeat

%changelog
* Wed Aug 12 2026 Aditya Kamath <Aditya.Kamath1@ibm.com> 9.5.1-1
- Update to fix CVE-2026-33814.

* Fri Apr 17 2026 Aditya Kamath <Aditya.Kamath1@ibm.com> 9.3.1-1
- Update to version 9.3.1 to fix CVE-2025-0712

* Tue Jan 06 2025 Aditya Kamath <Aditya.Kamath1@ibm.com> 8.17.1-4
- Add diskio statistics for AIX.
- Fix CPU user space time metric in AIX.

* Wed Nov 19 2025 Aditya Kamath <Aditya.Kamath1@ibm.com> 8.17.1-3
- Fix percentage fields for df -H filesystem in patches
- Add swap metrics in metricbeat

* Tue Oct 21 2025 Aditya Kamath <Aditya.Kamath1@ibm.com> 8.17.1-2
- Fix metricbeat device and directory fields.

* Mon May 26 2025 Aditya Kamath <Aditya.Kamath1@ibm.com> 8.17.1-1
- Upgrade to 8.17.1

* Fri Mar 06 2020 Ayappan P <ayappap2@in.ibm.com> - 7.5.2-1
- AIX Toolbox build

* Tue Jan 7 2020 Cl'ement Chigot <clement.chigot@atos.net> - 7.5.1-1beta
- First port on AIX
