Jeremy Katz wrote:
On Wed, 2008-10-29 at 22:49 +0100, Alan Pevec wrote:
to use default YUM config i.e. /etc/yum.conf
With this option you don't have to supply repo kickstart commands.

This makes it so that your images aren't reproducible without knowing
what was installed on the system which was building the images.  This
circumvents one of the single biggest things about livecd-tools --
reproducibility

Just knowing repo URLs doesn't help reproducibility - repo content can change.
--global-config was added for experiments running livecd-creator in 
mock/koji/brew
Mock adds repos from its config to /etc/yum.conf in the buildroot, and this, 
combined with exact koji repo ID, gets us real reproducibility.

Also add --cacheonly option to run entirely from YUM cache.

This could be okay, although what's the use case?  Also, one patch per
suggested change please.

Right, I'll do that. It should work like yum -C, the target use-case is to 
re-use mock yum_cache, where all packages from kickstart are pulled in by mock 
as BRs. See work-in-progress spec files, min-builder prepares buildroot and min 
is RPM wrapper for livecd ISO.
%{!?build_user: %define build_user mockbuild}

%{!?image_name: %define image_name min}
Summary: Image building setup for "%{image_name}" image
Name: %{image_name}-builder
Version: 0.0.3
Release: 1%{?dist}%{?extra_release}
License: GPLv2+
Group: Applications/System
BuildArch: noarch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
URL: http://ovirt.org/
Requires: selinux-policy-targeted
Requires: sudo

## %packages from %{image_name}.ks
# @core
# kernel
# hwdata
# dhclient
# openssh-clients
# openssh-server
# /usr/sbin/lokkit

Requires: kernel
Requires: hwdata
Requires: dhclient
Requires: openssh-clients
Requires: openssh-server
Requires: /usr/sbin/lokkit

# @core resolved:
#Group: Core
# Description: Smallest possible installation
# Mandatory Packages:
Requires: SysVinit
Requires: authconfig
Requires: basesystem
Requires: bash
Requires: coreutils
Requires: cpio
Requires: e2fsprogs
Requires: ed
Requires: file
Requires: filesystem
Requires: glibc
Requires: hdparm
Requires: initscripts
Requires: iproute
#Requires: iprutils
Requires: iputils
Requires: kbd
Requires: kudzu
Requires: libgcc
Requires: libhugetlbfs
Requires: libtermcap
Requires: mkinitrd
Requires: passwd
Requires: policycoreutils
Requires: prelink
Requires: procps
Requires: readline
Requires: redhat-logos
Requires: redhat-release
Requires: redhat-release-notes
Requires: rootfiles
Requires: rpm
Requires: selinux-policy-targeted
Requires: setools
Requires: setserial
Requires: setup
Requires: shadow-utils
Requires: sysklogd
Requires: termcap
Requires: util-linux
Requires: vim-minimal
# Default Packages:
#Requires: Deployment_Guide-en-US
## if arch ia64 ?
#Requires: elilo
#Requires: gnu-efi
#Requires: salinfo
## if arch ppc ?
#Requires: ppc64-utils
#Requires: yaboot
## if arch s390 ?
#Requires: s390utils
Requires: grub
Requires: sysfsutils
Requires: udftools
# Optional Packages:
#   ecryptfs-utils
#   rsyslog

#

#  disable debuginfo, makes no sense for boot image and it is created empty 
anyway
%define debug_package %{nil}

%description
Prepare chroot for building the "%{image_name}" image.
Adds %{build_user} to sudoers and pulls in all packages listed in image 
kickstart.

%prep

%build

%post
echo "%{build_user}     ALL=(ALL)       NOPASSWD: ALL" >> /etc/sudoers
# mock has minimal /dev, add loop device nodes
for i in $(seq 0 7); do
  mknod /dev/loop$i b 7 $i
done

if test ! -f /selinux/enforce ; then
  # FROM imgcreate.creator.ImageCreator.__create_selinuxfs()
  # enforce=0 tells the chroot selinux is not enforcing
  # policyvers=999 tell the chroot to make the highest version of policy it can
  mkdir -p /selinux
  printf 0 > /selinux/enforce
  printf 999 > /selinux/policyvers
  printf 1 > /selinux/mls
  # make /load -> /dev/null so chroot policy loads don't hurt anything
  mknod --mode=0666 /selinux/load c 1 3
fi

%install
%{__rm} -rf %{buildroot}
mkdir %{buildroot}

%clean
%{__rm} -rf %{buildroot}

%files
%defattr(-,root,root,-)

%changelog
* Wed Oct 29 2008 Alan Pevec <[EMAIL PROTECTED]> 0.0.3-0
- prepare for livecd-creator --global-config --cacheonly

* Tue Oct 07 2008 Alan Pevec <[EMAIL PROTECTED]> 0.0.2-0
- fake selinuxfs from imgcreate.creator.ImageCreator.__create_selinuxfs()

* Mon Oct 06 2008 Alan Pevec <[EMAIL PROTECTED]> 0.0.1-0
- Initial build.
Summary: Minimal LiveCD boot image RPM for Mock-ing around
Name: min
Version: 0.0.3
Release: 0%{?dist}%{?extra_release}
Source0: %{name}.ks
License: GPLv2+
Group: Applications/System
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
URL: http://ovirt.org/
BuildRequires: livecd-tools
BuildRequires: min-builder
# XXX missing livecd-tools deps
BuildRequires: libselinux-python, rhpl
# XXX missing rhpl deps
BuildRequires: dbus-python

%define app_root %{_datadir}/%{name}

#  disable debuginfo, makes no sense for boot image and it is created empty 
anyway
%define debug_package %{nil}

%description
The minimal ISO boot image for testing.
At the moment, this RPM just packages prebuilt ISO.

%prep
%setup -cT
cp %{SOURCE0} .

%build
##cd %{name}-%{version}
# min-builder %post adds mockbuild to sudoers
# and pulls all packages from %{name}.ks into YUM cache
sudo runuser - -c "cd $(pwd) &&
              livecd-creator -c %{name}.ks -f %{name} \
               --global-config --skip-minimize \
               --cache=/var/cache/yum"
# --cacheonly fails, missing in mock yum_cache:
#   REPOID/comps*xml REPOID/headers/*.hdr
# but even w/o --cacheonly at least packages/*.rpm from yum_cache are used

%install
%{__rm} -rf %{buildroot}
mkdir %{buildroot}
%{__install} -d -m0755 %{buildroot}%{app_root}
%{__install} -p -m0644 %{name}.iso %{buildroot}%{app_root}

%clean
%{__rm} -rf %{buildroot}

%files
%defattr(-,root,root,-)
%{app_root}/%{name}.iso

%changelog
* Mon Oct 27 2008 Alan Pevec <[EMAIL PROTECTED]> 0.0.3-0
- use livecd-creator --global-config --cacheonly

* Tue Oct 07 2008 Alan Pevec <[EMAIL PROTECTED]> 0.0.2-0
- enable selinux in image

* Mon Oct 06 2008 Alan Pevec <[EMAIL PROTECTED]> 0.0.1-0
- Initial build.
lang en_US.UTF-8
keyboard us
timezone UTC
auth --useshadow --enablemd5
selinux --enforcing
firewall --disabled
part / --size 1024
bootloader --append="console=ttyS0,115200n8 console=tty0"
rootpw mintest

%packages
@core
kernel
hwdata
dhclient
openssh-clients
openssh-server

/usr/sbin/lokkit
--
Fedora-livecd-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/fedora-livecd-list

Reply via email to