diff --git a/.gitignore b/.gitignore index 6102b05..3cb01e8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ -/0install-*.tbz -/0install-*.tbz.sig +/0install-2.6.1.tar.bz2 +/0install-2.9.1.tar.bz2 +/0install-2.10.tar.bz2 +/0install-2.11.tar.bz2 +/0install-2.12.1.tar.bz2 diff --git a/0install-2.10-makefile.patch b/0install-2.10-makefile.patch new file mode 100644 index 0000000..f72ca3f --- /dev/null +++ b/0install-2.10-makefile.patch @@ -0,0 +1,23 @@ +diff -up ./Makefile.translation ./Makefile +--- ./Makefile.translation 2015-10-05 00:41:05.000000000 +1000 ++++ ./Makefile 2015-10-06 17:06:42.633307106 +1000 +@@ -54,7 +54,13 @@ default: all + [ -d "${DISTDIR}" ] || mkdir "${DISTDIR}" + $(MAKE) -C "${BUILDDIR}" -f "${SRCDIR}/Makefile.build" "$@" SRCDIR="${SRCDIR}" BUILDDIR="${BUILDDIR}" DISTDIR="${DISTDIR}" DESTDIR="${DESTDIR}" + ++po-files=$(shell find . -name '*.po') ++mo-files=$(subst po,mo,$(po-files)) ++update-mo: ${mo-files} ++ ++ + share/locale/zero-install.pot: $(SH) ++ touch $@ + xgettext --sort-by-file --language=Shell -j --output=$@ $(SH) + + update-po: share/locale/zero-install.pot +@@ -73,4 +79,4 @@ clean: + rm -rf build + rm -rf dist + +-.PHONY: update-po check-po clean default ++.PHONY: update-po update-mo check-po clean default diff --git a/0install-2.6-no-tests.patch b/0install-2.6-no-tests.patch new file mode 100644 index 0000000..d5aeaa7 --- /dev/null +++ b/0install-2.6-no-tests.patch @@ -0,0 +1,11 @@ +--- 0install-2.6/ocaml/Makefile.no-tests 2014-01-20 01:49:14.000000000 +0700 ++++ 0install-2.6/ocaml/Makefile 2014-01-20 19:23:48.945070803 +0700 +@@ -11,7 +11,7 @@ + + .PHONY: all ocaml doc clean tags test + +-all: build_dir ocaml test ++all: build_dir ocaml + + build_dir: + [ -d "${OCAML_BUILDDIR}" ] || mkdir -p "${OCAML_BUILDDIR}" diff --git a/0install-2.9.1-lib64.patch b/0install-2.9.1-lib64.patch new file mode 100644 index 0000000..76b11a4 --- /dev/null +++ b/0install-2.9.1-lib64.patch @@ -0,0 +1,34 @@ +diff -up ./install.sh.src.orig ./install.sh.src +--- ./install.sh.src.orig 2015-09-02 14:39:32.011146045 +1000 ++++ ./install.sh.src 2015-09-02 14:40:31.756148173 +1000 +@@ -76,7 +76,7 @@ install -d "$DESTDIR${PREFIX_SHARE}/bash + install -d "$DESTDIR${PREFIX_SHARE}/fish/completions" + install -d "$DESTDIR${PREFIX_SHARE}/doc/0install" + install -d "$DESTDIR${PREFIX}/${ZSHFUNCTIONS}" +-install -d "$DESTDIR${PREFIX}/lib/0install.net" ++install -d "$DESTDIR${PREFIX}/lib64/0install.net" + + install -m 0644 ${DOCS} "$DESTDIR${PREFIX_SHARE}/doc/0install/" + install -m 0644 ${MANPAGES} "$DESTDIR${PREFIX_MAN}/man1/" +@@ -93,7 +93,7 @@ install -m 0755 share/0install.net/unlzm + install -m 0755 share/0install.net/unxz "$DESTDIR${PREFIX_SHARE}/0install.net/" + + if [ -n "$PLUGINS" ]; then +- install -m 0644 $PLUGINS "$DESTDIR${PREFIX}/lib/0install.net/" ++ install -m 0644 $PLUGINS "$DESTDIR${PREFIX}/lib64/0install.net/" + fi + + for size in 24x24 48x48 128x128 scalable; do \ +diff -up ./ocaml/Makefile.orig ./ocaml/Makefile +diff -up ./ocaml/zeroinstall/gui.ml.orig ./ocaml/zeroinstall/gui.ml +--- ./ocaml/zeroinstall/gui.ml.orig 2015-09-02 14:32:01.260129993 +1000 ++++ ./ocaml/zeroinstall/gui.ml 2015-09-02 14:34:51.351136051 +1000 +@@ -337,7 +337,7 @@ let try_get_gui config ~use_gui = + if system#file_exists plugin_path then Some plugin_path else None in + + let plugin_path = +- let sys_lib = Filename.dirname bindir +/ "lib" in ++ let sys_lib = Filename.dirname bindir +/ "lib64" in + U.first_match check_plugin_dir [ + (* Was 0install installed with opam? *) + sys_lib +/ "0install"; diff --git a/0install.spec b/0install.spec index f0f7838..73fcc22 100644 --- a/0install.spec +++ b/0install.spec @@ -1,85 +1,238 @@ -# PACKAGING NOTE: We do not currently build either the command-line tool or the -# GUI interface. They depend on obus (https://github.com/ocaml-community/obus) -# which cannot be built for the version of OCaml currently in Fedora. For now -# we only build the solver, which is the only part needed by opam anyway. - -%global giturl https://github.com/0install/0install - +%global cache_dir /var/cache/0install.net +%global gettext_domain_name zero-install Name: 0install -Version: 2.18 -Release: %autorelease -Summary: Decentralized cross-distribution software installation system +Version: 2.12.1 +Release: 6%{?dist} +Summary: A decentralized cross-distribution software installation system -# LGPL-2.1-or-later: the project as a whole -# CC0-1.0: share/metainfo/0install.appdata.xml -# LicenseRef-Fedora-Public-Domain: src/sample_client.py -License: LGPL-2.1-or-later -SourceLicense: %{license} AND CC0-1.0 AND LicenseRef-Fedora-Public-Domain -URL: https://0install.net/ -VCS: git:%{giturl}.git -Source0: %{giturl}/releases/download/v%{version}/%{name}-%{version}.tbz -Source1: %{giturl}/releases/download/v%{version}/%{name}-%{version}.tbz.sig -# Key for Thomas Leonard -Source2: 5DD58D70899C454A966D6A5175133C8F94F6E0CC.gpg +License: LGPLv2+ +URL: http://0install.net +Source0: http://downloads.sf.net/project/zero-install/%{name}/%{version}/%{name}-%{version}.tar.bz2 +# Temporarily disable tests, some failures within mock env +Patch0: %{name}-2.6-no-tests.patch +# multilib: use lib64 instead of lib on 64-bit arches +Patch1: %{name}-2.9.1-lib64.patch +Patch2: %{name}-2.10-makefile.patch -# OCaml packages not built on i686 since OCaml 5 / Fedora 39. -ExcludeArch: %{ix86} +BuildRequires: ocaml >= 4.02.3 +BuildRequires: ocaml-biniou-devel +BuildRequires: ocaml-easy-format-devel +BuildRequires: ocaml-findlib +BuildRequires: ocaml-camlp4-devel +BuildRequires: ocaml-curl-devel >= 0.7.9 +BuildRequires: ocaml-extlib-devel +BuildRequires: ocaml-lablgtk-devel +BuildRequires: ocaml-lwt-devel +# not packaged yet, optional +# BuildRequires: ocaml-obus-devel +BuildRequires: ocaml-ocamlbuild +BuildRequires: ocaml-ounit-devel +BuildRequires: ocaml-ssl-devel +BuildRequires: ocaml-xmlm-devel +BuildRequires: ocaml-yojson-devel +BuildRequires: glib2-devel +BuildRequires: libev-devel +BuildRequires: gettext +BuildRequires: desktop-file-utils -BuildRequires: gnupg2 -BuildRequires: ocaml >= 4.08 -BuildRequires: ocaml-dune >= 2.5 -BuildRequires: ocaml-ounit2-devel +Requires(pre): shadow-utils -%global _desc %{expand:Zero Install is a decentralized cross-distribution software installation -system. Other features include full support for shared libraries (with a SAT -solver for dependency resolution), sharing between users, and integration with -native platform package managers. It supports both binary and source -packages, and works on Linux, macOS, Unix and Windows systems.} +# for icons +Requires: hicolor-icon-theme + +# ocaml-ext-devel is missing +ExcludeArch: ppc64 ppc64le + +%if 0%{?epel} +# Explict require ocaml-react-devel, otherwise +# ocamlfind: Package `lwt.react' not found +BuildRequires: ocaml-react-devel +%endif + + +Provides: zeroinstall-injector = %{version}-%{release} +Obsoletes: zeroinstall-injector < 2.4-1%{?dist} %description -%_desc +Zero Install is a decentralized cross-distribution software +installation system available under the LGPL. It allows software +developers to publish programs directly from their own web-sites, +while supporting features familiar from centralized distribution +repositories such as shared libraries, automatic updates and digital +signatures. It is intended to complement, rather than replace, the +operating system's package management. 0install packages never +interfere with those provided by the distribution. -%package -n ocaml-0install-solver -Summary: Package dependency solver +0install does not define a new packaging format; unmodified tarballs +or zip archives can be used. Instead, it defines an XML metadata +format to describe these packages and the dependencies between them. A +single metadata file can be used on multiple platforms (e.g. Ubuntu, +Debian, Fedora, openSUSE, Mac OS X and Windows), assuming binary or +source archives are available that work on those systems. -%description -n ocaml-0install-solver -%_desc +0install also has some interesting features not often found in +traditional package managers. For example, while it will share +libraries whenever possible, it can always install multiple versions +of a package in parallel when there are conflicting +requirements. Installation is always side-effect-free (each package is +unpacked to its own directory and will not touch shared directories +such as /usr/bin), making it ideal for use with sandboxing +technologies and virtualization. -This package contains a package dependency resolver based on a SAT solver. -This was originally written for the 0install package manager, but is now -generic and is also used as a solver backend for opam. +The XML file describing the program's requirements can also be +included in a source-code repository, allowing full dependency +handling for unreleased developer versions. For example, a user can +clone a Git repository and build and test the program, automatically +downloading newer versions of libraries where necessary, without +interfering with the versions of those libraries installed by their +distribution, which continue to be used for other software. -The SAT solver is based on MiniSat (http://minisat.se/Papers.html) and the -application to package management is based on OPIUM (Optimal Package -Install/Uninstall Manager). 0install-solver uses a (novel?) strategy to find -the optimal solution extremely quickly (even for a SAT-based solver). - -%package -n ocaml-0install-solver-devel -Summary: Development files for %{name}-solver -Requires: ocaml-0install-solver%{?_isa} = %{version}-%{release} - -%description -n ocaml-0install-solver-devel -The %{name}-solver-devel package contains libraries and signature files for -developing applications that use %{name}-solver. %prep -%{gpgverify} --data=%{SOURCE0} --signature=%{SOURCE1} --keyring=%{SOURCE2} -%autosetup +%setup -q +%patch0 -p1 -b .no-tests +%if "%{_lib}" == "lib64" +%patch1 -p0 -b .lib64 +%endif +%patch2 -p0 -b .translation + +## Remove Utilities from .desktop file, so it will use Settings as main category +sed -i -e 's/Utility;//' share/applications/%{name}.desktop %build -%dune_build -p 0install-solver +make +make update-mo + %install -%dune_install 0install-solver +make install_system DESTDIR=$RPM_BUILD_ROOT -%check -%dune_check -p 0install-solver +# fix permission of shared objects +chmod +x $RPM_BUILD_ROOT%{_libdir}/0install.net/gui_gtk.cmxs -%files -n ocaml-0install-solver -f .ofiles -%doc CHANGES.md README.md -%license COPYING +mkdir -p "$RPM_BUILD_ROOT%{cache_dir}/implementations" + +desktop-file-validate \ + $RPM_BUILD_ROOT%{_datadir}/applications/0install.desktop + +## Copy mo files +mkdir -p %{buildroot}%{_datadir}/locale +cp -R build/share/locale/* %{buildroot}%{_datadir}/locale + +%find_lang %{gettext_domain_name} + +## Remove excess doc +rm -fr %{buildroot}/usr/share/doc/%{name} + +%pre +# Add the "zeroinst" user. +# This is not used by default, but is required if you want to +# set up sharing of downloads later. +getent group zeroinst >/dev/null || groupadd -r zeroinst +getent passwd zeroinst >/dev/null || \ +useradd -r -g zeroinst -d %{cache_dir} -s /sbin/nologin \ + -c "Zero Install shared cache" zeroinst +exit 0 + + +%files -f %{gettext_domain_name}.lang +%doc COPYING README.md +%{_bindir}/0* +%{_libdir}/0install.net +%{_datadir}/0install.net +%{_datadir}/appdata/0install* +%{_datadir}/applications/0install.desktop +%{_datadir}/icons/hicolor/*/apps/zeroinstall.* +%dir %{_datadir}/bash-completion +%dir %{_datadir}/bash-completion/completions +%{_datadir}/bash-completion/completions/0* +%dir %{_datadir}/fish +%dir %{_datadir}/fish/completions +%{_datadir}/fish/completions/0*.fish +%dir %{_datadir}/zsh +%dir %{_datadir}/zsh/site-functions +%{_datadir}/zsh/site-functions/_0* +%{_mandir}/man1/0* +%dir %{cache_dir} +%attr(755,zeroinst,zeroinst) %{cache_dir}/implementations -%files -n ocaml-0install-solver-devel -f .ofiles-devel %changelog -%autochangelog +* Thu Jul 12 2018 Fedora Release Engineering - 2.12.1-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed Feb 07 2018 Fedora Release Engineering - 2.12.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Sun Jan 07 2018 Igor Gnatenko - 2.12.1-4 +- Remove obsolete scriptlets + +* Wed Aug 02 2017 Fedora Release Engineering - 2.12.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 2.12.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Wed Mar 29 2017 Ding-Yi Chen - 2.12.1-1 +- Drop support for OCaml 4.01 +- Work around buggy GnuPG 2.1.16 +- Update dependencies + +* Fri Feb 10 2017 Fedora Release Engineering - 2.11-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Wed Nov 09 2016 Dan Horák - 2.11-3 +- rebuild for s390x codegen bug + +* Mon Nov 07 2016 Richard W.M. Jones - 2.11-2 +- Rebuild for OCaml 4.04.0. +- Add explicit dependency on ocamlbuild. + +* Mon Feb 22 2016 Ding-Yi Chen - 2.11-1 +- Upstream update to 2.11. +- Exclude ppc64le and ppc + +* Wed Feb 03 2016 Fedora Release Engineering - 2.10-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Oct 06 2015 Ding-Yi Chen - 2.10-2 +- Remove Utilities from .desktop file, so it will use Settings as main category. + +* Tue Oct 06 2015 Ding-Yi Chen - 2.10-1 +- Upstream update to 2.10. + +* Thu Oct 01 2015 Ding-Yi Chen - 2.9.1-1 +- Upstream update to 2.9.1. +- Add buildrequires: ocaml-react-devel for EPEL. +- Exclude ppc64 for EPEL, as the build dependency ocaml-findlib-devel is not available on it. + +* Tue Jun 16 2015 Fedora Release Engineering - 2.6.1-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Fri Aug 15 2014 Fedora Release Engineering - 2.6.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Fri Jun 06 2014 Dennis Gilmore - 2.6.1-4 +- Remove the no longer needed ExclusiveArch line the macro used has been removed + +* Fri Jun 06 2014 Fedora Release Engineering - 2.6.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Sat Feb 15 2014 Michel Salim - 2.6.1-2 +- Spec clean-up +- Fix permission of shared objects so they get properly handled when + generating debuginfo + +* Fri Feb 14 2014 Michel Salim - 2.6.1-1 +- Update to 2.6.1 +- Install to proper libdir depending on the actual architecture +- Fix ExclusiveArch, build requirements and obsoletion +- Fix license tag +- Yank old changelog from zero-install + +* Mon Jan 20 2014 Michel Salim - 2.6-1 +- Update to 2.6 + +* Mon Jan 20 2014 Michel Salim - 2.5.1-1 +- Rename package to 0install +- Update to 2.5.1 diff --git a/5DD58D70899C454A966D6A5175133C8F94F6E0CC.gpg b/5DD58D70899C454A966D6A5175133C8F94F6E0CC.gpg deleted file mode 100644 index 736c830..0000000 Binary files a/5DD58D70899C454A966D6A5175133C8F94F6E0CC.gpg and /dev/null differ diff --git a/README.md b/README.md deleted file mode 100644 index d117944..0000000 --- a/README.md +++ /dev/null @@ -1,6 +0,0 @@ -[Zero Install](https://0install.net/) is a decentralized cross-distribution -software installation system. Other features include full support for shared -libraries (with a SAT solver for dependency resolution), sharing between -users, and integration with native platform package managers. It supports -both binary and source packages, and works on Linux, macOS, Unix and Windows -systems. diff --git a/changelog b/changelog deleted file mode 100644 index baea8df..0000000 --- a/changelog +++ /dev/null @@ -1,84 +0,0 @@ -* Wed Jul 24 2019 Fedora Release Engineering - 2.12.1-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Thu Jan 31 2019 Fedora Release Engineering - 2.12.1-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Thu Jul 12 2018 Fedora Release Engineering - 2.12.1-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Wed Feb 07 2018 Fedora Release Engineering - 2.12.1-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Sun Jan 07 2018 Igor Gnatenko - 2.12.1-4 -- Remove obsolete scriptlets - -* Wed Aug 02 2017 Fedora Release Engineering - 2.12.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Wed Jul 26 2017 Fedora Release Engineering - 2.12.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Wed Mar 29 2017 Ding-Yi Chen - 2.12.1-1 -- Drop support for OCaml 4.01 -- Work around buggy GnuPG 2.1.16 -- Update dependencies - -* Fri Feb 10 2017 Fedora Release Engineering - 2.11-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Wed Nov 09 2016 Dan Horák - 2.11-3 -- rebuild for s390x codegen bug - -* Mon Nov 07 2016 Richard W.M. Jones - 2.11-2 -- Rebuild for OCaml 4.04.0. -- Add explicit dependency on ocamlbuild. - -* Mon Feb 22 2016 Ding-Yi Chen - 2.11-1 -- Upstream update to 2.11. -- Exclude ppc64le and ppc - -* Wed Feb 03 2016 Fedora Release Engineering - 2.10-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Tue Oct 06 2015 Ding-Yi Chen - 2.10-2 -- Remove Utilities from .desktop file, so it will use Settings as main category. - -* Tue Oct 06 2015 Ding-Yi Chen - 2.10-1 -- Upstream update to 2.10. - -* Thu Oct 01 2015 Ding-Yi Chen - 2.9.1-1 -- Upstream update to 2.9.1. -- Add buildrequires: ocaml-react-devel for EPEL. -- Exclude ppc64 for EPEL, as the build dependency ocaml-findlib-devel is not available on it. - -* Tue Jun 16 2015 Fedora Release Engineering - 2.6.1-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Fri Aug 15 2014 Fedora Release Engineering - 2.6.1-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - -* Fri Jun 06 2014 Dennis Gilmore - 2.6.1-4 -- Remove the no longer needed ExclusiveArch line the macro used has been removed - -* Fri Jun 06 2014 Fedora Release Engineering - 2.6.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Sat Feb 15 2014 Michel Salim - 2.6.1-2 -- Spec clean-up -- Fix permission of shared objects so they get properly handled when - generating debuginfo - -* Fri Feb 14 2014 Michel Salim - 2.6.1-1 -- Update to 2.6.1 -- Install to proper libdir depending on the actual architecture -- Fix ExclusiveArch, build requirements and obsoletion -- Fix license tag -- Yank old changelog from zero-install - -* Mon Jan 20 2014 Michel Salim - 2.6-1 -- Update to 2.6 - -* Mon Jan 20 2014 Michel Salim - 2.5.1-1 -- Rename package to 0install -- Update to 2.5.1 diff --git a/sources b/sources index fd6463a..abbcb01 100644 --- a/sources +++ b/sources @@ -1,2 +1 @@ -SHA512 (0install-2.18.tbz) = 6d4734754951fad9caad5d876a1301e283bdd77a080d6601d57b21c540a30a616b18f664cbd4f86748c90de41cf3ef54f3a883fd75f638abbe3630a0320e4a7f -SHA512 (0install-2.18.tbz.sig) = bb323a22f533daf3c561439f90fe29f42aae11b10c2f10c89ce6f8819e0d26139430167daa612dd6f8eb2854163c8596f5dba202f4c464fada3a686da2677a56 +SHA512 (0install-2.12.1.tar.bz2) = 314ecbff2985171bf9dd854166c0b6faf90526a0844e8861cafd7082919aa91d4009e3fad84f06956373997637c927e836aea8093c17b88358283bbc45ad763d