You are here

Initial server-side setup

Submitted by Alan Mels on Sat, 10/20/2018 - 13:43

Create two virtual servers - repo.altagrade.org and testrepo.altagrade.org, empty their public_html directories and perform the following steps on host.altagrade.org (65.49.80.99).


0) Build rpmbuild directory structure

mkdir /root/rpmbuild && cd /root/rpmbuild
mkdir BUILD RPMS RPMS/i386 SOURCES SPECS SRPMS

1) Create spec file at /root/rpmbuild/SPECS/altagrade.spec

cat > /root/rpmbuild/SPECS/altagrade.spec << 'EOF'
Name:           altagrade
Version:        1
Release:        10
Summary:        AltaGrade OS
 
Group:          AltaGrade
BuildArch:      noarch
License:        none
URL:            http://repo.altagrade.org:8080
 
%description
AltaGrade OS
 
%prep
rm -rf %{buildroot}
mkdir %{buildroot}
mkdir %{buildroot}/etc
cp -R /etc/ag %{buildroot}/etc
 
%files
/etc/ag/
 
%changelog
EOF

2) Create /root/.rpmmacros file

cat > /root/.rpmmacros << 'EOF'
%packager AltaBot
 
%_topdir %(echo $HOME)/rpmbuild
 
%_smp_mflags %( \
    [ -z "$RPM_BUILD_NCPUS" ] \\\
        && RPM_BUILD_NCPUS="`/usr/bin/nproc 2>/dev/null || \\\
                             /usr/bin/getconf _NPROCESSORS_ONLN`"; \\\
    if [ "$RPM_BUILD_NCPUS" -gt 16 ]; then \\\
        echo "-j16"; \\\
    elif [ "$RPM_BUILD_NCPUS" -gt 3 ]; then \\\
        echo "-j$RPM_BUILD_NCPUS"; \\\
    else \\\
        echo "-j3"; \\\
    fi )
 
%__arch_install_post \
    [ "%{buildarch}" = "noarch" ] || QA_CHECK_RPATHS=1 ; \
    case "${QA_CHECK_RPATHS:-}" in [1yY]*) /usr/lib/rpm/check-rpaths ;; esac \
    /usr/lib/rpm/check-buildroot
EOF

3) Build testrepo structure

mkdir /root/testrepo && cd /root/testrepo
mkdir BUILD RPMS RPMS/i386 SOURCES SPECS SRPMS
cat > /root/.testrepomacros << 'EOF'
%packager AltaBot
 
%_topdir /root/testrepo
EOF

4) Create spec file at /root/testrepo/SPECS/testrepo.spec

cat > /root/testrepo/SPECS/testrepo.spec << 'EOF'
Name:           testrepo
Version:        1
Release:        5
Summary:        AltaGrade OS
 
Group:          AltaGrade
BuildArch:      noarch
License:        none
URL:            http://testrepo.altagrade.org:8080
 
%description
AltaGrade OS
 
%prep
rm -rf /root/testrepo/BUILDROOT
mkdir %{buildroot}
mkdir %{buildroot}/etc
cp -R /etc/ag %{buildroot}/etc
 
%files
/etc/ag/
 
%post
chmod -R 755 /etc/ag/post-rpm
/etc/ag/post-rpm/post-rpm.sh
 
%changelog
EOF

5) Finally create a custom buildrpm command.

cat > /usr/local/bin/buildrpm << 'EOF'
#!/bin/sh
 
if [ -z "$1" ]; then
  echo "Missing arguments."
  echo "Indicate either altagrade or testrepo as a reponame in the following format:";
  echo 'buildrpm reponame "comment"';
  echo
  exit 1;
fi
 
if [ -z "$2" ]; then
  echo
  echo "Specify a comment in the following format:";
  echo 'build rpm reponame "comment"';
  echo
  exit 1;
fi
 
if [ $1 = "altagrade" ]; then
  rpmdev-bumpspec --comment="${2}" --userstring="AltaBot" /root/rpmbuild/SPECS/altagrade.spec
  rm -rf /home/altaorg/domains/repo.altagrade.org/public_html/altagrade*
  rpmbuild -ba /root/rpmbuild/SPECS/altagrade.spec
  mv /root/rpmbuild/RPMS/noarch/* /home/altaorg/domains/repo.altagrade.org/public_html
  createrepo --update /home/altaorg/domains/repo.altagrade.org/public_html
elif [ $1 = "testrepo" ]; then
  rpmdev-bumpspec --comment="${2}" --userstring="AltaBot" /root/testrepo/SPECS/testrepo.spec
  rm -rf /home/altaorg/domains/testrepo.altagrade.org/public_html/testrepo*
  rpmbuild -ba /root/testrepo/SPECS/testrepo.spec --define "_topdir /root/testrepo" --buildroot /root/testrepo/BUILDROOT --dbpath /var/lib/rpm
  mv /root/testrepo/RPMS/noarch/* /home/altaorg/domains/testrepo.altagrade.org/public_html
  createrepo --update /home/altaorg/domains/testrepo.altagrade.org/public_html
else
  echo "Incorrect repo name";
  echo "Indicate either altagrade or testrepo as a reponame in the following format:";
  echo 'build rpm reponame "comment"';
  echo
  exit 1;
fi
 
exit
EOF
chmod 755 /usr/local/bin/buildrpm