openSUSE Commits
Threads by month
- ----- 2025 -----
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
February 2017
- 1 participants
- 1918 discussions
Hello community,
here is the log from the commit of package ghc-warp-tls for openSUSE:Factory checked in at 2017-02-22 13:53:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-warp-tls (Old)
and /work/SRC/openSUSE:Factory/.ghc-warp-tls.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-warp-tls"
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-warp-tls/ghc-warp-tls.changes 2016-07-20 09:20:18.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-warp-tls.new/ghc-warp-tls.changes 2017-02-22 13:53:41.354995817 +0100
@@ -1,0 +2,5 @@
+Mon Jan 30 09:29:32 UTC 2017 - psimons(a)suse.com
+
+- Update to version 3.2.3 with cabal2obs.
+
+-------------------------------------------------------------------
Old:
----
warp-tls-3.2.2.tar.gz
New:
----
warp-tls-3.2.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-warp-tls.spec ++++++
--- /var/tmp/diff_new_pack.XIrVL4/_old 2017-02-22 13:53:41.834927524 +0100
+++ /var/tmp/diff_new_pack.XIrVL4/_new 2017-02-22 13:53:41.838926954 +0100
@@ -1,7 +1,7 @@
#
# spec file for package ghc-warp-tls
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,15 +18,14 @@
%global pkg_name warp-tls
Name: ghc-%{pkg_name}
-Version: 3.2.2
+Version: 3.2.3
Release: 0
Summary: HTTP over TLS support for Warp via the TLS package
License: MIT
-Group: System/Libraries
+Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
BuildRequires: ghc-Cabal-devel
-# Begin cabal-rpm deps:
BuildRequires: ghc-bytestring-devel
BuildRequires: ghc-cryptonite-devel
BuildRequires: ghc-data-default-class-devel
@@ -37,12 +36,11 @@
BuildRequires: ghc-wai-devel
BuildRequires: ghc-warp-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-# End cabal-rpm deps
%description
-Support for SSL is now obsoleted. HTTP/2 can be negotiated by ALPN.
-API docs and the README are available at
-<http://www.stackage.org/package/warp-tls>.
+SSLv1 and SSLv2 are obsoleted by IETF. We should use TLS 1.2 (or TLS 1.1 or TLS
+1.0 if necessary). HTTP/2 can be negotiated by ALPN. API docs and the README
+are available at <http://www.stackage.org/package/warp-tls>.
%package devel
Summary: Haskell %{pkg_name} library development files
@@ -58,15 +56,12 @@
%prep
%setup -q -n %{pkg_name}-%{version}
-
%build
%ghc_lib_build
-
%install
%ghc_lib_install
-
%post devel
%ghc_pkg_recache
++++++ warp-tls-3.2.2.tar.gz -> warp-tls-3.2.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/warp-tls-3.2.2/Network/Wai/Handler/WarpTLS.hs new/warp-tls-3.2.3/Network/Wai/Handler/WarpTLS.hs
--- old/warp-tls-3.2.2/Network/Wai/Handler/WarpTLS.hs 2016-06-22 07:54:17.000000000 +0200
+++ new/warp-tls-3.2.3/Network/Wai/Handler/WarpTLS.hs 2017-01-27 04:25:50.000000000 +0100
@@ -55,7 +55,7 @@
import qualified Data.IORef as I
import Data.Streaming.Network (bindPortTCP, safeRecv)
import Data.Typeable (Typeable)
-import Network.Socket (Socket, sClose, withSocketsDo, SockAddr, accept)
+import Network.Socket (Socket, close, withSocketsDo, SockAddr, accept)
import Network.Socket.ByteString (sendAll)
import qualified Network.TLS as TLS
import qualified Crypto.PubKey.DH as DH
@@ -234,7 +234,7 @@
runTLS tset set app = withSocketsDo $
bracket
(bindPortTCP (getPort set) (getHost set))
- sClose
+ close
(\sock -> runTLSSocket tset set sock app)
----------------------------------------------------------------
@@ -309,7 +309,7 @@
return (mkConn tlsset s params, sa)
mkConn :: TLS.TLSParams params => TLSSettings -> Socket -> params -> IO (Connection, Transport)
-mkConn tlsset s params = switch `onException` sClose s
+mkConn tlsset s params = switch `onException` close s
where
switch = do
firstBS <- safeRecv s 4096
@@ -334,7 +334,7 @@
where
backend recvN = TLS.Backend {
TLS.backendFlush = return ()
- , TLS.backendClose = sClose s
+ , TLS.backendClose = close s
, TLS.backendSend = sendAll' s
, TLS.backendRecv = recvN
}
@@ -344,7 +344,8 @@
connSendMany = TLS.sendData ctx . L.fromChunks
, connSendAll = sendall
, connSendFile = sendfile
- , connClose = close
+ , connClose = close'
+ , connFree = freeBuffer writeBuf
, connRecv = recv ref
, connRecvBuf = recvBuf ref
, connWriteBuffer = writeBuf
@@ -355,9 +356,8 @@
sendfile fid offset len hook headers =
readSendFile writeBuf bufferSize sendall fid offset len hook headers
- close = freeBuffer writeBuf `finally`
- void (tryIO $ TLS.bye ctx) `finally`
- TLS.contextClose ctx
+ close' = void (tryIO $ TLS.bye ctx) `finally`
+ TLS.contextClose ctx
-- TLS version of recv with a cache for leftover input data.
-- The cache is shared with recvBuf.
@@ -463,7 +463,7 @@
\r\nConnection: Upgrade\
\r\nContent-Type: text/plain\r\n\r\n"
mapM_ (sendAll s) $ L.toChunks lbs
- sClose s
+ close s
throwIO InsecureConnectionDenied
----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/warp-tls-3.2.2/warp-tls.cabal new/warp-tls-3.2.3/warp-tls.cabal
--- old/warp-tls-3.2.2/warp-tls.cabal 2016-06-22 07:54:17.000000000 +0200
+++ new/warp-tls-3.2.3/warp-tls.cabal 2017-01-27 04:25:50.000000000 +0100
@@ -1,5 +1,5 @@
Name: warp-tls
-Version: 3.2.2
+Version: 3.2.3
Synopsis: HTTP over TLS support for Warp via the TLS package
License: MIT
License-file: LICENSE
@@ -10,7 +10,8 @@
Build-Type: Simple
Cabal-Version: >=1.6
Stability: Stable
-description: Support for SSL is now obsoleted.
+description: SSLv1 and SSLv2 are obsoleted by IETF.
+ We should use TLS 1.2 (or TLS 1.1 or TLS 1.0 if necessary).
HTTP/2 can be negotiated by ALPN.
API docs and the README are available at
<http://www.stackage.org/package/warp-tls>.
@@ -20,7 +21,7 @@
Build-Depends: base >= 4 && < 5
, bytestring >= 0.9
, wai >= 3.2 && < 3.3
- , warp >= 3.2 && < 3.3
+ , warp >= 3.2.10 && < 3.3
, data-default-class >= 0.0.1
, tls >= 1.3.5
, cryptonite >= 0.12
1
0
Hello community,
here is the log from the commit of package ghc-lifted-async for openSUSE:Factory checked in at 2017-02-22 13:53:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-lifted-async (Old)
and /work/SRC/openSUSE:Factory/.ghc-lifted-async.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-lifted-async"
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-lifted-async/ghc-lifted-async.changes 2017-02-03 17:39:20.526765217 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-lifted-async.new/ghc-lifted-async.changes 2017-02-22 13:53:34.280002576 +0100
@@ -1,0 +2,5 @@
+Mon Jan 30 09:26:46 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.9.1.1 with cabal2obs.
+
+-------------------------------------------------------------------
Old:
----
lifted-async-0.9.1.tar.gz
New:
----
lifted-async-0.9.1.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-lifted-async.spec ++++++
--- /var/tmp/diff_new_pack.nojb9c/_old 2017-02-22 13:53:34.703942250 +0100
+++ /var/tmp/diff_new_pack.nojb9c/_new 2017-02-22 13:53:34.703942250 +0100
@@ -19,7 +19,7 @@
%global pkg_name lifted-async
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 0.9.1
+Version: 0.9.1.1
Release: 0
Summary: Run lifted IO operations asynchronously and wait for their results
License: BSD-3-Clause
++++++ lifted-async-0.9.1.tar.gz -> lifted-async-0.9.1.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lifted-async-0.9.1/CHANGELOG.md new/lifted-async-0.9.1.1/CHANGELOG.md
--- old/lifted-async-0.9.1/CHANGELOG.md 2017-01-13 00:57:11.000000000 +0100
+++ new/lifted-async-0.9.1.1/CHANGELOG.md 2017-01-26 07:57:22.000000000 +0100
@@ -1,3 +1,11 @@
+## v0.9.1.1 - 2017-01-26
+
+* Relax upper version bound for constraints
+
+## v0.9.1 - 2017-01-13
+
+* Add (for|map)Concurrently_ (#21)
+
## v0.9.0 - 2016-05-22
* Leverage `StM m a ~ a` in the `Safe` module for faster `wait`/`poll`/`race`/`concurrently`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lifted-async-0.9.1/README.md new/lifted-async-0.9.1.1/README.md
--- old/lifted-async-0.9.1/README.md 2017-01-13 00:57:11.000000000 +0100
+++ new/lifted-async-0.9.1.1/README.md 2017-01-26 07:57:22.000000000 +0100
@@ -1,7 +1,9 @@
lifted-async
==========
+[![Hackage](https://img.shields.io/hackage/v/lifted-async.svg)](https://hackage.haskell.org/package/lifted-async)
+[![Hackage-Deps](https://img.shields.io/hackage-deps/v/lifted-async.svg)](http://packdeps.haskellers.com/feed?needle=lifted-async)
+[![lifted-async on Stackage LTS 3](http://stackage.org/package/lifted-async/badge/lts)](http://stackage.org…
[![Build Status](https://secure.travis-ci.org/maoe/lifted-async.png)](http://travis-…
-[![Coverage Status](https://coveralls.io/repos/maoe/lifted-async/badge.png)](https://coveralls.io/r/maoe/lifted-async)
[![Gitter chat](https://badges.gitter.im/maoe/lifted-async.png)](https://gitter.im/maoe/lifted-async)
This package provides IO operations from [async](http://hackage.haskell.org/package/async) package lifted to any instance of `MonadBase` or `MonadBaseControl` from [monad-control](http://hackage.haskell.org/package/monad-control) package.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lifted-async-0.9.1/lifted-async.cabal new/lifted-async-0.9.1.1/lifted-async.cabal
--- old/lifted-async-0.9.1/lifted-async.cabal 2017-01-13 00:57:11.000000000 +0100
+++ new/lifted-async-0.9.1.1/lifted-async.cabal 2017-01-26 07:57:22.000000000 +0100
@@ -1,5 +1,5 @@
name: lifted-async
-version: 0.9.1
+version: 0.9.1.1
synopsis: Run lifted IO operations asynchronously and wait for their results
homepage: https://github.com/maoe/lifted-async
bug-reports: https://github.com/maoe/lifted-async/issues
@@ -42,7 +42,7 @@
if flag(monad-control-1)
build-depends: monad-control == 1.0.*
if impl(ghc >= 7.8)
- build-depends: constraints >= 0.2 && < 0.9
+ build-depends: constraints >= 0.2 && < 0.10
else
build-depends: constraints >= 0.2 && < 0.6
else
@@ -115,5 +115,5 @@
source-repository this
type: git
- tag: v0.9.0
+ tag: v0.9.1.1
location: https://github.com/maoe/lifted-async.git
1
0
Hello community,
here is the log from the commit of package ghc-hedis for openSUSE:Factory checked in at 2017-02-22 13:53:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-hedis (Old)
and /work/SRC/openSUSE:Factory/.ghc-hedis.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-hedis"
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-hedis/ghc-hedis.changes 2017-01-12 15:49:40.559707601 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-hedis.new/ghc-hedis.changes 2017-02-22 13:53:26.525106098 +0100
@@ -1,0 +2,5 @@
+Mon Jan 30 09:35:03 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.9.7 with cabal2obs.
+
+-------------------------------------------------------------------
Old:
----
hedis-0.9.5.tar.gz
New:
----
hedis-0.9.7.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-hedis.spec ++++++
--- /var/tmp/diff_new_pack.SzWoKX/_old 2017-02-22 13:53:27.005037803 +0100
+++ /var/tmp/diff_new_pack.SzWoKX/_new 2017-02-22 13:53:27.005037803 +0100
@@ -1,7 +1,7 @@
#
# spec file for package ghc-hedis
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%global pkg_name hedis
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 0.9.5
+Version: 0.9.7
Release: 0
Summary: Client library for the Redis datastore: supports full command set, pipelining
License: BSD-3-Clause
++++++ hedis-0.9.5.tar.gz -> hedis-0.9.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hedis-0.9.5/CHANGELOG new/hedis-0.9.7/CHANGELOG
--- old/hedis-0.9.5/CHANGELOG 2016-08-07 13:27:59.000000000 +0200
+++ new/hedis-0.9.7/CHANGELOG 2017-01-28 16:03:00.000000000 +0100
@@ -1,5 +1,9 @@
# Changelog for Hedis
+## 0.9.7
+
+Expose returnDecode method of RedisCtx (see issue #83)
+
## 0.9.2
* Added multithreaded pub/sub message processing (see PR #77)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hedis-0.9.5/hedis.cabal new/hedis-0.9.7/hedis.cabal
--- old/hedis-0.9.5/hedis.cabal 2016-12-08 18:40:40.000000000 +0100
+++ new/hedis-0.9.7/hedis.cabal 2017-01-28 16:02:24.000000000 +0100
@@ -1,5 +1,5 @@
name: hedis
-version: 0.9.5
+version: 0.9.7
synopsis:
Client library for the Redis datastore: supports full command set,
pipelining.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hedis-0.9.5/src/Database/Redis/Commands.hs new/hedis-0.9.7/src/Database/Redis/Commands.hs
--- old/hedis-0.9.5/src/Database/Redis/Commands.hs 2016-10-05 22:14:41.000000000 +0200
+++ new/hedis-0.9.7/src/Database/Redis/Commands.hs 2017-01-25 22:06:21.000000000 +0100
@@ -213,7 +213,7 @@
mset, -- |Set multiple keys to multiple values (<http://redis.io/commands/mset>). Since Redis 1.0.1
msetnx, -- |Set multiple keys to multiple values, only if none of the keys exist (<http://redis.io/commands/msetnx>). Since Redis 1.0.1
psetex, -- |Set the value and expiration in milliseconds of a key (<http://redis.io/commands/psetex>). Since Redis 2.6.0
-Condition,
+Condition(..),
SetOpts(..),
set, -- |Set the string value of a key (<http://redis.io/commands/set>). The Redis command @SET@ is split up into 'set', 'setOpts'. Since Redis 1.0.0
setOpts, -- |Set the string value of a key (<http://redis.io/commands/set>). The Redis command @SET@ is split up into 'set', 'setOpts'. Since Redis 1.0.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hedis-0.9.5/src/Database/Redis/Core.hs new/hedis-0.9.7/src/Database/Redis/Core.hs
--- old/hedis-0.9.5/src/Database/Redis/Core.hs 2016-10-05 22:14:41.000000000 +0200
+++ new/hedis-0.9.7/src/Database/Redis/Core.hs 2017-01-28 15:32:38.000000000 +0100
@@ -41,7 +41,7 @@
data RedisEnv = Env { envConn :: PP.Connection, envLastReply :: IORef Reply }
-- |This class captures the following behaviour: In a context @m@, a command
--- will return it's result wrapped in a \"container\" of type @f@.
+-- will return its result wrapped in a \"container\" of type @f@.
--
-- Please refer to the Command Type Signatures section of this page for more
-- information.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hedis-0.9.5/src/Database/Redis.hs new/hedis-0.9.7/src/Database/Redis.hs
--- old/hedis-0.9.5/src/Database/Redis.hs 2016-10-05 22:14:41.000000000 +0200
+++ new/hedis-0.9.7/src/Database/Redis.hs 2017-01-28 16:01:07.000000000 +0100
@@ -139,7 +139,7 @@
-- * The Redis Monad
Redis(), runRedis,
unRedis, reRedis,
- RedisCtx(), MonadRedis(..),
+ RedisCtx(..), MonadRedis(..),
-- * Connection
Connection, connect, checkedConnect,
1
0
Hello community,
here is the log from the commit of package ghc-connection for openSUSE:Factory checked in at 2017-02-22 13:53:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-connection (Old)
and /work/SRC/openSUSE:Factory/.ghc-connection.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-connection"
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-connection/ghc-connection.changes 2016-08-25 09:57:58.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-connection.new/ghc-connection.changes 2017-02-22 13:53:20.593950111 +0100
@@ -1,0 +2,5 @@
+Mon Jan 30 09:26:45 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.2.7 with cabal2obs.
+
+-------------------------------------------------------------------
Old:
----
connection-0.2.6.tar.gz
New:
----
connection-0.2.7.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-connection.spec ++++++
--- /var/tmp/diff_new_pack.aoHTZc/_old 2017-02-22 13:53:21.001892060 +0100
+++ /var/tmp/diff_new_pack.aoHTZc/_new 2017-02-22 13:53:21.005891491 +0100
@@ -1,7 +1,7 @@
#
# spec file for package ghc-connection
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%global pkg_name connection
Name: ghc-%{pkg_name}
-Version: 0.2.6
+Version: 0.2.7
Release: 0
Summary: Simple and easy network connections API
License: BSD-3-Clause
++++++ connection-0.2.6.tar.gz -> connection-0.2.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/connection-0.2.6/Network/Connection.hs new/connection-0.2.7/Network/Connection.hs
--- old/connection-0.2.6/Network/Connection.hs 2016-08-12 08:23:14.000000000 +0200
+++ new/connection-0.2.7/Network/Connection.hs 2017-01-26 17:00:15.000000000 +0100
@@ -41,6 +41,7 @@
, connectionGetChunk
, connectionGetChunk'
, connectionGetLine
+ , connectionWaitForInput
, connectionPut
-- * TLS related operation
@@ -74,6 +75,7 @@
import qualified Data.ByteString.Lazy as L
import System.Environment
+import System.Timeout
import System.IO
import qualified Data.Map as M
@@ -170,8 +172,9 @@
-> IO Connection -- ^ The new established connection on success.
connectTo cg cParams = do
conFct <- getConFct (connectionUseSocks cParams)
- h <- conFct (connectionHostname cParams) (N.PortNumber $ connectionPort cParams)
- connectFromSocket cg h cParams
+ let doConnect = conFct (connectionHostname cParams) (N.PortNumber $ connectionPort cParams)
+ E.bracketOnError doConnect N.close $ \h->
+ connectFromSocket cg h cParams
where
getConFct Nothing = return resolve'
getConFct (Just (OtherProxy h p)) = return $ \_ _ -> resolve' h (N.PortNumber p)
@@ -273,6 +276,19 @@
connectionGetChunk' :: Connection -> (ByteString -> (a, ByteString)) -> IO a
connectionGetChunk' = connectionGetChunkBase "connectionGetChunk'"
+-- | Wait for input to become available on a connection.
+--
+-- As with 'hWaitForInput', the timeout value is given in milliseconds. If the
+-- timeout value is less than zero, then 'connectionWaitForInput' waits
+-- indefinitely.
+--
+-- Unlike 'hWaitForInput', this function does not do any decoding, so it
+-- returns true when there is /any/ available input, not just full characters.
+connectionWaitForInput :: Connection -> Int -> IO Bool
+connectionWaitForInput conn timeout_ms = maybe False (const True) <$> timeout timeout_ns tryGetChunk
+ where tryGetChunk = connectionGetChunkBase "connectionWaitForInput" conn $ \buf -> ((), buf)
+ timeout_ns = timeout_ms * 1000
+
connectionGetChunkBase :: String -> Connection -> (ByteString -> (a, ByteString)) -> IO a
connectionGetChunkBase loc conn f =
modifyMVar (connectionBuffer conn) $ \m ->
@@ -336,7 +352,7 @@
join $ connectionGetChunkBase loc conn $ \s ->
if B.null s
then (eofK, B.empty)
- else case B.breakByte 10 s of
+ else case B.break (== 10) s of
(a, b)
| B.null b -> (moreK a, B.empty)
| otherwise -> (doneK a, B.tail b)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/connection-0.2.6/connection.cabal new/connection-0.2.7/connection.cabal
--- old/connection-0.2.6/connection.cabal 2016-08-12 08:23:14.000000000 +0200
+++ new/connection-0.2.7/connection.cabal 2017-01-26 17:00:39.000000000 +0100
@@ -1,5 +1,5 @@
Name: connection
-Version: 0.2.6
+Version: 0.2.7
Description:
Simple network library for all your connection need.
.
1
0
Hello community,
here is the log from the commit of package apache2 for openSUSE:Factory checked in at 2017-02-22 13:52:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/apache2 (Old)
and /work/SRC/openSUSE:Factory/.apache2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "apache2"
Changes:
--------
--- /work/SRC/openSUSE:Factory/apache2/apache2.changes 2017-01-15 11:02:57.550888222 +0100
+++ /work/SRC/openSUSE:Factory/.apache2.new/apache2.changes 2017-02-22 13:52:36.116279612 +0100
@@ -1,0 +2,11 @@
+Tue Feb 21 07:22:19 UTC 2017 - pgajdos(a)suse.com
+
+- fix caching of forward proxy
+ + httpd-cache-forward-http-proxy.patch
+
+-------------------------------------------------------------------
+Sat Feb 18 17:49:58 UTC 2017 - kukuk(a)suse.com
+
+- Don't require insserv if we don't need it.
+
+-------------------------------------------------------------------
New:
----
httpd-cache-forward-http-proxy.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ apache2.spec ++++++
--- /var/tmp/diff_new_pack.PfF2UT/_old 2017-02-22 13:52:37.960017225 +0100
+++ /var/tmp/diff_new_pack.PfF2UT/_new 2017-02-22 13:52:37.964016656 +0100
@@ -129,6 +129,8 @@
Patch114: httpd-2.4.12-lua-5.2.patch
# PATCH-FEATURE-UPSTREAM kstreitova(a)suse.com -- backport of HttpContentLengthHeadZero and HttpExpectStrict
Patch115: httpd-2.4.x-fate317766-config-control-two-protocol-options.diff
+# https://bz.apache.org/bugzilla/show_bug.cgi?id=60577 comment 5
+Patch116: httpd-cache-forward-http-proxy.patch
BuildRequires: apache-rpm-macros-control
BuildRequires: automake
BuildRequires: db-devel
@@ -149,7 +151,10 @@
Requires: %{_sysconfdir}/mime.types
Requires: %{name}-MPM
Requires: logrotate
-Requires(post): %insserv_prereq %fillup_prereq
+%if 0%{?suse_version} < 1210
+Requires(post): %insserv_prereq
+%endif
+Requires(post): %fillup_prereq
Requires(post): %{name}-utils
Requires(post): fileutils
Requires(post): grep
@@ -317,6 +322,7 @@
%patch111 -p1
%patch114 -p1
%patch115 -p1
+%patch116 -p0
cat $RPM_SOURCE_DIR/SUSE-NOTICE >> NOTICE
# install READMEs
a=$(basename %{SOURCE22})
++++++ httpd-cache-forward-http-proxy.patch ++++++
https://bz.apache.org/bugzilla/show_bug.cgi?id=60577 comment 5
--- modules/cache/cache_storage.c (revision 1783795)
+++ modules/cache/cache_storage.c (working copy)
@@ -427,7 +427,7 @@ int cache_select(cache_request_rec *cache, request
}
static apr_status_t cache_canonicalise_key(request_rec *r, apr_pool_t* p,
- const char *uri, const char *query,
+ const char *path, const char *query,
apr_uri_t *parsed_uri,
const char **key)
{
@@ -435,8 +435,8 @@ static apr_status_t cache_canonicalise_key(request
char *port_str, *hn, *lcs;
const char *hostname, *scheme;
int i;
- const char *path;
- char *querystring;
+ const char *kpath;
+ const char *kquery;
if (*key) {
/*
@@ -564,8 +564,8 @@ static apr_status_t cache_canonicalise_key(request
* Check if we need to ignore session identifiers in the URL and do so
* if needed.
*/
- path = uri;
- querystring = apr_pstrdup(p, query ? query : parsed_uri->query);
+ kpath = path;
+ kquery = conf->ignorequerystring ? NULL : query;
if (conf->ignore_session_id->nelts) {
int i;
char **identifier;
@@ -580,24 +580,23 @@ static apr_status_t cache_canonicalise_key(request
* Check that we have a parameter separator in the last segment
* of the path and that the parameter matches our identifier
*/
- if ((param = ap_strrchr_c(path, ';'))
+ if ((param = ap_strrchr_c(kpath, ';'))
&& !strncmp(param + 1, *identifier, len)
&& (*(param + len + 1) == '=')
&& !ap_strchr_c(param + len + 2, '/')) {
- path = apr_pstrmemdup(p, path, param - path);
+ kpath = apr_pstrmemdup(p, kpath, param - kpath);
continue;
}
/*
- * Check if the identifier is in the querystring and cut it out.
+ * Check if the identifier is in the query string and cut it out.
*/
- if (querystring && *querystring) {
+ if (kquery && *kquery) {
/*
* First check if the identifier is at the beginning of the
- * querystring and followed by a '='
+ * query string and followed by a '='
*/
- if (!strncmp(querystring, *identifier, len)
- && (*(querystring + len) == '=')) {
- param = querystring;
+ if (!strncmp(kquery, *identifier, len) && kquery[len] == '=') {
+ param = kquery;
}
else {
char *complete;
@@ -607,7 +606,7 @@ static apr_status_t cache_canonicalise_key(request
* identifier with a '&' and append a '='
*/
complete = apr_pstrcat(p, "&", *identifier, "=", NULL);
- param = ap_strstr_c(querystring, complete);
+ param = ap_strstr_c(kquery, complete);
/* If we found something we are sitting on the '&' */
if (param) {
param++;
@@ -615,28 +614,28 @@ static apr_status_t cache_canonicalise_key(request
}
if (param) {
const char *amp;
+ char *dup = NULL;
- if (querystring != param) {
- querystring = apr_pstrndup(p, querystring,
- param - querystring);
+ if (kquery != param) {
+ dup = apr_pstrmemdup(p, kquery, param - kquery);
+ kquery = dup;
}
else {
- querystring = "";
+ kquery = "";
}
if ((amp = ap_strchr_c(param + len + 1, '&'))) {
- querystring = apr_pstrcat(p, querystring, amp + 1,
- NULL);
+ kquery = apr_pstrcat(p, kquery, amp + 1, NULL);
}
else {
/*
- * If querystring is not "", then we have the case
+ * If query string is not "", then we have the case
* that the identifier parameter we removed was the
- * last one in the original querystring. Hence we have
+ * last one in the original query string. Hence we have
* a trailing '&' which needs to be removed.
*/
- if (*querystring) {
- querystring[strlen(querystring) - 1] = '\0';
+ if (dup) {
+ dup[strlen(dup) - 1] = '\0';
}
}
}
@@ -644,15 +643,11 @@ static apr_status_t cache_canonicalise_key(request
}
}
- /* Key format is a URI, optionally without the query-string */
- if (conf->ignorequerystring) {
- *key = apr_pstrcat(p, scheme, "://", hostname, port_str, path, "?",
- NULL);
- }
- else {
- *key = apr_pstrcat(p, scheme, "://", hostname, port_str, path, "?",
- querystring, NULL);
- }
+ /* Key format is a URI, optionally without the query-string (NULL
+ * per above if conf->ignorequerystring)
+ */
+ *key = apr_pstrcat(p, scheme, "://", hostname, port_str,
+ kpath, "?", kquery, NULL);
/*
* Store the key in the request_config for the cache as r->parsed_uri
@@ -662,20 +657,26 @@ static apr_status_t cache_canonicalise_key(request
* resource in the cache under a key where it is never found by the quick
* handler during following requests.
*/
- ap_log_rerror(
- APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, r, APLOGNO(00698) "cache: Key for entity %s?%s is %s", uri, parsed_uri->query, *key);
+ ap_log_rerror(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, r, APLOGNO(00698)
+ "cache: Key for entity %s?%s is %s", path, query, *key);
return APR_SUCCESS;
}
apr_status_t cache_generate_key_default(request_rec *r, apr_pool_t* p,
- const char **key)
+ const char **key)
{
- /* We want the actual query-string, which may differ from
- * r->parsed_uri.query (immutable), so use "" (not NULL).
+ /* In early processing (quick-handler, forward proxy), we want the initial
+ * query-string from r->parsed_uri, since any change before CACHE_SAVE
+ * shouldn't modify the key. Otherwise we want the actual query-string.
*/
- const char *args = r->args ? r->args : "";
- return cache_canonicalise_key(r, p, r->uri, args, &r->parsed_uri, key);
+ const char *path = r->uri;
+ const char *query = r->args;
+ if (cache_use_early_url(r)) {
+ path = r->parsed_uri.path;
+ query = r->parsed_uri.query;
+ }
+ return cache_canonicalise_key(r, p, path, query, &r->parsed_uri, key);
}
/*
@@ -717,7 +718,8 @@ int cache_invalidate(cache_request_rec *cache, req
if (location) {
if (apr_uri_parse(r->pool, location, &location_uri)
|| cache_canonicalise_key(r, r->pool,
- location, NULL,
+ location_uri.path,
+ location_uri.query,
&location_uri, &location_key)
|| !(r->parsed_uri.hostname
&& location_uri.hostname
@@ -732,7 +734,8 @@ int cache_invalidate(cache_request_rec *cache, req
if (apr_uri_parse(r->pool, content_location,
&content_location_uri)
|| cache_canonicalise_key(r, r->pool,
- content_location, NULL,
+ content_location_uri.path,
+ content_location_uri.query,
&content_location_uri,
&content_location_key)
|| !(r->parsed_uri.hostname
--- modules/cache/cache_util.c (revision 1783795)
+++ modules/cache/cache_util.c (working copy)
@@ -31,10 +31,8 @@ extern module AP_MODULE_DECLARE_DATA cache_module;
* in "filter". All but the path comparisons are case-insensitive.
*/
static int uri_meets_conditions(const apr_uri_t *filter, const int pathlen,
- request_rec *r)
+ const apr_uri_t *url, const char *path)
{
- const apr_uri_t *url = &r->parsed_uri;
-
/* Scheme, hostname port and local part. The filter URI and the
* URI we test may have the following shapes:
* /<path>
@@ -114,7 +112,7 @@ static int uri_meets_conditions(const apr_uri_t *f
/* For HTTP caching purposes, an empty (NULL) path is equivalent to
* a single "/" path. RFCs 3986/2396
*/
- if (!r->uri) {
+ if (!path) {
if (*filter->path == '/' && pathlen == 1) {
return 1;
}
@@ -126,9 +124,25 @@ static int uri_meets_conditions(const apr_uri_t *f
/* Url has met all of the filter conditions so far, determine
* if the paths match.
*/
- return !strncmp(filter->path, r->uri, pathlen);
+ return !strncmp(filter->path, path, pathlen);
}
+int cache_use_early_url(request_rec *r)
+{
+ cache_server_conf *conf;
+
+ if (r->proxyreq == PROXYREQ_PROXY) {
+ return 1;
+ }
+
+ conf = ap_get_module_config(r->server->module_config, &cache_module);
+ if (conf->quick) {
+ return 1;
+ }
+
+ return 0;
+}
+
static cache_provider_list *get_provider(request_rec *r, struct cache_enable *ent,
cache_provider_list *providers)
{
@@ -172,6 +186,7 @@ cache_provider_list *cache_get_providers(request_r
{
cache_dir_conf *dconf = ap_get_module_config(r->per_dir_config, &cache_module);
cache_provider_list *providers = NULL;
+ const char *path;
int i;
/* per directory cache disable */
@@ -179,11 +194,14 @@ cache_provider_list *cache_get_providers(request_r
return NULL;
}
+ path = cache_use_early_url(r) ? r->parsed_uri.path : r->uri;
+
/* global cache disable */
for (i = 0; i < conf->cachedisable->nelts; i++) {
struct cache_disable *ent =
(struct cache_disable *)conf->cachedisable->elts;
- if (uri_meets_conditions(&ent[i].url, ent[i].pathlen, r)) {
+ if (uri_meets_conditions(&ent[i].url, ent[i].pathlen,
+ &r->parsed_uri, path)) {
/* Stop searching now. */
return NULL;
}
@@ -200,7 +218,8 @@ cache_provider_list *cache_get_providers(request_r
for (i = 0; i < conf->cacheenable->nelts; i++) {
struct cache_enable *ent =
(struct cache_enable *)conf->cacheenable->elts;
- if (uri_meets_conditions(&ent[i].url, ent[i].pathlen, r)) {
+ if (uri_meets_conditions(&ent[i].url, ent[i].pathlen,
+ &r->parsed_uri, path)) {
providers = get_provider(r, &ent[i], providers);
}
}
--- modules/cache/cache_util.h (revision 1783795)
+++ modules/cache/cache_util.h (working copy)
@@ -327,6 +327,12 @@ char *cache_strqtok(char *str, const char *sep, ch
*/
apr_table_t *cache_merge_headers_out(request_rec *r);
+/**
+ * Return whether to use request's path/query from early stage (r->parsed_uri)
+ * or the current/rewritable ones (r->uri/r->args).
+ */
+int cache_use_early_url(request_rec *r);
+
#ifdef __cplusplus
}
#endif
--- modules/cache/mod_cache.c (revision 1783795)
+++ modules/cache/mod_cache.c (working copy)
@@ -823,6 +823,7 @@ static apr_status_t cache_save_filter(ap_filter_t
apr_pool_t *p;
apr_bucket *e;
apr_table_t *headers;
+ const char *query;
conf = (cache_server_conf *) ap_get_module_config(r->server->module_config,
&cache_module);
@@ -927,6 +928,8 @@ static apr_status_t cache_save_filter(ap_filter_t
}
}
+ query = cache_use_early_url(r) ? r->parsed_uri.query : r->args;
+
/* read expiry date; if a bad date, then leave it so the client can
* read it
*/
@@ -1057,7 +1060,7 @@ static apr_status_t cache_save_filter(ap_filter_t
reason
= "s-maxage or max-age zero and no Last-Modified or Etag; not cacheable";
}
- else if (!conf->ignorequerystring && r->parsed_uri.query && exps == NULL
+ else if (!conf->ignorequerystring && query && exps == NULL
&& !control.max_age && !control.s_maxage) {
/* if a query string is present but no explicit expiration time,
* don't cache it (RFC 2616/13.9 & 13.2.1)
1
0
Hello community,
here is the log from the commit of package perl-Mojolicious for openSUSE:Factory checked in at 2017-02-22 13:52:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Mojolicious (Old)
and /work/SRC/openSUSE:Factory/.perl-Mojolicious.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Mojolicious"
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Mojolicious/perl-Mojolicious.changes 2017-02-16 16:46:14.463832425 +0100
+++ /work/SRC/openSUSE:Factory/.perl-Mojolicious.new/perl-Mojolicious.changes 2017-02-22 13:52:11.503782347 +0100
@@ -1,0 +2,10 @@
+Fri Feb 17 06:53:45 UTC 2017 - coolo(a)suse.com
+
+- updated to 7.26
+ see /usr/share/doc/packages/perl-Mojolicious/Changes
+
+ 7.26 2017-02-15
+ - Fixed bug in Mojo::IOLoop::Subprocess where starting multiple subprocesses
+ at once could cause expcetions. (jberger)
+
+-------------------------------------------------------------------
Old:
----
Mojolicious-7.25.tar.gz
New:
----
Mojolicious-7.26.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Mojolicious.spec ++++++
--- /var/tmp/diff_new_pack.GxAnWz/_old 2017-02-22 13:52:11.975715183 +0100
+++ /var/tmp/diff_new_pack.GxAnWz/_new 2017-02-22 13:52:11.975715183 +0100
@@ -17,14 +17,14 @@
Name: perl-Mojolicious
-Version: 7.25
+Version: 7.26
Release: 0
%define cpan_name Mojolicious
Summary: Real-time web framework
License: Artistic-2.0
Group: Development/Libraries/Perl
Url: http://search.cpan.org/dist/Mojolicious/
-Source0: http://www.cpan.org/authors/id/S/SR/SRI/%{cpan_name}-%{version}.tar.gz
+Source0: https://cpan.metacpan.org/authors/id/S/SR/SRI/%{cpan_name}-%{version}.tar.gz
Source1: cpanspec.yml
BuildArch: noarch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
++++++ Mojolicious-7.25.tar.gz -> Mojolicious-7.26.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-7.25/Changes new/Mojolicious-7.26/Changes
--- old/Mojolicious-7.25/Changes 2017-02-09 22:31:27.000000000 +0100
+++ new/Mojolicious-7.26/Changes 2017-02-15 20:01:08.000000000 +0100
@@ -1,4 +1,8 @@
+7.26 2017-02-15
+ - Fixed bug in Mojo::IOLoop::Subprocess where starting multiple subprocesses
+ at once could cause expcetions. (jberger)
+
7.25 2017-02-09
- Fixed cleanup bugs in Mojo::IOLoop::Stream.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-7.25/META.json new/Mojolicious-7.26/META.json
--- old/Mojolicious-7.25/META.json 2017-02-09 23:50:51.000000000 +0100
+++ new/Mojolicious-7.26/META.json 2017-02-16 00:08:28.000000000 +0100
@@ -58,6 +58,6 @@
},
"x_IRC" : "irc://irc.perl.org/#mojo"
},
- "version" : "7.25",
+ "version" : "7.26",
"x_serialization_backend" : "JSON::PP version 2.27400"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-7.25/META.yml new/Mojolicious-7.26/META.yml
--- old/Mojolicious-7.25/META.yml 2017-02-09 23:50:51.000000000 +0100
+++ new/Mojolicious-7.26/META.yml 2017-02-16 00:08:28.000000000 +0100
@@ -31,5 +31,5 @@
homepage: http://mojolicious.org
license: http://www.opensource.org/licenses/artistic-license-2.0
repository: https://github.com/kraih/mojo.git
-version: '7.25'
+version: '7.26'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-7.25/lib/Mojo/IOLoop/Delay.pm new/Mojolicious-7.26/lib/Mojo/IOLoop/Delay.pm
--- old/Mojolicious-7.25/lib/Mojo/IOLoop/Delay.pm 2016-07-19 02:38:18.000000000 +0200
+++ new/Mojolicious-7.26/lib/Mojo/IOLoop/Delay.pm 2017-02-15 23:48:25.000000000 +0100
@@ -124,6 +124,63 @@
L<Mojo::IOLoop>, which can help you avoid deep nested closures that often
result from continuation-passing style.
+ use Mojo::IOLoop;
+
+ # These deep nested closures are often referred to as "Callback Hell"
+ Mojo::IOLoop->timer(3 => sub {
+ my loop = shift;
+
+ say '3 seconds';
+ Mojo::IOLoop->timer(3 => sub {
+ my $loop = shift;
+
+ say '6 seconds';
+ Mojo::IOLoop->timer(3 => sub {
+ my $loop = shift;
+
+ say '9 seconds';
+ Mojo::IOLoop->stop;
+ });
+ });
+ });
+
+ Mojo::IOLoop->start;
+
+The idea behind L<Mojo::IOLoop::Delay> is to turn the nested closures above into
+a flat series of closures. In the example below, the call to L</"begin"> creates
+a callback that we can pass to L<Mojo::IOLoop/"timer"> and that leads to the
+next closure in the series when called.
+
+ use Mojo::IOLoop;
+
+ # Instead of nested closures we now have a simple chain
+ my $delay = Mojo::IOloop->delay(
+ sub {
+ my $delay = shift;
+ Mojo::IOLoop->timer(3 => $delay->begin);
+ },
+ sub {
+ my $delay = shift;
+ say '3 seconds';
+ Mojo::IOLoop->timer(3 => $delay->begin);
+ },
+ sub {
+ my $delay = shift;
+ say '6 seconds';
+ Mojo::IOLoop->timer(3 => $delay->begin);
+ },
+ sub {
+ my $delay = shift;
+ say '9 seconds';
+ }
+ );
+ $delay->wait;
+
+Another positive side effect of this pattern is that we do not need to call
+L<Mojo::IOLoop/"start"> and L<Mojo::IOLoop/"stop"> manually, because we know
+exactly when our series of closures has reached the end. So L</"wait"> can stop
+the event loop automatically if it had to be started at all in the first place.
+
=head1 EVENTS
L<Mojo::IOLoop::Delay> inherits all events from L<Mojo::EventEmitter> and can
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-7.25/lib/Mojo/IOLoop/Subprocess.pm new/Mojolicious-7.26/lib/Mojo/IOLoop/Subprocess.pm
--- old/Mojolicious-7.25/lib/Mojo/IOLoop/Subprocess.pm 2017-01-07 01:33:04.000000000 +0100
+++ new/Mojolicious-7.26/lib/Mojo/IOLoop/Subprocess.pm 2017-02-15 20:06:21.000000000 +0100
@@ -34,12 +34,14 @@
}
# Parent
+ my $me = $$;
my $stream = Mojo::IOLoop::Stream->new($reader)->timeout(0);
$self->ioloop->stream($stream);
my $buffer = '';
$stream->on(read => sub { $buffer .= pop });
$stream->on(
close => sub {
+ return unless $$ == $me;
waitpid $pid, 0;
my $results = eval { $self->deserialize->($buffer) } || [];
$self->$parent(shift(@$results) // $@, @$results);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-7.25/lib/Mojo/IOLoop.pm new/Mojolicious-7.26/lib/Mojo/IOLoop.pm
--- old/Mojolicious-7.25/lib/Mojo/IOLoop.pm 2017-01-15 17:02:28.000000000 +0100
+++ new/Mojolicious-7.26/lib/Mojo/IOLoop.pm 2017-02-11 00:48:05.000000000 +0100
@@ -359,16 +359,16 @@
L<Mojo::Reactor/"error">.
# Watch if handle becomes readable or writable
- $loop->reactor->io($handle => sub {
+ Mojo::IOLoop->singleton->reactor->io($handle => sub {
my ($reactor, $writable) = @_;
say $writable ? 'Handle is writable' : 'Handle is readable';
});
# Change to watching only if handle becomes writable
- $loop->reactor->watch($handle, 0, 1);
+ Mojo::IOLoop->singleton->reactor->watch($handle, 0, 1);
# Remove handle again
- $loop->reactor->remove($handle);
+ Mojo::IOLoop->singleton->reactor->remove($handle);
=head1 METHODS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-7.25/lib/Mojo/UserAgent.pm new/Mojolicious-7.26/lib/Mojo/UserAgent.pm
--- old/Mojolicious-7.25/lib/Mojo/UserAgent.pm 2017-02-09 16:06:55.000000000 +0100
+++ new/Mojolicious-7.26/lib/Mojo/UserAgent.pm 2017-02-11 15:02:47.000000000 +0100
@@ -31,8 +31,7 @@
# Common HTTP methods
for my $name (qw(DELETE GET HEAD OPTIONS PATCH POST PUT)) {
monkey_patch __PACKAGE__, lc $name, sub {
- my $self = shift;
- my $cb = ref $_[-1] eq 'CODE' ? pop : undef;
+ my ($self, $cb) = (shift, ref $_[-1] eq 'CODE' ? pop : undef);
return $self->start($self->build_tx($name, @_), $cb);
};
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-7.25/lib/Mojolicious/Guides/Cookbook.pod new/Mojolicious-7.26/lib/Mojolicious/Guides/Cookbook.pod
--- old/Mojolicious-7.25/lib/Mojolicious/Guides/Cookbook.pod 2017-02-09 22:05:57.000000000 +0100
+++ new/Mojolicious-7.26/lib/Mojolicious/Guides/Cookbook.pod 2017-02-10 23:36:39.000000000 +0100
@@ -9,6 +9,62 @@
This document contains many fun recipes for cooking with L<Mojolicious>.
+=head1 CONCEPTS
+
+Essentials every L<Mojolicious> developer should know.
+
+=head2 Blocking and non-blocking operations
+
+A I<blocking> operation is a subroutine that blocks the execution of the
+calling subroutine until the subroutine is finished.
+
+ sub foo {
+ my $result = blocking_subroutine();
+ ...
+ }
+
+A I<non-blocking> operation on the other hand lets the calling subroutine
+continue execution even though the subroutine is not yet finished. Instead of
+waiting, the calling subroutine passes along a callback to be executed once the
+subroutine is finished, this is called continuation-passing style.
+
+ sub foo {
+ non_blocking_subroutine(sub {
+ my $result = shift;
+ ...
+ });
+ ...
+ }
+
+While L<Mojolicious> has been designed from the ground up for non-blocking I/O
+and event loops, it is not possible to magically make Perl code non-blocking.
+You have to use specialized non-blocking code available through modules like
+L<Mojo::IOLoop> and L<Mojo::UserAgent>, or third-party event loops. You can wrap
+your blocking code in L<subprocesses|Mojo::IOLoop/"subprocess"> though to
+prevent it from interfering with your non-blocking code.
+
+=head2 Event loops
+
+An event loop is basically a loop that continually tests for external events
+and executes the appropriate callbacks to handle them, it is often the main
+loop in a program. Non-blocking tests for readability/writability of file
+descriptors and timers are commonly used events for highly scalable network
+servers, because they allow a single process to handle thousands of client
+connections concurrently.
+
+ while (1) {
+ my @readable = test_fds_for_readability();
+ handle_readable_fds(@readable);
+
+ my @writable = test_fds_for_writability();
+ handle_writable_fds(@writable);
+
+ my @expired = test_timers();
+ handle_timers(@expired);
+ }
+
+In L<Mojolicious> this event loop is L<Mojo::IOLoop>.
+
=head1 DEPLOYMENT
Getting L<Mojolicious> and L<Mojolicious::Lite> applications running on
@@ -890,7 +946,7 @@
</body>
</html>
-=head2 Event loops
+=head2 More event loops
Internally, the L<Mojo::IOLoop> event loop can use multiple reactor backends,
L<EV> for example, will be automatically used if possible. Which in turn allows
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-7.25/lib/Mojolicious/Guides/FAQ.pod new/Mojolicious-7.26/lib/Mojolicious/Guides/FAQ.pod
--- old/Mojolicious-7.25/lib/Mojolicious/Guides/FAQ.pod 2017-01-29 22:33:08.000000000 +0100
+++ new/Mojolicious-7.26/lib/Mojolicious/Guides/FAQ.pod 2017-02-10 23:35:16.000000000 +0100
@@ -94,62 +94,6 @@
when installing or upgrading L<Mojolicious> and when running its tests, we
highly recommend using an environment which does not set these variables.
-=head2 What is the difference between blocking and non-blocking operations?
-
-A I<blocking> operation is a subroutine that blocks the execution of the
-calling subroutine until the subroutine is finished.
-
- sub foo {
- my $result = blocking_subroutine();
- ...
- }
-
-A I<non-blocking> operation on the other hand lets the calling subroutine
-continue execution even though the subroutine is not yet finished. Instead of
-waiting, the calling subroutine passes along a callback to be executed once the
-subroutine is finished, this is called continuation-passing style.
-
- sub foo {
- non_blocking_subroutine(sub {
- my $result = shift;
- ...
- });
- ...
- }
-
-=head2 Will my code magically become non-blocking with Mojolicious?
-
-No, it is not possible to magically make Perl code non-blocking. While
-L<Mojolicious> has been designed from the ground up for non-blocking I/O and
-event loops, taking advantage of this requires blocking code to be wrapped in
-L<subprocesses|Mojo::IOLoop/"subprocess">, and the use of specialized
-non-blocking code available through modules like L<Mojo::IOLoop> and
-L<Mojo::UserAgent>, or third-party event loops. In the documentation we often
-refer to this as real-time web, for more information see also
-L<Mojolicious::Guides::Cookbook/"REAL-TIME WEB">.
-
-=head2 What is an event loop?
-
-An event loop is basically a loop that continually tests for external events
-and executes the appropriate callbacks to handle them, it is often the main
-loop in a program. Non-blocking tests for readability/writability of file
-descriptors and timers are commonly used events for highly scalable network
-servers, because they allow a single process to handle thousands of client
-connections concurrently.
-
- while (1) {
- my @readable = test_fds_for_readability();
- handle_readable_fds(@readable);
-
- my @writable = test_fds_for_writability();
- handle_writable_fds(@writable);
-
- my @expired = test_timers();
- handle_timers(@expired);
- }
-
-In L<Mojolicious> this event loop is L<Mojo::IOLoop>.
-
=head2 Where did my file extension go?
Standard route placeholders will not match the C<.> character, however
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-7.25/lib/Mojolicious/resources/templates/mojo/menubar.html.ep new/Mojolicious-7.26/lib/Mojolicious/resources/templates/mojo/menubar.html.ep
--- old/Mojolicious-7.25/lib/Mojolicious/resources/templates/mojo/menubar.html.ep 2016-07-19 02:38:18.000000000 +0200
+++ new/Mojolicious-7.26/lib/Mojolicious/resources/templates/mojo/menubar.html.ep 2017-02-15 18:30:02.000000000 +0100
@@ -69,7 +69,7 @@
%= link_to GitHub => 'https://github.com/kraih/mojo'
%= link_to CPAN => 'https://metacpan.org/release/Mojolicious/'
%= link_to MailingList => 'https://groups.google.com/group/mojolicious'
- %= link_to Blog => 'http://blog.kraih.com'
+ %= link_to Blog => 'http://blog.mojolicious.org'
%= link_to Twitter => 'https://twitter.com/kraih'
%= form_for 'https://www.google.com/cse' => (target => '_blank') => begin
%= hidden_field cx => '014527573091551588235:pwfplkjpgbi'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-7.25/lib/Mojolicious.pm new/Mojolicious-7.26/lib/Mojolicious.pm
--- old/Mojolicious-7.25/lib/Mojolicious.pm 2017-02-05 22:09:51.000000000 +0100
+++ new/Mojolicious-7.26/lib/Mojolicious.pm 2017-02-09 23:51:32.000000000 +0100
@@ -58,7 +58,7 @@
has validator => sub { Mojolicious::Validator->new };
our $CODENAME = 'Doughnut';
-our $VERSION = '7.25';
+our $VERSION = '7.26';
sub AUTOLOAD {
my $self = shift;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-7.25/t/mojo/subprocess.t new/Mojolicious-7.26/t/mojo/subprocess.t
--- old/Mojolicious-7.25/t/mojo/subprocess.t 2016-08-29 17:43:27.000000000 +0200
+++ new/Mojolicious-7.26/t/mojo/subprocess.t 2017-02-15 20:06:31.000000000 +0100
@@ -107,6 +107,28 @@
ok !$fail, 'no error';
is_deeply $result, [], 'right structure';
+# Stream inherited from previous subprocesses
+($fail, $result) = ();
+my $delay = Mojo::IOLoop->delay;
+my $me = $$;
+for (0 .. 1) {
+ my $end = $delay->begin;
+ my $subprocess = Mojo::IOLoop::Subprocess->new;
+ $subprocess->run(
+ sub { 1 + 1 },
+ sub {
+ my ($subprocess, $err, $two) = @_;
+ $fail ||= $err;
+ push @$result, $two;
+ is $me, $$, 'we are the parent';
+ $end->();
+ }
+ );
+}
+$delay->wait;
+ok !$fail, 'no error';
+is_deeply $result, [2, 2], 'right structure';
+
# Exception
$fail = undef;
Mojo::IOLoop::Subprocess->new->run(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-7.25/t/mojo/tls.t new/Mojolicious-7.26/t/mojo/tls.t
--- old/Mojolicious-7.25/t/mojo/tls.t 2017-01-15 14:01:09.000000000 +0100
+++ new/Mojolicious-7.26/t/mojo/tls.t 2017-02-15 19:52:37.000000000 +0100
@@ -35,16 +35,16 @@
# Built-in certificate (custom event loop and cipher)
my $loop = Mojo::IOLoop->new;
-socketpair($client_sock, $server_sock, AF_UNIX, SOCK_STREAM, PF_UNSPEC)
+socketpair(my $client_sock2, my $server_sock2, AF_UNIX, SOCK_STREAM, PF_UNSPEC)
or die "Couldn't create socket pair: $!";
-$client_sock->blocking(0);
-$server_sock->blocking(0);
+$client_sock2->blocking(0);
+$server_sock2->blocking(0);
$delay = $loop->delay;
-$server = Mojo::IOLoop::TLS->new($server_sock)->reactor($loop->reactor);
+$server = Mojo::IOLoop::TLS->new($server_sock2)->reactor($loop->reactor);
$server->once(upgrade => $delay->begin);
$server->once(error => sub { warn pop });
$server->negotiate(server => 1, tls_ciphers => 'AES256-SHA:ALL');
-$client = Mojo::IOLoop::TLS->new($client_sock)->reactor($loop->reactor);
+$client = Mojo::IOLoop::TLS->new($client_sock2)->reactor($loop->reactor);
$client->once(upgrade => $delay->begin);
$client->once(error => sub { warn pop });
$client->negotiate;
1
0
Hello community,
here is the log from the commit of package firebird for openSUSE:Factory checked in at 2017-02-22 13:51:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/firebird (Old)
and /work/SRC/openSUSE:Factory/.firebird.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "firebird"
Changes:
--------
--- /work/SRC/openSUSE:Factory/firebird/firebird.changes 2017-02-11 01:32:12.445009181 +0100
+++ /work/SRC/openSUSE:Factory/.firebird.new/firebird.changes 2017-02-22 13:51:50.386787732 +0100
@@ -1,0 +2,5 @@
+Sat Feb 18 06:32:57 CET 2017 - kukuk(a)suse.de
+
+- Add missing insserv PreReq
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ firebird.spec ++++++
--- /var/tmp/diff_new_pack.mpgtTA/_old 2017-02-22 13:51:51.498629492 +0100
+++ /var/tmp/diff_new_pack.mpgtTA/_new 2017-02-22 13:51:51.502628922 +0100
@@ -40,6 +40,7 @@
BuildRequires: xz
BuildRequires: zlib-devel
Requires(pre): pwdutils
+Requires(pre): %insserv_prereq
%if 0%{?suse_version} < 1130
BuildRoot: %{_tmppath}/%{name}-%{version}-build
1
0
Hello community,
here is the log from the commit of package mozilla-nss for openSUSE:Factory checked in at 2017-02-22 13:51:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mozilla-nss (Old)
and /work/SRC/openSUSE:Factory/.mozilla-nss.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mozilla-nss"
Changes:
--------
--- /work/SRC/openSUSE:Factory/mozilla-nss/mozilla-nss.changes 2017-02-14 00:39:42.631850469 +0100
+++ /work/SRC/openSUSE:Factory/.mozilla-nss.new/mozilla-nss.changes 2017-02-22 13:51:30.369636683 +0100
@@ -1,0 +2,25 @@
+Mon Feb 20 11:53:55 UTC 2017 - wr(a)rosenauer.org
+
+- update to NSS 3.28.3
+ * This is a patch release to fix binary compatibility issues.
+ NSS version 3.28, 3.28.1 and 3.28.2 contained changes that were
+ in violation with the NSS compatibility promise.
+
+ ECParams, which is part of the public API of the freebl/softokn
+ parts of NSS, had been changed to include an additional attribute.
+ That size increase caused crashes or malfunctioning with applications
+ that use that data structure directly, or indirectly through
+ ECPublicKey, ECPrivateKey, NSSLOWKEYPublicKey, NSSLOWKEYPrivateKey,
+ or potentially other data structures that reference ECParams.
+ The change has been reverted to the original state in bug
+ bmo#1334108.
+
+ SECKEYECPublicKey had been extended with a new attribute, named
+ "encoding". If an application passed type SECKEYECPublicKey to NSS
+ (as part of SECKEYPublicKey), the NSS library read the uninitialized
+ attribute. With this NSS release SECKEYECPublicKey.encoding is
+ deprecated. NSS no longer reads the attribute, and will always
+ set it to ECPoint_Undefined. See bug bmo#1340103.
+- requires NSPR >= 4.13.1
+
+-------------------------------------------------------------------
Old:
----
nss-3.28.2.tar.gz
New:
----
nss-3.28.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mozilla-nss.spec ++++++
--- /var/tmp/diff_new_pack.iQ60Tc/_old 2017-02-22 13:51:31.481478437 +0100
+++ /var/tmp/diff_new_pack.iQ60Tc/_new 2017-02-22 13:51:31.481478437 +0100
@@ -21,11 +21,11 @@
Name: mozilla-nss
BuildRequires: gcc-c++
-BuildRequires: mozilla-nspr-devel >= 4.13
+BuildRequires: mozilla-nspr-devel >= 4.13.1
BuildRequires: pkg-config
BuildRequires: sqlite-devel
BuildRequires: zlib-devel
-Version: 3.28.2
+Version: 3.28.3
Release: 0
# bug437293
%ifarch ppc64
@@ -36,8 +36,8 @@
License: MPL-2.0
Group: System/Libraries
Url: http://www.mozilla.org/projects/security/pki/nss/
-Source: https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_28_2_RT…
-# hg clone https://hg.mozilla.org/projects/nss nss-3.28.2/nss ; cd nss-3.28.2/nss ; hg up NSS_3_28_2_RTM
+Source: https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_28_3_RT…
+# hg clone https://hg.mozilla.org/projects/nss nss-3.28.3/nss ; cd nss-3.28.3/nss ; hg up NSS_3_28_3_RTM
#Source: nss-%{version}.tar.gz
Source1: nss.pc.in
Source3: nss-config.in
++++++ nss-3.28.2.tar.gz -> nss-3.28.3.tar.gz ++++++
/work/SRC/openSUSE:Factory/mozilla-nss/nss-3.28.2.tar.gz /work/SRC/openSUSE:Factory/.mozilla-nss.new/nss-3.28.3.tar.gz differ: char 5, line 1
1
0
Hello community,
here is the log from the commit of package libbluray for openSUSE:Factory checked in at 2017-02-22 13:51:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libbluray (Old)
and /work/SRC/openSUSE:Factory/.libbluray.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libbluray"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libbluray/libbluray.changes 2017-02-16 16:44:28.774840917 +0100
+++ /work/SRC/openSUSE:Factory/.libbluray.new/libbluray.changes 2017-02-22 13:51:17.371486701 +0100
@@ -1,0 +2,6 @@
+Mon Feb 13 09:12:25 UTC 2017 - jengelh(a)inai.de
+
+- Rename %soname to %sover to better reflect its use.
+ Fix RPM groups.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libbluray.spec ++++++
--- /var/tmp/diff_new_pack.H78t4z/_old 2017-02-22 13:51:18.191370007 +0100
+++ /var/tmp/diff_new_pack.H78t4z/_new 2017-02-22 13:51:18.195369437 +0100
@@ -17,7 +17,7 @@
#
-%define soname 1
+%define sover 1
Name: libbluray
Version: 0.9.3
Release: 0
@@ -42,18 +42,18 @@
intended for software that want to support Blu-ray playback (such as VLC and
MPlayer). We, the authors of this library, do not condone nor endorse piracy.
-%package -n libbluray%{soname}
+%package -n libbluray%{sover}
Summary: Library to access Blu-Ray disk
-Group: Productivity/Multimedia/Other
+Group: System/Libraries
-%description -n libbluray%{soname}
+%description -n libbluray%{sover}
This library is written for the purpose of playing Blu-ray movies. It is
intended for software that want to support Blu-ray playback (such as VLC and
MPlayer). We, the authors of this library, do not condone nor endorse piracy.
%package tools
Summary: Library to access Blu-Ray disk - Utilities
-Group: System/Libraries
+Group: Productivity/Multimedia/Other
%description tools
This library is written for the purpose of playing Blu-ray movies. It is
@@ -63,7 +63,7 @@
%package devel
Summary: Library to access Blu-Ray disks - Development files
Group: Development/Languages/C and C++
-Requires: libbluray%{soname} = %{version}
+Requires: libbluray%{sover} = %{version}
%description devel
This library is written for the purpose of playing Blu-ray movies. It is
@@ -99,15 +99,15 @@
%make_install
find %{buildroot} -type f -name "*.la" -delete -print
-%post -n libbluray%{soname} -p /sbin/ldconfig
+%post -n libbluray%{sover} -p /sbin/ldconfig
-%postun -n libbluray%{soname} -p /sbin/ldconfig
+%postun -n libbluray%{sover} -p /sbin/ldconfig
%files tools
%defattr(-,root,root)
%{_bindir}/bd_info
-%files -n libbluray%{soname}
+%files -n libbluray%{sover}
%defattr(-, root, root)
%doc COPYING
%{_libdir}/libbluray.so.*
1
0
Hello community,
here is the log from the commit of package os-prober for openSUSE:Factory checked in at 2017-02-22 13:51:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/os-prober (Old)
and /work/SRC/openSUSE:Factory/.os-prober.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "os-prober"
Changes:
--------
--- /work/SRC/openSUSE:Factory/os-prober/os-prober.changes 2016-11-16 13:46:49.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.os-prober.new/os-prober.changes 2017-02-22 13:51:03.669436948 +0100
@@ -1,0 +2,33 @@
+Fri Feb 10 08:45:28 UTC 2017 - mchang(a)suse.com
+
+- Version bump to 1.74:
+ * Add support for Mageia
+ * Improve logging of mounting and setting partitions to ro/rw
+ * Use a read-only device-mapper entry if possible rather than setting the
+ underlying device to read-only.
+ Note that this introduces a dependency on dmsetup on Linux architectures.
+ * Remove the "blockdev --setro" code path entirely, since the read-only
+ device-mapper arrangement supersedes it and should be safer
+ * Make the yaboot parser more tolerant about the syntax of "append" options
+ * Disable debugging if OS_PROBER_DISABLE_DEBUG is set
+ * Replace basename/dirname with shell string processing
+ * Fix typos in README
+ * Add Devuan detection
+ * Work harder to avoid trying to mount extended partitions
+ * Drop " (loader)" suffixes on Microsoft operating systems
+ * Add support for 4MLinux
+ * Use HTTPS for Vcs-* URLs, and link to cgit rather than gitweb.
+- Rediff
+ * os-prober-1.49-grub2-mount.patch
+ * os-prober-EFI-openSUSEfy.patch
+ * os-prober-btrfs-always-detect-default.patch
+ * os-prober-btrfsfix.patch
+ * os-prober-dont-load-all-fs-module-and-dont-test-mount.patch
+ * os-prober-fix-btrfs-subvol-mounted-tests.patch
+ * os-prober-linux-distro-avoid-expensive-ld-file-test.patch
+ * os-prober-linux-distro-parse-os-release.patch
+- Remove patches; fixed on upstream release
+ * os-prober-call-dmraid-once.patch
+ * os-prober-1.49-skip-LVM2_member.patch
+
+-------------------------------------------------------------------
Old:
----
os-prober-1.49-skip-LVM2_member.patch
os-prober-call-dmraid-once.patch
os-prober_1.70.tar.xz
New:
----
os-prober_1.74.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ os-prober.spec ++++++
--- /var/tmp/diff_new_pack.4Xokpd/_old 2017-02-22 13:51:04.541312851 +0100
+++ /var/tmp/diff_new_pack.4Xokpd/_new 2017-02-22 13:51:04.541312851 +0100
@@ -1,7 +1,7 @@
#
# spec file for package os-prober
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: os-prober
-Version: 1.70
+Version: 1.74
Release: 0
Summary: Probes disks on the system for installed operating systems
License: GPL-2.0+
@@ -32,8 +32,6 @@
Patch1: os-prober-SUSE.patch
# PATCH-FIX-OPENSUSE: Fix parsing of grub.cfg [bnc#796919]
Patch3: os-prober-1.49-fix-grub2.cfg-parsing.patch
-# PATCH-FIX-OPENSUSE: Do not try to mount LVM2 PV [bnc#798604]
-Patch4: os-prober-1.49-skip-LVM2_member.patch
# PATCH-FIX-OPENSUSE: Use correct name for grub2-mount
Patch5: os-prober-1.49-grub2-mount.patch
# PATCH-FIX-OPENSUSE: Probe also unpartitioned Linux MD devices (bnc#811006)
@@ -52,8 +50,6 @@
Patch13: os-prober-fix-btrfs-subvol-mounted-tests.patch
# PATCH-FIX-SLE: fix os-prober creates many unusuable entries on multipath disk (bnc#875327)
Patch14: os-prober-skip-part-on-multipath.patch
-# PATCH-FIX-SLE: fix os-prober: dmraid is called without a device list for every partition (bnc#883453)
-Patch15: os-prober-call-dmraid-once.patch
# PATCH-FIX-SLE: fix os-prober fails to detect other SLES12 installation (bsc#892364)
Patch17: Improve-btrfs-handling-on-os-probing-for-grub2.patch
# PATCH-FIX-SLE: fix os-prober mount error, no such file or directory (bsc#931955)
@@ -77,6 +73,7 @@
Requires: util-linux
Recommends: dmraid
Recommends: lvm2
+Recommends: dmsetup
%if 0%{?suse_version} >= 1315
# For logger utility
Requires: util-linux-systemd
@@ -88,12 +85,11 @@
distributions can be added easily.
%prep
-%setup -q
+%setup -q -n os-prober
cp %{SOURCE1} .
%patch0 -p1
%patch1 -p1
%patch3 -p1
-%patch4 -p1
%patch5 -p1
%patch7 -p1
%patch8 -p1
@@ -103,7 +99,6 @@
%patch12 -p1
%patch13 -p1
%patch14 -p1
-%patch15 -p1
%patch17 -p1
%patch18 -p1
%patch19 -p1
++++++ os-prober-1.49-grub2-mount.patch ++++++
--- /var/tmp/diff_new_pack.4Xokpd/_old 2017-02-22 13:51:04.593305450 +0100
+++ /var/tmp/diff_new_pack.4Xokpd/_new 2017-02-22 13:51:04.597304881 +0100
@@ -1,7 +1,8 @@
-diff -urN os-prober.old/common.sh os-prober/common.sh
---- os-prober.old/common.sh 2014-12-14 19:04:07.711368751 +0100
-+++ os-prober/common.sh 2014-12-14 19:04:29.792443896 +0100
-@@ -259,8 +259,8 @@
+Index: os-prober/common.sh
+===================================================================
+--- os-prober.orig/common.sh
++++ os-prober/common.sh
+@@ -302,8 +302,8 @@ linux_mount_boot () {
debug "found boot partition $1 for linux system on $partition, but cannot map to existing device"
else
debug "found boot partition $bootpart for linux system on $partition"
@@ -10,15 +11,16 @@
+ if type grub2-mount >/dev/null 2>&1 && \
+ grub2-mount "$boottomnt" "$tmpmnt/boot" 2>/dev/null; then
mounted=1
- else
- ro_partition "$boottomnt"
-diff -urN os-prober.old/linux-boot-probes/common/50mounted-tests os-prober/linux-boot-probes/common/50mounted-tests
---- os-prober.old/linux-boot-probes/common/50mounted-tests 2014-12-14 19:04:07.711368751 +0100
-+++ os-prober/linux-boot-probes/common/50mounted-tests 2014-12-14 19:04:29.792443896 +0100
-@@ -34,11 +34,11 @@
- fi
+ elif dm_device="$(do_dmsetup osprober-linux "$boottomnt")" && [ "$dm_device" ]; then
+ if mountinfo=`mount -o ro "$dm_device" "$tmpmnt/boot" -t "$3"`; then
+Index: os-prober/linux-boot-probes/common/50mounted-tests
+===================================================================
+--- os-prober.orig/linux-boot-probes/common/50mounted-tests
++++ os-prober/linux-boot-probes/common/50mounted-tests
+@@ -55,11 +55,11 @@ fi
mounted=
+ dm_devices=
-if type grub-mount >/dev/null 2>&1 && \
- type grub-probe >/dev/null 2>&1 && \
- grub-mount "$partition" "$tmpmnt" 2>/dev/null; then
@@ -29,12 +31,13 @@
- type="$(grub-probe -d "$partition" -t fs)"
+ type="$(grub2-probe -d "$partition" -t fs)"
[ "$type" ] || type=fuseblk
- else
- ro_partition "$partition"
-diff -urN os-prober.old/os-probes/common/50mounted-tests os-prober/os-probes/common/50mounted-tests
---- os-prober.old/os-probes/common/50mounted-tests 2014-12-14 19:04:07.712368755 +0100
-+++ os-prober/os-probes/common/50mounted-tests 2014-12-14 19:04:29.793443899 +0100
-@@ -46,11 +46,11 @@
+ elif dm_device="$(do_dmsetup osprober-linux "$partition")" && \
+ [ "$dm_device" ]; then
+Index: os-prober/os-probes/common/50mounted-tests
+===================================================================
+--- os-prober.orig/os-probes/common/50mounted-tests
++++ os-prober/os-probes/common/50mounted-tests
+@@ -66,11 +66,11 @@ if [ ! -d "$tmpmnt" ]; then
fi
mounted=
@@ -50,9 +53,10 @@
if [ "$type" ]; then
debug "mounted using GRUB $type filesystem driver"
else
-diff -urN os-prober.old/os-probes/init/common/10filesystems os-prober/os-probes/init/common/10filesystems
---- os-prober.old/os-probes/init/common/10filesystems 2014-12-14 19:04:07.713368758 +0100
-+++ os-prober/os-probes/init/common/10filesystems 2014-12-14 19:04:54.182526874 +0100
+Index: os-prober/os-probes/init/common/10filesystems
+===================================================================
+--- os-prober.orig/os-probes/init/common/10filesystems
++++ os-prober/os-probes/init/common/10filesystems
@@ -3,7 +3,7 @@
set +e # ignore errors from modprobe
++++++ os-prober-EFI-openSUSEfy.patch ++++++
--- /var/tmp/diff_new_pack.4Xokpd/_old 2017-02-22 13:51:04.609303173 +0100
+++ /var/tmp/diff_new_pack.4Xokpd/_new 2017-02-22 13:51:04.613302604 +0100
@@ -7,24 +7,24 @@
- retain ELILO vendor prefix in case someone is really using it
- comment in 05efi is obviously wrong
-Index: os-prober-1.61/os-probes/mounted/x86/efi/10elilo
+Index: os-prober/os-probes/mounted/x86/efi/10elilo
===================================================================
---- os-prober-1.61.orig/os-probes/mounted/x86/efi/10elilo
-+++ os-prober-1.61/os-probes/mounted/x86/efi/10elilo
+--- os-prober.orig/os-probes/mounted/x86/efi/10elilo
++++ os-prober/os-probes/mounted/x86/efi/10elilo
@@ -11,7 +11,8 @@ elilo=`find $1 -name "elilo.efi"`
if [ -n "$elilo" ]; then
- bdir=`dirname $elilo`
- bdir=`basename $bdir`
+ bdir="${elilo%/*}"
+ bdir="${elilo##*/}"
- long="ELILO Boot Manager"
+ vendor=$(echo $bdir | sed 's|SuSE|SUSE|')
+ long="${vendor} ELILO Boot Manager"
short="ELILO"
path=${bdir}/elilo.efi
found=true
-Index: os-prober-1.61/os-probes/mounted/x86/05efi
+Index: os-prober/os-probes/mounted/x86/05efi
===================================================================
---- os-prober-1.61.orig/os-probes/mounted/x86/05efi
-+++ os-prober-1.61/os-probes/mounted/x86/05efi
+--- os-prober.orig/os-probes/mounted/x86/05efi
++++ os-prober/os-probes/mounted/x86/05efi
@@ -1,5 +1,5 @@
#!/bin/sh
-# Detects all Microsoft OSes on a collection of partitions.
++++++ os-prober-btrfs-always-detect-default.patch ++++++
--- /var/tmp/diff_new_pack.4Xokpd/_old 2017-02-22 13:51:04.629300327 +0100
+++ /var/tmp/diff_new_pack.4Xokpd/_new 2017-02-22 13:51:04.633299758 +0100
@@ -1,7 +1,7 @@
-Index: os-prober-1.61/linux-boot-prober
+Index: os-prober/linux-boot-prober
===================================================================
---- os-prober-1.61.orig/linux-boot-prober
-+++ os-prober-1.61/linux-boot-prober
+--- os-prober.orig/linux-boot-prober
++++ os-prober/linux-boot-prober
@@ -67,7 +67,12 @@ if [ "$type" = btrfs ]; then
fi
if [ -z "$mpoint" ]; then
@@ -16,15 +16,14 @@
warn "error mounting btrfs subvol=$subvol UUID=$UUID"
umount "$tmpmnt/boot" 2>/dev/null
umount "$tmpmnt" 2>/dev/null
-Index: os-prober-1.61/os-probes/common/50mounted-tests
+Index: os-prober/os-probes/common/50mounted-tests
===================================================================
---- os-prober-1.61.orig/os-probes/common/50mounted-tests
-+++ os-prober-1.61/os-probes/common/50mounted-tests
-@@ -99,6 +99,48 @@ if [ "$mounted" ]; then
- fi
+--- os-prober.orig/os-probes/common/50mounted-tests
++++ os-prober/os-probes/common/50mounted-tests
+@@ -113,6 +113,47 @@ if [ "$mounted" ]; then
fi
+ do_unmount
-+
+probe_subvol ()
+{
+ local subvol=$1
@@ -66,10 +65,10 @@
+ return $ret
+}
+
- # all btrfs subvol processing here. Handle both unmounted and
+ # all btrfs processing here. Handle both unmounted and
# mounted subvolumes.
if [ "$types" = btrfs ]; then
-@@ -121,45 +163,23 @@ if [ "$types" = btrfs ]; then
+@@ -135,45 +176,23 @@ if [ "$types" = btrfs ]; then
rmdir "$tmpmnt" || true
exit 1
fi
@@ -129,4 +128,4 @@
+ found=1
fi
done
- if [ "$found" ]; then
+ rmdir "$tmpmnt" || true
++++++ os-prober-btrfsfix.patch ++++++
--- /var/tmp/diff_new_pack.4Xokpd/_old 2017-02-22 13:51:04.645298049 +0100
+++ /var/tmp/diff_new_pack.4Xokpd/_new 2017-02-22 13:51:04.649297481 +0100
@@ -1,8 +1,8 @@
-Index: os-prober-1.57/common.sh
+Index: os-prober/common.sh
===================================================================
---- os-prober-1.57.orig/common.sh
-+++ os-prober-1.57/common.sh
-@@ -125,6 +125,7 @@ parse_proc_mounts () {
+--- os-prober.orig/common.sh
++++ os-prober/common.sh
+@@ -155,6 +155,7 @@ parse_proc_mounts () {
done
}
@@ -10,7 +10,7 @@
parsefstab () {
while read -r line; do
case "$line" in
-@@ -135,12 +136,22 @@ parsefstab () {
+@@ -165,12 +166,22 @@ parsefstab () {
set -f
set -- $line
set +f
@@ -34,10 +34,10 @@
unescape_mount () {
printf %s "$1" | \
sed 's/\\011/ /g; s/\\012/\n/g; s/\\040/ /g; s/\\134/\\/g'
-Index: os-prober-1.57/linux-boot-prober
+Index: os-prober/linux-boot-prober
===================================================================
---- os-prober-1.57.orig/linux-boot-prober
-+++ os-prober-1.57/linux-boot-prober
+--- os-prober.orig/linux-boot-prober
++++ os-prober/linux-boot-prober
@@ -5,16 +5,143 @@ set -e
newns "$@"
@@ -184,10 +184,10 @@
if ! mapped="$(mapdevfs "$partition")"; then
log "Device '$partition' does not exist; skipping"
continue
-Index: os-prober-1.57/linux-boot-probes/mounted/common/40grub2
+Index: os-prober/linux-boot-probes/mounted/common/40grub2
===================================================================
---- os-prober-1.57.orig/linux-boot-probes/mounted/common/40grub2
-+++ os-prober-1.57/linux-boot-probes/mounted/common/40grub2
+--- os-prober.orig/linux-boot-probes/mounted/common/40grub2
++++ os-prober/linux-boot-probes/mounted/common/40grub2
@@ -2,17 +2,27 @@
. /usr/share/os-prober/common.sh
set -e
@@ -217,11 +217,11 @@
result "$rootpart:$bootpart:$title:$kernel:$initrd:$parameters"
found_item=1
fi
-Index: os-prober-1.57/os-prober
+Index: os-prober/os-prober
===================================================================
---- os-prober-1.57.orig/os-prober
-+++ os-prober-1.57/os-prober
-@@ -67,6 +67,9 @@ partitions () {
+--- os-prober.orig/os-prober
++++ os-prober/os-prober
+@@ -79,6 +79,9 @@ partitions () {
echo "$(LVM_SUPPRESS_FD_WARNINGS=1 log_output lvs --noheadings --separator : -o vg_name,lv_name |
sed "s|-|--|g;s|^[[:space:]]*\(.*\):\(.*\)$|/dev/mapper/\1-\2|")"
fi
@@ -231,7 +231,7 @@
}
parse_proc_swaps () {
-@@ -125,6 +128,8 @@ if [ -f /proc/mdstat ] ; then
+@@ -137,6 +140,8 @@ if [ -f /proc/mdstat ] ; then
grep "^md" /proc/mdstat | parse_proc_mdstat >"$OS_PROBER_TMP/raided-map" || true
fi
@@ -240,7 +240,7 @@
for partition in $(partitions); do
if ! mapped="$(mapdevfs "$partition")"; then
log "Device '$partition' does not exist; skipping"
-@@ -143,7 +148,26 @@ for partition in $(partitions); do
+@@ -155,7 +160,26 @@ for partition in $(partitions); do
continue
fi
@@ -268,15 +268,15 @@
for test in /usr/lib/os-probes/*; do
if [ -f "$test" ] && [ -x "$test" ]; then
debug "running $test on $partition"
-Index: os-prober-1.57/os-probes/common/50mounted-tests
+Index: os-prober/os-probes/common/50mounted-tests
===================================================================
---- os-prober-1.57.orig/os-probes/common/50mounted-tests
-+++ os-prober-1.57/os-probes/common/50mounted-tests
-@@ -5,7 +5,19 @@ partition="$1"
-
- . /usr/share/os-prober/common.sh
+--- os-prober.orig/os-probes/common/50mounted-tests
++++ os-prober/os-probes/common/50mounted-tests
+@@ -19,7 +19,19 @@ do_unmount() {
+ rmdir "$tmpmnt" || true
+ }
--types="$(fs_type "$partition")" || types=NOT-DETECTED
+-types="$(fs_type "$partition")"
+if [ "x$1" = xbtrfs ]; then
+ types=btrfs
+ if [ -z "$2" -o -z "$3" ]; then
@@ -287,13 +287,13 @@
+ BTRFSDEV="$3"
+else
+ partition="$1"
-+ types="$(fs_type "$partition")" || types=NOT-DETECTED
++ types="$(fs_type "$partition")"
+fi
+
if [ "$types" = NOT-DETECTED ]; then
debug "$1 type not recognised; skipping"
exit 0
-@@ -49,6 +61,76 @@ if [ ! -d "$tmpmnt" ]; then
+@@ -66,6 +78,76 @@ if [ ! -d "$tmpmnt" ]; then
fi
mounted=
@@ -370,10 +370,10 @@
if type grub2-mount >/dev/null 2>&1 && \
type grub2-probe >/dev/null 2>&1 && \
grub2-mount "$partition" "$tmpmnt" 2>/dev/null; then
-Index: os-prober-1.57/os-probes/mounted/common/90linux-distro
+Index: os-prober/os-probes/mounted/common/90linux-distro
===================================================================
---- os-prober-1.57.orig/os-probes/mounted/common/90linux-distro
-+++ os-prober-1.57/os-probes/mounted/common/90linux-distro
+--- os-prober.orig/os-probes/mounted/common/90linux-distro
++++ os-prober/os-probes/mounted/common/90linux-distro
@@ -7,6 +7,8 @@ set -e
partition="$1"
dir="$2"
@@ -383,7 +383,7 @@
# This test is inaccurate, but given separate / and /boot partitions and the
# fact that only some architectures have ld-linux.so, I can't see anything
-@@ -131,7 +133,11 @@ if (ls "$dir"/lib*/ld*.so* || ls "$dir"/
+@@ -143,7 +145,11 @@ if (ls "$dir"/lib*/ld*.so* && [ -d "$dir
fi
label="$(count_next_label "$short")"
@@ -396,10 +396,10 @@
exit 0
else
exit 1
-Index: os-prober-1.57/README.btrfs
+Index: os-prober/README.btrfs
===================================================================
--- /dev/null
-+++ os-prober-1.57/README.btrfs
++++ os-prober/README.btrfs
@@ -0,0 +1,15 @@
+BTRFS is a new filesystem which combines the filesystem with logical volume
+management (subvolumes). For further information, see:
++++++ os-prober-dont-load-all-fs-module-and-dont-test-mount.patch ++++++
--- /var/tmp/diff_new_pack.4Xokpd/_old 2017-02-22 13:51:04.657296342 +0100
+++ /var/tmp/diff_new_pack.4Xokpd/_new 2017-02-22 13:51:04.661295773 +0100
@@ -1,7 +1,8 @@
-diff -urN os-prober.old/os-probes/common/50mounted-tests os-prober/os-probes/common/50mounted-tests
---- os-prober.old/os-probes/common/50mounted-tests 2014-12-14 19:04:07.712368755 +0100
-+++ os-prober/os-probes/common/50mounted-tests 2014-12-14 19:08:15.674211934 +0100
-@@ -25,19 +25,13 @@
+Index: os-prober/os-probes/common/50mounted-tests
+===================================================================
+--- os-prober.orig/os-probes/common/50mounted-tests
++++ os-prober/os-probes/common/50mounted-tests
+@@ -57,19 +57,13 @@ elif [ -z "$types" ]; then
debug "$1 is a LUKS partition; skipping"
exit 0
fi
@@ -28,18 +29,19 @@
fi
tmpmnt=/var/lib/os-prober/mount
-@@ -59,7 +53,7 @@
+@@ -161,7 +155,7 @@ if type grub2-mount >/dev/null 2>&1 && \
fi
- else
- ro_partition "$partition"
+ elif dm_device="$(do_dmsetup osprober "$partition")" && \
+ [ "$dm_device" ]; then
- for type in $types $delaytypes; do
+ for type in $types; do
- if mount -o ro -t "$type" "$partition" "$tmpmnt" 2>/dev/null; then
+ if mountinfo=`mount -o ro -t "$type" "$dm_device" "$tmpmnt" 2>&1`; then
debug "mounted as $type filesystem"
mounted=1
-diff -urN os-prober.old/os-probes/init/common/10filesystems os-prober/os-probes/init/common/10filesystems
---- os-prober.old/os-probes/init/common/10filesystems 2014-12-14 19:04:07.713368758 +0100
-+++ os-prober/os-probes/init/common/10filesystems 2014-12-14 19:09:51.939538946 +0100
+Index: os-prober/os-probes/init/common/10filesystems
+===================================================================
+--- os-prober.orig/os-probes/init/common/10filesystems
++++ os-prober/os-probes/init/common/10filesystems
@@ -1,39 +1,19 @@
#!/bin/sh
# Make sure filesystems are available.
++++++ os-prober-fix-btrfs-subvol-mounted-tests.patch ++++++
--- /var/tmp/diff_new_pack.4Xokpd/_old 2017-02-22 13:51:04.669294635 +0100
+++ /var/tmp/diff_new_pack.4Xokpd/_new 2017-02-22 13:51:04.673294065 +0100
@@ -1,15 +1,13 @@
-Index: os-prober-1.61/os-probes/common/50mounted-tests
+Index: os-prober/os-probes/common/50mounted-tests
===================================================================
---- os-prober-1.61.orig/os-probes/common/50mounted-tests
-+++ os-prober-1.61/os-probes/common/50mounted-tests
-@@ -56,10 +56,54 @@ fi
+--- os-prober.orig/os-probes/common/50mounted-tests
++++ os-prober/os-probes/common/50mounted-tests
+@@ -73,10 +73,51 @@ fi
mounted=
--# all btrfs processing here. Handle both unmounted and
--# mounted subvolumes.
- if [ "$types" = btrfs ]; then
- partition="$BTRFSDEV"
++if [ "$types" = btrfs ]; then
++ partition="$BTRFSDEV"
+fi
+
+if type grub2-mount >/dev/null 2>&1 && \
@@ -23,13 +21,15 @@
+ debug "mounted using GRUB, but unknown filesystem?"
+ type=fuseblk
+ fi
-+else
-+ ro_partition "$partition"
++elif dm_device="$(do_dmsetup osprober "$partition")" && \
++ [ "$dm_device" ]; then
+ for type in $types; do
-+ if mount -o ro -t "$type" "$partition" "$tmpmnt" 2>/dev/null; then
++ if mountinfo=`mount -o ro -t "$type" "$dm_device" "$tmpmnt" 2>&1`; then
+ debug "mounted as $type filesystem"
+ mounted=1
+ break
++ else
++ debug "mounting $dm_device ($partition) as $type failed: $mountinfo"
+ fi
+ done
+fi
@@ -40,38 +40,30 @@
+ if [ -f "$test" ] && [ -x "$test" ]; then
+ if "$test" "$partition" "$tmpmnt" "$type"; then
+ debug "os found by subtest $test"
-+ if ! umount "$tmpmnt"; then
-+ warn "failed to umount $tmpmnt"
-+ fi
-+ rmdir "$tmpmnt" || true
++ do_unmount
+ exit 0
+ fi
+ fi
+ done
-+ if ! umount "$tmpmnt"; then
-+ warn "failed to umount $tmpmnt"
-+ fi
+fi
++do_unmount
+
-+# all btrfs subvol processing here. Handle both unmounted and
-+# mounted subvolumes.
-+if [ "$types" = btrfs ]; then
+ # all btrfs processing here. Handle both unmounted and
+ # mounted subvolumes.
+ if [ "$types" = btrfs ]; then
+- partition="$BTRFSDEV"
debug "begin btrfs processing for $UUID"
# note that the btrfs volume must not be mounted ro
if mount -t btrfs -U "$UUID" "$tmpmnt" 2>/dev/null; then
-@@ -117,52 +161,9 @@ if [ "$types" = btrfs ]; then
- fi
- fi
- done
-- rmdir "$tmpmnt" || true
+@@ -137,48 +178,8 @@ if [ "$types" = btrfs ]; then
+ rmdir "$tmpmnt" || true
if [ "$found" ]; then
-+ rmdir "$tmpmnt" || true
exit 0
- else
- exit 1
-- fi
--fi
--
+ fi
+ fi
+
-if type grub2-mount >/dev/null 2>&1 && \
- type grub2-probe >/dev/null 2>&1 && \
- grub2-mount "$partition" "$tmpmnt" 2>/dev/null; then
@@ -83,13 +75,15 @@
- debug "mounted using GRUB, but unknown filesystem?"
- type=fuseblk
- fi
--else
-- ro_partition "$partition"
+-elif dm_device="$(do_dmsetup osprober "$partition")" && \
+- [ "$dm_device" ]; then
- for type in $types; do
-- if mount -o ro -t "$type" "$partition" "$tmpmnt" 2>/dev/null; then
+- if mountinfo=`mount -o ro -t "$type" "$dm_device" "$tmpmnt" 2>&1`; then
- debug "mounted as $type filesystem"
- mounted=1
- break
+- else
+- debug "mounting $dm_device ($partition) as $type failed: $mountinfo"
- fi
- done
-fi
@@ -100,16 +94,13 @@
- if [ -f "$test" ] && [ -x "$test" ]; then
- if "$test" "$partition" "$tmpmnt" "$type"; then
- debug "os found by subtest $test"
-- if ! umount "$tmpmnt"; then
-- warn "failed to umount $tmpmnt"
-- fi
-- rmdir "$tmpmnt" || true
+- do_unmount
- exit 0
- fi
- fi
- done
-- if ! umount "$tmpmnt"; then
-- warn "failed to umount $tmpmnt"
- fi
- fi
-
+-fi
+-do_unmount
+-
+ # No tests found anything.
+ exit 1
++++++ os-prober-linux-distro-avoid-expensive-ld-file-test.patch ++++++
--- /var/tmp/diff_new_pack.4Xokpd/_old 2017-02-22 13:51:04.681292927 +0100
+++ /var/tmp/diff_new_pack.4Xokpd/_new 2017-02-22 13:51:04.685292357 +0100
@@ -1,8 +1,8 @@
-Index: os-prober-1.70/os-probes/mounted/common/90linux-distro
+Index: os-prober/os-probes/mounted/common/90linux-distro
===================================================================
---- os-prober-1.70.orig/os-probes/mounted/common/90linux-distro
-+++ os-prober-1.70/os-probes/mounted/common/90linux-distro
-@@ -10,135 +10,121 @@ type="$3"
+--- os-prober.orig/os-probes/mounted/common/90linux-distro
++++ os-prober/os-probes/mounted/common/90linux-distro
+@@ -10,147 +10,133 @@ type="$3"
uuid="$4"
subvol="$5"
@@ -15,8 +15,11 @@
-# symlinks we need to also check in $dir/usr/lib* for distributions that
-# moved /lib* to /usr and only left symlinks behind.
-# TODO: look for ld-linux.so on arches that have it
--if (ls "$dir"/lib*/ld*.so* || ls "$dir"/usr/lib*/ld*.so*) >/dev/null 2>/dev/null; then
-- if [ -e "$dir/etc/debian_version" ]; then
+-if (ls "$dir"/lib*/ld*.so* && [ -d "$dir/boot" ] || ls "$dir"/usr/lib*/ld*.so*) >/dev/null 2>/dev/null; then
+- if [ -e "$dir/etc/os-release" ]; then
+- short="$(grep ^NAME= "$dir/etc/os-release" | sed 's/^[^=]*=//; s/^['\''"]\(.*\)['\''"]$/\1/; s/\\\(.\)/\1/g; s/[[:space:]].*//')"
+- long="$(grep ^PRETTY_NAME= "$dir/etc/os-release" | sed 's/^[^=]*=//; s/^['\''"]\(.*\)['\''"]$/\1/; s/\\\(.\)/\1/g')"
+- elif [ -e "$dir/etc/debian_version" ]; then
- short="Debian"
- long="$(printf "Debian GNU/Linux (%s)\n" "$(cat "$dir/etc/debian_version")")"
- # RPM derived distributions may also have a redhat-release or
@@ -69,6 +72,9 @@
- elif [ -e "$dir/etc/openna-release" ]; then
- short="OpenNA"
- long="$(cat "$dir/etc/openna-release")"
+- elif [ -e "$dir/etc/mageia-release" ]; then
+- short="Mageia"
+- long="$(cat "$dir/etc/mageia-release")"
- elif [ -e "$dir/etc/conectiva-release" ]; then
- short="Conectiva"
- long="$(cat "$dir/etc/conectiva-release")"
@@ -123,6 +129,12 @@
- elif [ -e "$dir/etc/meego-release" ]; then
- short="MeeGo"
- long="$(head -1 "$dir/etc/meego-release")"
+- elif [ -e "$dir/etc/4MLinux-version" ]; then
+- short="4MLinux"
+- long="4MLinux $(head -1 "$dir/etc/4MLinux-version")"
+- elif [ -e "$dir/etc/devuan_version" ]; then
+- short="Devuan"
+- long="$(printf "Devuan GNU/Linux (%s)\n" "$(cat "$dir/etc/devuan_version")")"
- else
- short="Linux"
- long="unknown Linux distribution"
@@ -135,7 +147,10 @@
- result "$partition:$long:$label:linux"
- fi
- exit 0
-+if [ -e "$dir/etc/debian_version" ]; then
++if [ -e "$dir/etc/os-release" ]; then
++ short="$(grep ^NAME= "$dir/etc/os-release" | sed 's/^[^=]*=//; s/^['\''"]\(.*\)['\''"]$/\1/; s/\\\(.\)/\1/g; s/[[:space:]].*//')"
++ long="$(grep ^PRETTY_NAME= "$dir/etc/os-release" | sed 's/^[^=]*=//; s/^['\''"]\(.*\)['\''"]$/\1/; s/\\\(.\)/\1/g')"
++elif [ -e "$dir/etc/debian_version" ]; then
+ short="Debian"
+ long="$(printf "Debian GNU/Linux (%s)\n" "$(cat "$dir/etc/debian_version")")"
+# RPM derived distributions may also have a redhat-release or
@@ -188,6 +203,9 @@
+elif [ -e "$dir/etc/openna-release" ]; then
+ short="OpenNA"
+ long="$(cat "$dir/etc/openna-release")"
++elif [ -e "$dir/etc/mageia-release" ]; then
++ short="Mageia"
++ long="$(cat "$dir/etc/mageia-release")"
+elif [ -e "$dir/etc/conectiva-release" ]; then
+ short="Conectiva"
+ long="$(cat "$dir/etc/conectiva-release")"
@@ -242,6 +260,12 @@
+elif [ -e "$dir/etc/meego-release" ]; then
+ short="MeeGo"
+ long="$(head -1 "$dir/etc/meego-release")"
++elif [ -e "$dir/etc/4MLinux-version" ]; then
++ short="4MLinux"
++ long="4MLinux $(head -1 "$dir/etc/4MLinux-version")"
++elif [ -e "$dir/etc/devuan_version" ]; then
++ short="Devuan"
++ long="$(printf "Devuan GNU/Linux (%s)\n" "$(cat "$dir/etc/devuan_version")")"
else
exit 1
fi
@@ -253,11 +277,11 @@
+ result "$partition:$long:$label:linux"
+fi
+exit 0
-Index: os-prober-1.70/os-prober
+Index: os-prober/os-prober
===================================================================
---- os-prober-1.70.orig/os-prober
-+++ os-prober-1.70/os-prober
-@@ -187,6 +187,11 @@ for partition in $(partitions); do
+--- os-prober.orig/os-prober
++++ os-prober/os-prober
+@@ -186,6 +186,11 @@ for partition in $(partitions); do
# be handled by 50mounted-tests so we can do a subvol only once.
type=$(blkid -o value -s TYPE $mapped || true)
if [ "$type" = btrfs ]; then
++++++ os-prober-linux-distro-parse-os-release.patch ++++++
--- /var/tmp/diff_new_pack.4Xokpd/_old 2017-02-22 13:51:04.693291219 +0100
+++ /var/tmp/diff_new_pack.4Xokpd/_new 2017-02-22 13:51:04.697290650 +0100
@@ -1,25 +1,24 @@
-Index: os-prober-1.70/os-probes/mounted/common/90linux-distro
+Index: os-prober/os-probes/mounted/common/90linux-distro
===================================================================
---- os-prober-1.70.orig/os-probes/mounted/common/90linux-distro
-+++ os-prober-1.70/os-probes/mounted/common/90linux-distro
-@@ -117,6 +117,20 @@ elif [ -e "$dir/etc/lfs-release" ]; then
- elif [ -e "$dir/etc/meego-release" ]; then
- short="MeeGo"
- long="$(head -1 "$dir/etc/meego-release")"
-+elif [ -L "$dir/etc/os-release" ]; then
+--- os-prober.orig/os-probes/mounted/common/90linux-distro
++++ os-prober/os-probes/mounted/common/90linux-distro
+@@ -10,7 +10,18 @@ type="$3"
+ uuid="$4"
+ subvol="$5"
+
+-if [ -e "$dir/etc/os-release" ]; then
++if [ -L "$dir/etc/os-release" ]; then
+ RELPATH=$(readlink -f "$dir/etc/os-release")
+ if readlink "$dir/etc/os-release" | grep -q '^/'; then
+ RELPATH="$dir$RELPATH"
+ fi
+ if [ -f "$RELPATH" ]; then
-+ short=$(sed -n "/^NAME=/{s@\"\(.*\)\"@\1@;t 1;s@'\(.*\)'@\1@;: 1;s@^[^=]\+=@@;p;b}" "$RELPATH")
-+ long="$short $(sed -n "/^VERSION=/{s@\"\(.*\)\"@\1@;t 1;s@'\(.*\)'@\1@;: 1;s@^[^=]\+=@@;p;b}" "$RELPATH")"
++ short="$(grep ^NAME= "$RELPATH" | sed 's/^[^=]*=//; s/^['\''"]\(.*\)['\''"]$/\1/; s/\\\(.\)/\1/g; s/[[:space:]].*//')"
++ long="$(grep ^PRETTY_NAME= "$RELPATH" | sed 's/^[^=]*=//; s/^['\''"]\(.*\)['\''"]$/\1/; s/\\\(.\)/\1/g')"
+ else
+ exit 1
+ fi
+elif [ -e "$dir/etc/os-release" ]; then
-+ short=$(sed -n "/^NAME=/{s@\"\(.*\)\"@\1@;t 1;s@'\(.*\)'@\1@;: 1;s@^[^=]\+=@@;p;b}" $dir/etc/os-release)
-+ long="$short $(sed -n "/^VERSION=/{s@\"\(.*\)\"@\1@;t 1;s@'\(.*\)'@\1@;: 1;s@^[^=]\+=@@;p;b}" $dir/etc/os-release)"
- else
- exit 1
- fi
+ short="$(grep ^NAME= "$dir/etc/os-release" | sed 's/^[^=]*=//; s/^['\''"]\(.*\)['\''"]$/\1/; s/\\\(.\)/\1/g; s/[[:space:]].*//')"
+ long="$(grep ^PRETTY_NAME= "$dir/etc/os-release" | sed 's/^[^=]*=//; s/^['\''"]\(.*\)['\''"]$/\1/; s/\\\(.\)/\1/g')"
+ elif [ -e "$dir/etc/debian_version" ]; then
++++++ os-prober_1.70.tar.xz -> os-prober_1.74.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-prober-1.70/README new/os-prober/README
--- old/os-prober-1.70/README 2011-01-20 08:59:35.000000000 +0100
+++ new/os-prober/README 2017-01-27 22:49:14.000000000 +0100
@@ -3,7 +3,7 @@
them, and work out how to boot other linux installs.
os-prober
---------
+---------
All one has to do is Depend on os-prober, and then run the os-prober
command. This command takes no arguments: it will scan all disks available
@@ -19,7 +19,7 @@
with their own boot sectors.
Tests are executable programs in the directory /usr/lib/os-probes/. Each
-test is called once per partition, with the partiton to check as its
+test is called once per partition, with the partition to check as its
parameter, and may output a string as described above, or nothing if it does
not recognise an OS on that partition. Tests return an exit code of 0
if they successfully found an OS, and no further tests will be run on that
@@ -41,7 +41,7 @@
linux-boot-prober
-----------------
-the linux-boot-prober command should be run with a single argument
+The linux-boot-prober command should be run with a single argument
consisting of a partition that is known to have a linux root filesystem on
it, as returned by the os-prober command. It will try to work out how to
boot that linux installation, and if it is successful, will output one or
@@ -56,7 +56,7 @@
is made that any partitions referred to in the kernel parameters will still be
in the same place after Debian is installed, or that the /etc/fstab of the
system will be right, or that the system will even boot. The initrd field may
-be empty if there is no initrd. The label is whatever label was used in the
+be empty if there is no initrd. The label is whatever label was used in the
boot loader for this linux installation, and it may be quite long or very
short (or nonexistent), and may be inaccurate, confusing, or non-unique. See
TODO for other limitations.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-prober-1.70/common.sh new/os-prober/common.sh
--- old/os-prober-1.70/common.sh 2015-10-08 05:05:33.000000000 +0200
+++ new/os-prober/common.sh 2017-01-27 22:49:14.000000000 +0100
@@ -3,12 +3,7 @@
}
cleanup_tmpdir=false
-cleanup_ro_partitions=
cleanup () {
- local partition
- for partition in $cleanup_ro_partitions; do
- blockdev --setrw "$partition"
- done
if $cleanup_tmpdir; then
rm -rf "$OS_PROBER_TMP"
fi
@@ -57,7 +52,7 @@
cache_progname() {
case $progname in
'')
- progname="$(basename "$0")"
+ progname="${0##*/}"
;;
esac
}
@@ -76,7 +71,9 @@
}
debug() {
- log "debug: $@"
+ if [ -z "$OS_PROBER_DISABLE_DEBUG" ]; then
+ log "debug: $@"
+ fi
}
result () {
@@ -106,14 +103,24 @@
# We can't always tell the filesystem type up front, but if we have the
# information then we should use it. Note that we can't use block-attr here
# as it's only available in udebs.
+# If not detected after different attempts then "NOT-DETECTED" will be printed
+# because function is not supposed to exit error codes.
fs_type () {
+ local fstype=""
if (export PATH="/lib/udev:$PATH"; type vol_id) >/dev/null 2>&1; then
- PATH="/lib/udev:$PATH" vol_id --type "$1" 2>/dev/null
- elif type blkid >/dev/null 2>&1; then
- blkid -o value -s TYPE "$1" 2>/dev/null
- else
- return 0
+ PATH="/lib/udev:$PATH" \
+ fstype=$(vol_id --type "$1" 2>/dev/null || true)
+ [ -z "$fstype" ] || { echo "$fstype"; return; }
fi
+ if type lsblk >/dev/null 2>&1 ; then
+ fstype=$(lsblk --nodeps --noheading --output FSTYPE -- "$1" || true)
+ [ -z "$fstype" ] || { echo "$fstype"; return; }
+ fi
+ if type blkid >/dev/null 2>&1; then
+ fstype=$(blkid -o value -s TYPE "$1" 2>/dev/null || true)
+ [ -z "$fstype" ] || { echo "$fstype"; return; }
+ fi
+ echo "NOT-DETECTED"
}
is_dos_extended_partition() {
@@ -169,15 +176,6 @@
sed 's/\\011/ /g; s/\\012/\n/g; s/\\040/ /g; s/\\134/\\/g'
}
-ro_partition () {
- if type blockdev >/dev/null 2>&1 && \
- [ "$(blockdev --getro "$1")" = 0 ] && \
- blockdev --setro "$1"; then
- cleanup_ro_partitions="${cleanup_ro_partitions:+$cleanup_ro_partitions }$1"
- trap cleanup EXIT HUP INT QUIT TERM
- fi
-}
-
find_label () {
local output
if type blkid >/dev/null 2>&1; then
@@ -206,15 +204,37 @@
fi
}
-# Sets $mountboot as output variable. (We do this rather than requiring a
-# subshell so that we can run ro_partition without the cleanup trap firing
-# when the subshell exits.)
+do_dmsetup () {
+ local prefix partition dm_device partition_name size_p
+ prefix="$1"
+ partition="$2"
+ dm_device=
+
+ if type dmsetup >/dev/null 2>&1 && \
+ type blockdev >/dev/null 2>&1; then
+ partition_name="osprober-linux-${partition##*/}"
+ dm_device="/dev/mapper/$partition_name"
+ size_p=$(blockdev --getsize $partition )
+ if [ -e "$dm_device" ]; then
+ error "$dm_device already exists"
+ dm_device=
+ else
+ debug "creating device mapper device $dm_device"
+ echo "0 $size_p linear $partition 0" | dmsetup create -r $partition_name
+ fi
+ fi
+ echo "$dm_device"
+}
+
+# Sets $mountboot and $dm_device as output variables. This is very messy,
+# but POSIX shell isn't really up to the task of doing it more cleanly.
linux_mount_boot () {
partition="$1"
tmpmnt="$2"
bootpart=""
mounted=""
+ dm_device=""
if [ -e "$tmpmnt/etc/fstab" ]; then
# Try to mount any /boot partition.
bootmnt=$(parsefstab < "$tmpmnt/etc/fstab" | grep " /boot ") || true
@@ -285,12 +305,12 @@
if type grub-mount >/dev/null 2>&1 && \
grub-mount "$boottomnt" "$tmpmnt/boot" 2>/dev/null; then
mounted=1
- else
- ro_partition "$boottomnt"
- if mount -o ro "$boottomnt" "$tmpmnt/boot" -t "$3"; then
+ elif dm_device="$(do_dmsetup osprober-linux "$boottomnt")" && [ "$dm_device" ]; then
+ if mountinfo=`mount -o ro "$dm_device" "$tmpmnt/boot" -t "$3"`; then
+ debug "mounted as $3 filesystem"
mounted=1
else
- error "failed to mount $boottomnt on $tmpmnt/boot"
+ error "failed to mount $dm_device on $tmpmnt/boot: $mountinfo"
fi
fi
fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-prober-1.70/debian/changelog new/os-prober/debian/changelog
--- old/os-prober-1.70/debian/changelog 2015-10-27 06:45:58.000000000 +0100
+++ new/os-prober/debian/changelog 2017-02-01 00:01:21.000000000 +0100
@@ -1,3 +1,67 @@
+os-prober (1.74) unstable; urgency=high
+
+ [ Ivo De Decker ]
+ * os-probes/common/50mounted-tests: Skip partition when FS type is
+ LVM2_member, since one isn't supposed to touch physical volumes
+ directly. This avoids hanging during “dmcreate setup” with
+ unencrypted LVM setups (Closes: #853277).
+
+ -- Cyril Brulebois <kibi(a)debian.org> Wed, 01 Feb 2017 00:01:17 +0100
+
+os-prober (1.73) unstable; urgency=medium
+
+ [ Cyril Brulebois ]
+ * Add support for Mageia, thanks to Neal Gompa (Closes: #851983).
+
+ -- Christian Perrier <bubulle(a)debian.org> Sat, 21 Jan 2017 08:44:01 +0100
+
+os-prober (1.72) unstable; urgency=medium
+
+ * Improve logging of mounting and setting partitions to ro/rw (thanks, Ivo
+ De Decker).
+ * Use a read-only device-mapper entry if possible rather than setting the
+ underlying device to read-only (thanks, Ivo De Decker; closes: #701814).
+ Note that this introduces a dependency on dmsetup on Linux
+ architectures.
+ * Remove the "blockdev --setro" code path entirely, since the read-only
+ device-mapper arrangement supersedes it and should be safer (closes:
+ #648208).
+ * Make os-prober-udeb depend on grub-mount-udeb on all Linux and kFreeBSD
+ architectures, now that it's available on them all (thanks, James
+ Cowgill; closes: #776275).
+ * Make os-prober depend on grub-common on Linux and kFreeBSD, in order
+ that grub-mount is consistently available.
+ * Fix detection of /usr/ partition as a GNU/Linux root partition when
+ /lib* directories are moved to /usr/ completely (thanks, Hedayat
+ Vatankhah; closes: #698733).
+ * Make the yaboot parser more tolerant about the syntax of "append"
+ options (thanks, Hedayat Vatankhah; closes: #674561).
+ * Disable debugging if OS_PROBER_DISABLE_DEBUG is set (thanks, Hedayat
+ Vatankhah; closes: #698598).
+ * Replace basename/dirname with shell string processing (thanks, Hedayat
+ Vatankhah; part of #694668).
+ * Call dmraid only once (thanks, Jeff Mahoney).
+ * Fix typos in README (thanks, Nyav; closes: #803155).
+ * Add os-release support (based loosely on a patch by Török Edwin; closes:
+ #794409).
+ * Add Devuan detection (thanks, David Hare; closes: #801631).
+ * Work harder to avoid trying to mount extended partitions (thanks,
+ Philippe Coval; closes: #784709).
+ * Drop " (loader)" suffixes on Microsoft operating systems (thanks, Chris
+ Lamb; closes: #787418).
+
+ -- Colin Watson <cjwatson(a)debian.org> Fri, 20 Jan 2017 12:44:34 +0000
+
+os-prober (1.71) unstable; urgency=medium
+
+ [ Cyril Brulebois ]
+ * Add support for 4MLinux, thanks to Zbigniew Konojacki.
+
+ [ Colin Watson ]
+ * Use HTTPS for Vcs-* URLs, and link to cgit rather than gitweb.
+
+ -- Christian Perrier <bubulle(a)debian.org> Sat, 30 Jan 2016 07:38:56 +0100
+
os-prober (1.70) unstable; urgency=medium
[ Justus Winter ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-prober-1.70/debian/control new/os-prober/debian/control
--- old/os-prober-1.70/debian/control 2014-11-08 05:01:43.000000000 +0100
+++ new/os-prober/debian/control 2017-01-27 22:49:14.000000000 +0100
@@ -5,13 +5,13 @@
Uploaders: Colin Watson <cjwatson(a)debian.org>, Christian Perrier <bubulle(a)debian.org>, Steve McIntyre <93sam(a)debian.org>
Build-Depends: debhelper (>= 9), dpkg-dev (>= 1.15.7)
Standards-Version: 3.9.4
-Vcs-Browser: http://anonscm.debian.org/gitweb/?p=d-i/os-prober.git
-Vcs-Git: git://anonscm.debian.org/d-i/os-prober.git
+Vcs-Browser: https://anonscm.debian.org/cgit/d-i/os-prober.git
+Vcs-Git: https://anonscm.debian.org/git/d-i/os-prober.git
Package: os-prober-udeb
Package-Type: udeb
Architecture: any
-Depends: ${misc:Depends}, ${shlibs:Depends}, di-utils-mapdevfs, anna (>= 1.16), grub-mount-udeb [i386 amd64 powerpc ppc64 ppc64el sparc mipsel kfreebsd-i386 kfreebsd-amd64]
+Depends: ${misc:Depends}, ${shlibs:Depends}, di-utils-mapdevfs, anna (>= 1.16), grub-mount-udeb [linux-any kfreebsd-any], dmsetup-udeb [linux-any]
Provides: os-prober
Description: utility to detect other OSes on a set of drives
This package is to be used by boot loader installers to detect other OSes
@@ -22,7 +22,7 @@
Architecture: any
Section: utils
Priority: extra
-Depends: ${shlibs:Depends}, ${misc:Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}, grub-common [linux-any kfreebsd-any], dmsetup [linux-any]
Description: utility to detect other OSes on a set of drives
This package detects other OSes available on a system and outputs the
results in a generic machine-readable format.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-prober-1.70/linux-boot-probes/common/50mounted-tests new/os-prober/linux-boot-probes/common/50mounted-tests
--- old/os-prober-1.70/linux-boot-probes/common/50mounted-tests 2015-10-08 05:05:33.000000000 +0200
+++ new/os-prober/linux-boot-probes/common/50mounted-tests 2017-01-27 22:49:14.000000000 +0100
@@ -3,9 +3,25 @@
. /usr/share/os-prober/common.sh
set -e
+do_unmount() {
+ if [ "$mounted" ]; then
+ umount "$tmpmnt/boot" 2>/dev/null || true
+ if ! umount "$tmpmnt"; then
+ warn "failed to umount $tmpmnt"
+ fi
+ fi
+ for dm_device in $dm_devices; do
+ if [ -e "$dm_device" ]; then
+ debug "remove device mapper device $dm_device"
+ dmsetup remove $dm_device
+ fi
+ done
+ rmdir "$tmpmnt" || true
+}
+
partition="$1"
-types="$(fs_type "$partition")" || types=NOT-DETECTED
+types="$(fs_type "$partition")"
if [ "$types" = NOT-DETECTED ]; then
debug "$1 type not recognised; skipping"
exit 0
@@ -38,18 +54,23 @@
fi
mounted=
+dm_devices=
if type grub-mount >/dev/null 2>&1 && \
type grub-probe >/dev/null 2>&1 && \
grub-mount "$partition" "$tmpmnt" 2>/dev/null; then
mounted=1
type="$(grub-probe -d "$partition" -t fs)"
[ "$type" ] || type=fuseblk
-else
- ro_partition "$partition"
+elif dm_device="$(do_dmsetup osprober-linux "$partition")" && \
+ [ "$dm_device" ]; then
+ dm_devices="$dm_device"
for type in $types; do
- if mount -o ro -t "$type" "$partition" "$tmpmnt" 2>/dev/null; then
+ if mountinfo=`mount -o ro -t "$type" "$dm_device" "$tmpmnt" 2>&1`; then
+ debug "mounted as $type filesystem"
mounted=1
break
+ else
+ debug "mounting $dm_device ($partition) as $type failed: $mountinfo"
fi
done
fi
@@ -58,29 +79,22 @@
linux_mount_boot "$partition" "$tmpmnt"
bootpart="${mountboot%% *}"
mounted="${mountboot#* }"
+ if [ "$dm_device" ]; then
+ dm_devices="$dm_device $dm_devices"
+ fi
for test in /usr/lib/linux-boot-probes/mounted/*; do
if [ -f "$test" ] && [ -x "$test" ]; then
debug "running $test $partition $bootpart $tmpmnt $type"
if $test "$partition" "$bootpart" "$tmpmnt" "$type"; then
debug "$test succeeded"
- umount "$tmpmnt/boot" 2>/dev/null || true
- if ! umount "$tmpmnt"; then
- warn "failed to umount $tmpmnt"
- fi
- rmdir "$tmpmnt" || true
+ do_unmount
exit 0
fi
fi
done
-
- umount "$tmpmnt/boot" 2>/dev/null || true
- if ! umount "$tmpmnt"; then
- warn "failed to umount $tmpmnt"
- fi
fi
-
-rmdir "$tmpmnt" || true
+do_unmount
# No tests found anything.
exit 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-prober-1.70/linux-boot-probes/mounted/powerpc/40yaboot new/os-prober/linux-boot-probes/mounted/powerpc/40yaboot
--- old/os-prober-1.70/linux-boot-probes/mounted/powerpc/40yaboot 2011-05-02 03:00:46.000000000 +0200
+++ new/os-prober/linux-boot-probes/mounted/powerpc/40yaboot 2017-01-27 22:49:14.000000000 +0100
@@ -27,7 +27,7 @@
fi
if [ -z "$title" ]; then
- title="$(basename "$kernel")"
+ title="${kernel##*/}"
fi
if [ "$read_only" ]; then
parameters="ro $parameters"
@@ -74,8 +74,8 @@
kernel="$(dequote "$2")"
;;
append)
- shift 1
- parameters="$(dequote "${line#append=}")"
+ cleanappend=`printf %s "$line" | sed 's/append\([[:space:]]\)*=\([[:space:]]\)*//'`
+ parameters="$(dequote "$cleanappend")"
;;
initrd)
initrd="$(dequote "$2")"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-prober-1.70/os-prober new/os-prober/os-prober
--- old/os-prober-1.70/os-prober 2015-09-29 05:02:53.000000000 +0200
+++ new/os-prober/os-prober 2017-01-27 22:49:14.000000000 +0100
@@ -14,11 +14,16 @@
fi
}
+: >"$OS_PROBER_TMP/dmraid-map"
+DMRAID=$(type dmraid >/dev/null 2>&1 || true)
+if [ "$DMRAID" ]; then
+ dmraid -r -c >"$OS_PROBER_TMP/dmraid-map"
+fi
+
on_sataraid () {
- type dmraid >/dev/null 2>&1 || return 1
local parent="${1%/*}"
local device="/dev/${parent##*/}"
- if dmraid -r -c | grep -q "$device"; then
+ if grep -q "$device" "$OS_PROBER_TMP/dmraid-map"; then
return 0
fi
return 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-prober-1.70/os-probes/common/50mounted-tests new/os-prober/os-probes/common/50mounted-tests
--- old/os-prober-1.70/os-probes/common/50mounted-tests 2012-11-04 03:01:55.000000000 +0100
+++ new/os-prober/os-probes/common/50mounted-tests 2017-01-31 23:03:40.000000000 +0100
@@ -5,7 +5,21 @@
. /usr/share/os-prober/common.sh
-types="$(fs_type "$partition")" || types=NOT-DETECTED
+do_unmount() {
+ if [ "$mounted" ]; then
+ if ! umount "$tmpmnt"; then
+ warn "failed to umount $tmpmnt"
+ fi
+ fi
+ if [ -e "$dm_device" ]
+ then
+ debug "remove device mapper device $dm_device"
+ dmsetup remove $dm_device
+ fi
+ rmdir "$tmpmnt" || true
+}
+
+types="$(fs_type "$partition")"
if [ "$types" = NOT-DETECTED ]; then
debug "$1 type not recognised; skipping"
exit 0
@@ -15,6 +29,9 @@
elif [ "$types" = crypto_LUKS ]; then
debug "$1 is a LUKS partition; skipping"
exit 0
+elif [ "$types" = LVM2_member ]; then
+ debug "$1 is an LVM member; skipping"
+ exit 0
elif [ "$types" = ntfs ]; then
if type ntfs-3g >/dev/null 2>&1; then
types='ntfs-3g ntfs'
@@ -57,13 +74,15 @@
debug "mounted using GRUB, but unknown filesystem?"
type=fuseblk
fi
-else
- ro_partition "$partition"
+elif dm_device="$(do_dmsetup osprober "$partition")" && \
+ [ "$dm_device" ]; then
for type in $types $delaytypes; do
- if mount -o ro -t "$type" "$partition" "$tmpmnt" 2>/dev/null; then
+ if mountinfo=`mount -o ro -t "$type" "$dm_device" "$tmpmnt" 2>&1`; then
debug "mounted as $type filesystem"
mounted=1
break
+ else
+ debug "mounting $dm_device ($partition) as $type failed: $mountinfo"
fi
done
fi
@@ -74,20 +93,13 @@
if [ -f "$test" ] && [ -x "$test" ]; then
if "$test" "$partition" "$tmpmnt" "$type"; then
debug "os found by subtest $test"
- if ! umount "$tmpmnt"; then
- warn "failed to umount $tmpmnt"
- fi
- rmdir "$tmpmnt" || true
+ do_unmount
exit 0
fi
fi
done
- if ! umount "$tmpmnt"; then
- warn "failed to umount $tmpmnt"
- fi
fi
-
-rmdir "$tmpmnt" || true
+do_unmount
# No tests found anything.
exit 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-prober-1.70/os-probes/mounted/common/90linux-distro new/os-prober/os-probes/mounted/common/90linux-distro
--- old/os-prober-1.70/os-probes/mounted/common/90linux-distro 2012-11-27 03:02:01.000000000 +0100
+++ new/os-prober/os-probes/mounted/common/90linux-distro 2017-01-27 22:49:14.000000000 +0100
@@ -17,8 +17,11 @@
# symlinks we need to also check in $dir/usr/lib* for distributions that
# moved /lib* to /usr and only left symlinks behind.
# TODO: look for ld-linux.so on arches that have it
-if (ls "$dir"/lib*/ld*.so* || ls "$dir"/usr/lib*/ld*.so*) >/dev/null 2>/dev/null; then
- if [ -e "$dir/etc/debian_version" ]; then
+if (ls "$dir"/lib*/ld*.so* && [ -d "$dir/boot" ] || ls "$dir"/usr/lib*/ld*.so*) >/dev/null 2>/dev/null; then
+ if [ -e "$dir/etc/os-release" ]; then
+ short="$(grep ^NAME= "$dir/etc/os-release" | sed 's/^[^=]*=//; s/^['\''"]\(.*\)['\''"]$/\1/; s/\\\(.\)/\1/g; s/[[:space:]].*//')"
+ long="$(grep ^PRETTY_NAME= "$dir/etc/os-release" | sed 's/^[^=]*=//; s/^['\''"]\(.*\)['\''"]$/\1/; s/\\\(.\)/\1/g')"
+ elif [ -e "$dir/etc/debian_version" ]; then
short="Debian"
long="$(printf "Debian GNU/Linux (%s)\n" "$(cat "$dir/etc/debian_version")")"
# RPM derived distributions may also have a redhat-release or
@@ -71,6 +74,9 @@
elif [ -e "$dir/etc/openna-release" ]; then
short="OpenNA"
long="$(cat "$dir/etc/openna-release")"
+ elif [ -e "$dir/etc/mageia-release" ]; then
+ short="Mageia"
+ long="$(cat "$dir/etc/mageia-release")"
elif [ -e "$dir/etc/conectiva-release" ]; then
short="Conectiva"
long="$(cat "$dir/etc/conectiva-release")"
@@ -125,6 +131,12 @@
elif [ -e "$dir/etc/meego-release" ]; then
short="MeeGo"
long="$(head -1 "$dir/etc/meego-release")"
+ elif [ -e "$dir/etc/4MLinux-version" ]; then
+ short="4MLinux"
+ long="4MLinux $(head -1 "$dir/etc/4MLinux-version")"
+ elif [ -e "$dir/etc/devuan_version" ]; then
+ short="Devuan"
+ long="$(printf "Devuan GNU/Linux (%s)\n" "$(cat "$dir/etc/devuan_version")")"
else
short="Linux"
long="unknown Linux distribution"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-prober-1.70/os-probes/mounted/powerpc/20macosx new/os-prober/os-probes/mounted/powerpc/20macosx
--- old/os-prober-1.70/os-probes/mounted/powerpc/20macosx 2012-03-16 03:01:54.000000000 +0100
+++ new/os-prober/os-probes/mounted/powerpc/20macosx 2017-01-27 22:49:14.000000000 +0100
@@ -7,7 +7,9 @@
type="$3"
debug() {
- logger -t macosx-prober "debug: $@"
+ if [ -z "$OS_PROBER_DISABLE_DEBUG" ]; then
+ logger -t macosx-prober "debug: $@"
+ fi
}
# Weed out stuff that doesn't apply to us
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-prober-1.70/os-probes/mounted/x86/20microsoft new/os-prober/os-probes/mounted/x86/20microsoft
--- old/os-prober-1.70/os-probes/mounted/x86/20microsoft 2015-10-09 05:02:57.000000000 +0200
+++ new/os-prober/os-probes/mounted/x86/20microsoft 2017-01-27 22:49:14.000000000 +0100
@@ -32,23 +32,23 @@
bcd=$(item_in_dir bcd "$2/$boot")
if [ -n "$bcd" ]; then
if grep -aqs "W.i.n.d.o.w.s. .1.0" "$2/$boot/$bcd"; then
- long="Windows 10 (loader)"
+ long="Windows 10"
elif grep -aqs "W.i.n.d.o.w.s. .8" "$2/$boot/$bcd"; then
- long="Windows 8 (loader)"
+ long="Windows 8"
elif grep -aqs "W.i.n.d.o.w.s. .7" "$2/$boot/$bcd"; then
- long="Windows 7 (loader)"
+ long="Windows 7"
elif grep -aqs "W.i.n.d.o.w.s. .V.i.s.t.a" "$2/$boot/$bcd"; then
- long="Windows Vista (loader)"
+ long="Windows Vista"
elif grep -aqs "W.i.n.d.o.w.s. .S.e.r.v.e.r. .2.0.0.8. .R.2." "$2/$boot/$bcd"; then
- long="Windows Server 2008 R2 (loader)"
+ long="Windows Server 2008 R2"
elif grep -aqs "W.i.n.d.o.w.s. .S.e.r.v.e.r. .2.0.0.8." "$2/$boot/$bcd"; then
- long="Windows Server 2008 (loader)"
+ long="Windows Server 2008"
elif grep -aqs "W.i.n.d.o.w.s. .R.e.c.o.v.e.r.y. .E.n.v.i.r.o.n.m.e.n.t" "$2/$boot/$bcd"; then
- long="Windows Recovery Environment (loader)"
+ long="Windows Recovery Environment"
elif grep -aqs "W.i.n.d.o.w.s. .S.e.t.u.p" "$2/$boot/$bcd"; then
- long="Windows Recovery Environment (loader)"
+ long="Windows Recovery Environment"
else
- long="Windows Vista (loader)"
+ long="Windows Vista"
fi
short=Windows
@@ -84,7 +84,7 @@
long="Windows NT/2000/XP"
fi
else
- long="Windows NT/2000/XP (loader)"
+ long="Windows NT/2000/XP"
fi
found=true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/os-prober-1.70/os-probes/mounted/x86/efi/10elilo new/os-prober/os-probes/mounted/x86/efi/10elilo
--- old/os-prober-1.70/os-probes/mounted/x86/efi/10elilo 2013-05-15 17:36:10.000000000 +0200
+++ new/os-prober/os-probes/mounted/x86/efi/10elilo 2017-01-27 22:49:14.000000000 +0100
@@ -9,8 +9,8 @@
elilo=`find $1 -name "elilo.efi"`
if [ -n "$elilo" ]; then
- bdir=`dirname $elilo`
- bdir=`basename $bdir`
+ bdir="${elilo%/*}"
+ bdir="${elilo##*/}"
long="ELILO Boot Manager"
short="ELILO"
path=${bdir}/elilo.efi
1
0